#!/usr/bin/perl
+# The locale functionality is not usable prior to Perl 5.004
+require 5.004;
+
+# Enable to use UTF-8 in this source file
+use utf8;
+
use File::Basename;
use Cwd;
use Getopt::Long;
+# Import locale-handling tool set from POSIX module.
+# This example uses: setlocale -- the function call
+# LC_CTYPE -- explained below
+use POSIX qw(locale_h);
+
+setlocale(LC_CTYPE, "fr_FR.utf-8");
+
+use locale;
+
+# Configure STDOUT to output in UTF-8
+binmode(STDOUT, ":utf8");
+
GetOptions( "output=s" => \$output,
"lyrics" => \$lyrics,
"verbose" => \$verbose,
do "/usr/local/lib/guitartex/language/$language.pl" or die "cannot load language
file $language.pl\n";
-# Leerzeichen im Dateinamen in Unterstriche ändern
+# Leerzeichen im Dateinamen in Unterstriche ändern
$outfilename =~ s/\s/\_/g;
# open output file
# Eingabedatei zeilenweise bearbeiten
while ( <CHORDPRO> ) {
- # Zeichen für Zeilenende abschneiden
+ # Zeichen für Zeilenende abschneiden
chomp;
# wenn am Anfang der Zeile { steht, handelt es sich um eine Direktive
if ( /^{/ ) {
sub crdpro { # Bearbeitung der Zeile aus der Eingabedatei
if ( $lyrics ) {
- s/\[.*?\]//g; # Akkorde entfernen / On enlève les accords
+ s/\[.*?\]//g; # Akkorde entfernen / On enlève les accords
print TEX "$_\\\\\n" unless ( /^\s*$/ );
} else {
$_ = uc($_); # Toutes les lettres en majuscule.
}
- s/\s/$space/g; # Remplace une séquence de plusieurs espaces par un seul
+ s/\s/$space/g; # Remplace une séquence de plusieurs espaces par un seul
s/(\^)(.*?)(\])/\\\(^\{\2\}\\\)\]/g; # Ziffern hochstellen / Place les chiffres en haut?
s/\[/\}\\gtxchord{/g; # linke Klammer ersetzen / Remplace crochet gauche
s/\]/}{/g; # rechte Klammer ersetzen / Remplace crochet droit
# s/(\})(.*?)(\\)/}{\2}\\/g; # Text zwischen Akkorden in geschweifte Klammern setzen
- s/$/}/; # rechte Klammer am Ende der Zeile ergänzen
+ s/$/}/; # rechte Klammer am Ende der Zeile ergänzen
s/^\}//; # rechte Klammer am Anfang der Zeile entfernen
if ( $_ !~ /^\\/ ) {
s/^/\\gtxchord\{\}\{/
if ( $uppercase ) {
s/(gtxchord\{[A-G][B#]?)MAJ7/\1$majeur_sept/g; # Remplace 'gtxchord{AM' par 'gtxchord{Am'
- # On recherche le nom de l'accord, suivi d'un bémol ou dièse optionel, suivi de 'sus' + 1 chiffre.
+ # On recherche le nom de l'accord, suivi d'un bémol ou dièse optionel, suivi de 'sus' + 1 chiffre.
s/(gtxchord\{[A-G][B#]?[0-9]?)SUS([0-9]+)/\1\$^{sus\2}\$/g;
- # Accord demi-diminué
- # On recherche le nom de l'accord, suivi d'un bémol ou dièse optionel, suivi de 'm7b5'.
+ # Accord demi-diminué
+ # On recherche le nom de l'accord, suivi d'un bémol ou dièse optionel, suivi de 'm7b5'.
s/(gtxchord\{[A-G][B#]?)M7B5/\1$half_diminished/g;
- # Accords diminués
- # On recherche le nom de l'accord, suivi d'un bémol ou dièse optionel, suivi de 'mb5'.
+ # Accords diminués
+ # On recherche le nom de l'accord, suivi d'un bémol ou dièse optionel, suivi de 'mb5'.
s/(gtxchord\{[A-G][B#]?)MB5/\1$diminished/g;
s/(gtxchord\{[A-G][B#]?)DIM7/\1$diminished7/g;
s/(gtxchord\{[A-G][B#]?)DIM/\1$diminished/g;
%%\\doublespacing
\\setstretch{1.8}
- %------PostScript-Header für die Chord-Songs------
+ %------PostScript-Header für die Chord-Songs------
%\\special{header=$libpath/chord-common.ps}
\\sloppy
\\newcommand{\\gtxchord}[2]{\\sbox{\\gtxchordbox}{#1}\\sbox{\\textbox}{#2}%
\\ifthenelse{\\lengthtest{\\wd\\textbox>\\wd\\gtxchordbox}}%
{%
- % Boîte pour les accords (plus gros)
+ % Boîte pour les accords (plus gros)
\\raisebox{2.5ex}[2ex][2.5ex]{\\makebox[0pt][l]{\\small\\bf#1}}#2%
- }{%
- % Boîte pour les accords (plus gros)
- \\raisebox{2.5ex}[2ex][2.5ex]{\\makebox[0pt][l]{\\small\\bf#1}}\\makebox[\\wd\\gtxchordbox+0.5em][l]{#2}%
- }%
- }%
-
- \\newcommand{\\guitartab}{%
- \\makebox[0cm][l]{\\raisebox{12.5ex}{\\footnotesize{e}}}%
- \\makebox[0cm][l]{\\raisebox{10.5ex}{\\footnotesize{B}}}%
- \\makebox[0cm][l]{\\raisebox{8.5ex}{\\footnotesize{G}}}%
- \\makebox[0cm][l]{\\raisebox{6.5ex}{\\footnotesize{D}}}%
- \\makebox[0cm][l]{\\raisebox{4.5ex}{\\footnotesize{A}}}%
- \\makebox[0cm][l]{\\raisebox{2.5ex}{\\footnotesize{E}}}%
- ~~
- \\makebox[0cm][l]{\\raisebox{13ex}{\\line(1,0){130}}}%
- \\makebox[0cm][l]{\\raisebox{11ex}{\\line(1,0){130}}}%
- \\makebox[0cm][l]{\\raisebox{9ex}{\\line(1,0){130}}}%
- \\makebox[0cm][l]{\\raisebox{7ex}{\\line(1,0){130}}}%
- \\makebox[0cm][l]{\\raisebox{5ex}{\\line(1,0){130}}}%
- \\makebox[0cm][l]{\\raisebox{3ex}{\\line(1,0){130}}}%
- ~}
+ }{%
+ % Boîte pour les accords (plus gros)
+ \\raisebox{2.5ex}[2ex][2.5ex]{\\makebox[0pt][l]{\\small\\bf#1}}\\makebox[\\wd\\gtxchordbox+0.5em][l]{#2}%
+ }%
+ }%
+
+ \\newcommand{\\guitartab}{%
+ \\makebox[0cm][l]{\\raisebox{12.5ex}{\\footnotesize{e}}}%
+ \\makebox[0cm][l]{\\raisebox{10.5ex}{\\footnotesize{B}}}%
+ \\makebox[0cm][l]{\\raisebox{8.5ex}{\\footnotesize{G}}}%
+ \\makebox[0cm][l]{\\raisebox{6.5ex}{\\footnotesize{D}}}%
+ \\makebox[0cm][l]{\\raisebox{4.5ex}{\\footnotesize{A}}}%
+ \\makebox[0cm][l]{\\raisebox{2.5ex}{\\footnotesize{E}}}%
+ ~~
+ \\makebox[0cm][l]{\\raisebox{13ex}{\\line(1,0){130}}}%
+ \\makebox[0cm][l]{\\raisebox{11ex}{\\line(1,0){130}}}%
+ \\makebox[0cm][l]{\\raisebox{9ex}{\\line(1,0){130}}}%
+ \\makebox[0cm][l]{\\raisebox{7ex}{\\line(1,0){130}}}%
+ \\makebox[0cm][l]{\\raisebox{5ex}{\\line(1,0){130}}}%
+ \\makebox[0cm][l]{\\raisebox{3ex}{\\line(1,0){130}}}%
+ ~}
\\newcommand{\\basstab}{%
\\makebox[0cm][l]{\\raisebox{8.5ex}{\\footnotesize{G}}}%