Ajout option pour paroles en majuscules
authorHugo Villeneuve <hugo@hugovil.com>
Tue, 7 Dec 2021 03:11:17 +0000 (22:11 -0500)
committerHugo Villeneuve <hugo@hugovil.com>
Wed, 9 Mar 2022 22:14:43 +0000 (17:14 -0500)
gtx2tex.pl

index adb82aa..02300f6 100644 (file)
@@ -8,6 +8,7 @@ GetOptions( "output=s" => \$output,
            "lyrics" => \$lyrics,
            "verbose" => \$verbose,
            "italian" => \$italian,
+           "uppercase" => \$uppercase,
          );
 
 $usage = "This is gtx2tex 2.8
@@ -18,7 +19,8 @@ options:
 --output=ps|pdf  specify the output format; without the
                  output option a tex file is created
 --italian        changes chord output to italian notation
-                 (La, Si, Do, Re, Mi, Fa, Sol)";
+                 (La, Si, Do, Re, Mi, Fa, Sol)
+--uppercase      make all lyrics uppercase";
 
 if ( ! $ARGV[0] ){
     die "$usage\n";
@@ -172,6 +174,10 @@ sub crdpro { # Bearbeitung der Zeile aus der Eingabedatei
         print TEX "$_\\\\\n" unless ( /^\s*$/ );
     } else {
 
+       if ( $uppercase ) {
+            $_ = uc($_); # Toutes les lettres en majuscule.
+        }
+
         s/\s/$space/g;                                 # Remplace une séquence de plusieurs espaces par un seul
         s/(\^)(.*?)(\])/\\\(^\{\2\}\\\)\]/g;   # Ziffern hochstellen / Place les chiffres en haut?
 
@@ -184,6 +190,36 @@ sub crdpro { # Bearbeitung der Zeile aus der Eingabedatei
             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.
+            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'.
+            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'.
+            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;
+
+            # Accords mineurs
+            s/(gtxchord\{[A-G][B#]?)M7/\1$mineur7/g;
+            s/(gtxchord\{[A-G][B#]?)M/\1$mineur/g;
+
+            # Accord A7b5
+            s/(gtxchord\{[A-G][B#]?)([0-9])B([0-9])/\1\$^{\2\\flat\3}\$/g;
+
+            # Accord A7 ou A6 ou Ab6
+            s/(gtxchord\{[A-G][B#]?)([0-9]?)/\1\$^{\2}\$/g;
+
+            s/(gtxchord\{[A-G])B/\1b/g;            # Remplace 'gtxchord{AB'  par 'gtxchord{Ab'
+            s/(\/[A-G])B/\1b/g;                    # Remplace '/AB'          par '/Ab'
+        }
+
         s/#/$sharp/g;     # Remplace le symbole '#' par le symbole diese
         s/\{Ab/{A$flat/g; # Remplace le 'b' de l'accord par le symbole bemol
         s/\{Bb/{B$flat/g;