Partage
  • Partager sur Facebook
  • Partager sur Twitter

[LateX] Projet carnet de chant

Création d'un environnement couplet

    9 mai 2013 à 14:04:59

    Bonjour,

    Je suis actuellement en train de rédiger un carnet de chant en latex. Cependant j'ai des soucis pour obtenir un résultat propre. J’apprécierai vos commentaires et conseils!

    Au niveau du cahier des charge, je me suis fixé:

    - Le carnet sera de taille A5 et format paysage.

    - Le carnet a pour objectif d'être imprimer en recto et relié sur le côté droit

    - Une table des matières doit faire apparaître les titres et les pages des différents chants

    - Certaines pages peuvent contenir des images

    - Les chants peuvent tenir sur deux colonnes au maximum

    Mes questions:

    - Mon premier souci par rapport au code ci dessous est le fait que chaque section dois être rajoutée manuellement dans l'index (car je ne veux pas de numérotation sur les titres). N'y a t-il pas une autre manière de faire? J'ai cherché du coté des renewcommand pour éditer la commande section mais je n'ai pas abouti.

    - Je n'ai pas trouvé d'informations concernant la création d'un environnement. En effet, chaque chant (ici des sections) comporte des couplets, et je voudrais que ces couplets ne soient pas coupés en fin de colonne. De plus un environnement me permettrait d'uniformiser le carnet et d'obtenir un code plus propre.

    - De la même manière, n'y a til pas un autre moyen que les // pour sauter une ligne dans mes couplets?

    - Certains chant comportent des "bis" sur 2 lignes. J'ai tenté d'inscrire ces lignes dans un tableau et d'ajouter une accolade à droite. Ça fonctionne plutôt bien mais mes 2 lignes sont décalées par rapport aux autres du couplet. En ajoutant un @{} dans les options du tableau je rapproche mes lignes de la gauche, mais pas suffisamment et j'observe ne plus un décalage vers le haut. Comment je peux faire?

    Mon code: (il n'y a pas de balise latex?)

    \documentclass[landscape,a5paper,12pt,twoside]{report}
     
    \usepackage[utf8]{inputenc}   %supporter les caractères accentués
    \usepackage[T1]{fontenc}
    \usepackage[francais]{babel}
    \usepackage[top=1cm, bottom=2cm, left=2cm, right=2cm]{geometry} %marges
    
    \setlength{\parindent}{0cm}	%supprime la tabulation avant un paragraphe
    \setcounter{tocdepth}{4}		%ajoute les section dans la table des matières
    
    \makeatletter
    \renewcommand\section{\@startsection {section}{1}{\z@}%
                                       {-3.5ex \@plus -1ex \@minus -.2ex}%
                                       {2.3ex \@plus.2ex}%
                                       {\centering\normalfont\Large\bfseries}} %édite la commande section pour la centrer
    \makeatother
    
    \title{Carnet de Chant}
    \author{Troupe Saint Michel Archange}
    \date{}   
           
    \begin{document}
    \maketitle
    
    \twocolumn[\section*{Chant de La promesse}]
    \addcontentsline{toc}{section}{Chant de La promesse}
    
    1- Devant tous je m'engage\\
    Sur mon honneur\\
    Et je Te fais hommage\\
    De moi, Seigneur.\\
    
    \begin{bf}
    Refrain :\\
    Je veux T'aimer sans cesse\\
    De plus en plus.\\
    Protège ma Promesse,\\
    Seigneur Jésus.\\
    \end{bf}
    
    2- Je jure de Te suivre\\
    En fier chrétien\\
    Et tout entier je livre\\
    Mon coeur au Tien.\\
    
    3- Je suis de Tes apôtres\\
    Et chaque jour\\
    Je veux aider les autres\\
    Pour Ton amour.\\
    
    4- Fidèle à ma patrie,\\
    Je le serai.\\
    Tous les jours de ma vie,\\
    Je servirai.\\
    
    5- Ta règle a sur nous-mêmes\\
    Un droit sacré.\\
    Je suis faible, Tu m'aimes\\
    Je maintiendrai.\\
    
    %%%%%%%%%%%%%
    
    % j'ai enlevé tout les autres chants car il n'y a que le fond qui change
    
    %%%%%%%%%%%%%
    
    
    \twocolumn[\section*{Partons, amis}]
    \addcontentsline{toc}{section}{Partons, amis}
    
    \begin{bf}
    Refrain :\\
    $\left.
    \begin{tabular}{l}
    Roum, roum, roum, roum\\
    Tra deri dera deri dera\\
    \end{tabular}
    \right \}$
    bis\\
    \end{bf}
    
    1- Partons amis en route\\
    Le soleil est levé\\
    Fuyons l’ennui, le doute\\
    Marchons avec fierté.\\
    
    2- Fuyons les voies tordues\\
    Fuyons le faux bonheur\\
    Si loin que va la vie\\
    Marchons avec ardeur.\\
    
    3- Allons à la lumière\\
    Allons au vrai bonheur\\
    La souffrance sur terre\\
    Epure notre c\oe ur.\\
    
    \tableofcontents %table des matières
    \end{document}

    Merci pour vos réponses,

    BenZèn

    • Partager sur Facebook
    • Partager sur Twitter
      9 mai 2013 à 17:51:38

      Je propose un environnement "chant" où les sauts de lignes dans le code provoquent des sauts de lignes en composition. J'ai fait de "*" le caractère qui marque le début d'un couplet.

      Un environnement "refrain" compose le refrain dans un tableau.

      Au niveau des contraintes, j'ai essayé de respecter ce que tu demandes : un couplet ne peut être coupé et quant aux sections, elles ne sont numérotées ni dans la table des matières ni dans le document.

      \documentclass[12pt]{article}
      \usepackage[utf8]{inputenc}
      \usepackage[T1]{fontenc}
      \usepackage[landscape,a5paper,twoside,margin=2cm]{geometry}
      \usepackage{titlesec,titletoc}
      \usepackage[frenchb]{babel}
      
      \titleformat{\section}[block]{\normalfont\large\bfseries\filcenter}{}{1em}{}
      \titlecontents{section}[0pt]{}{}{}{\titlerule*[.75pc]{.}\contentspage}
      \makeatletter
      \newcount\cnt@couplet
      
      \newenvironment{chant}
      	{\begingroup\lccode`\~`\^^M%
      	\lowercase{\endgroup\def~{\endgraf\nobreak}}%
      	\begingroup\lccode`\~`\*%
      	\lowercase{%
      		\endgroup
      		\def~}{%
      			\global\advance\cnt@couplet\@ne
      			\bigbreak\quitvmode
      			\llap{\number\cnt@couplet\relax{} - }%
      			\ignorespaces
      		}%
      	\def\par{\penalty-50 \endgraf}%
      	\catcode`\^^M\active\catcode`\*\active
      	\parindent\z@
      	\global\cnt@couplet\z@
      	}
      	\relax
      
      \newenvironment{refrain}[1][]
      	{\medbreak
      	\bfseries\textit{Refrain}\endgraf
      	\def\refrain@opt{#1}%
      	\begingroup\lccode`\~`\^^M\lowercase{\endgroup\let~\cr}%
      	\catcode`\^^M\active
      	$\left.\vcenter\bgroup\halign\bgroup\noindent##\hfil\cr
      	}
      	{\crcr\egroup\egroup
      	\ifx\@empty\refrain@opt\right.\else\quad\right\}\hbox{\refrain@opt}\fi$
      	\ignorespaces
      	}
      \makeatother
      
      \title{Carnet de Chant}
      \author{Troupe Saint Michel Archange}
      \date{}
      \begin{document}
      \maketitle
      \raggedbottom
      \twocolumn[\section{Chant de La promesse}]
      
      \begin{chant}
      	*Devant tous je m'engage
      	Sur mon honneur
      	Et je Te fais hommage
      	De moi, Seigneur.
      
      	\begin{refrain}
      		Je veux T'aimer sans cesse
      		De plus en plus.
      		Protège ma Promesse,
      		Seigneur Jésus.
      	\end{refrain}
      
      	*Je jure de Te suivre
      	En fier chrétien
      	Et tout entier je livre
      	Mon c\oe ur au Tien.
      
      	*Je suis de Tes apôtres
      	Et chaque jour
      	Je veux aider les autres
      	Pour Ton amour.
      
      	*Fidèle à ma patrie,
      	Je le serai.
      	Tous les jours de ma vie,
      	Je servirai.
      
      	*Ta règle a sur nous-mêmes
      	Un droit sacré.
      	Je suis faible, Tu m'aimes
      	Je maintiendrai.
      \end{chant}
      
      \twocolumn[\section{Partons, amis}]
      
      \begin{chant}
      	\begin{refrain}[bis]
      		Roum, roum, roum, roum
      		Tra deri dera deri dera
      	\end{refrain}
      
      	*Partons amis en route
      	Le soleil est levé
      	Fuyons l'ennui, le doute
      	Marchons avec fierté.
      
      	*Fuyons les voies tordues
      	Fuyons le faux bonheur
      	Si loin que va la vie
      	Marchons avec ardeur.
      
      	*Allons à la lumière
      	Allons au vrai bonheur
      	La souffrance sur terre
      	Epure notre c\oe ur.
      \end{chant}
      
      \clearpage\tableofcontents
      \end{document}

      -
      Edité par unbonpetit 9 mai 2013 à 22:53:48

      • Partager sur Facebook
      • Partager sur Twitter
        9 mai 2013 à 20:46:57

        Le niveau de ton code latex est assé élevé ;) une petite expication ne serais pas de trop, tant pour moi qui suis curieux que pour Benzem
        • Partager sur Facebook
        • Partager sur Twitter
          9 mai 2013 à 21:36:19

          alexises a écrit:

          Le niveau de ton code latex est assé élevé

          C'est du code TeX.

          alexises a écrit:

          une petite expication ne serais pas de trop, tant pour moi qui suis curieux que pour Benzem


          C'est vraiment trop complexe et trop long à expliquer, désolé.
          • Partager sur Facebook
          • Partager sur Twitter
            9 mai 2013 à 22:26:14

            C'est vrai qu'en général j'aime pas prendre des choses que je ne comprends pas. Mais comme j'ai vraiment besoin de ça et que je l'ai demandé je m'en contenterai. Y a t-il un tuto expliquant la création d'un environnement?
            Merci pour la source en tout cas!

            Edit: Je viens de compiler, c'est magique °_°

            Apprends moi !!!

            -
            Edité par BenZèn 9 mai 2013 à 22:31:30

            • Partager sur Facebook
            • Partager sur Twitter
              9 mai 2013 à 22:33:43

              Bonsoir,

              A toutes fins utiles je vous indique un site proposant la mise en page automatique d'un carnet de chants.

              http://www.carnet-de-chants.fr/

              La technologie repose sur du php et librairies pdf donc à priori éloigné de ce que vous programmez

              mais le résultat est pas mal, vous y trouverez peut etre votre bonheur

              • Partager sur Facebook
              • Partager sur Twitter
                9 mai 2013 à 22:38:15

                BenZèn a écrit:

                Apprends moi !!!


                Je ne demande pas mieux mais dans le cas présent, je t'assure que c'est vraiment complexe. En effet, compte tenu du niveau qu'il faut avoir en TeX pour accéder à ce code, il me faudrait plusieurs pages pour en expliquer à un débutant toutes les arcanes et démêler les astuces déployées. Je n'en ai ni le temps ni l'envie, je suis désolé.

                Si "pépère", expert débutant en TeX veut s'y coller, je lui cède volontiers ma place.

                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  9 mai 2013 à 23:38:12

                  Puisque j'y suis invité par unbonpetit (d'ailleurs expert débutant c'est pas un peu contradictoire :p ? ) et que je n'ai rien à faire ce soir, je vais tenter de le faire :) .

                  Bon déjà, puisque c'est du TeX, je vais commencer par un lien qui en parle : http://www.apprendre-en-ligne.net/LaTeX/teximpatient.pdf ; par contre c'est du TeX pur sans LaTeX, démodé aujourd'hui et certainement incompréhensible au début et ayant tendance à donner de mauvaises manies ; je dirais que tu devrais commencer par la page 67 / chap 4 Concepts. Mais bon, t'as voulu apprendre, va falloir s'y mettre :p ! Je me concentrerais sur l'environnement chant, pour l'autre je crois que j'aurai pas la foi pour.

                  dans 
                  ````
                  \newenvironment{chant}
                      {\begingroup\lccode`\~`\^^M%
                      \lowercase{\endgroup\def~{\endgraf\nobreak}}%
                      \begingroup\lccode`\~`\*%
                      \lowercase{%
                          \endgroup
                          \def~}{%
                              \global\advance\cnt@couplet\@ne
                              \bigbreak\quitvmode
                              \llap{\number\cnt@couplet\relax{} - }%
                              \ignorespaces
                          }%
                      \def\par{\penalty-50 \endgraf}%
                      \catcode`\^^M\active\catcode`\*\active
                      \parindent\z@
                      \global\cnt@couplet\z@
                      }
                      \relax
                  ```` 
                  le ```\relax``` final correspond donc à la dernière action à effectuer, et qui est très simple : ne rien faire. Bon par contre ne pas croire que cette commande ne sert à rien, en fait elle a une utilité ; mais ici c'est juste pour dire de ne rien faire, on aurait pu la remplacer par ```{}``` mais c'est une question de goût (enfin, pas que, mais ce sont des détails).
                  
                  Ensuite, dans le 2è argument, ```\begingroup``` ouvre un niveau de groupe, c'est à dire que toutes les modifications non rendues globales (par la commande ```\global``` les précédant) seront cantonnées à ce niveau et annulées une fois sorties ; avec de la logique on comprend que c'est ```\endgroup``` qui va refermer ce niveau de groupe.
                  
                  Ca tombe bien, on va modifier temporairement le ```\lccode``` du caractère ```~``` pour lui donner celui de ```\^^M``` , qui désigne le caractère de fin de ligne (CR ou LF en ASCII, je sais jamais lequel des 2).
                  En fait, ce paramètre désigne par quels caractères TeX doit remplacer ceux contenues dans ```\lowercase``` ; cette commande, une fois lue, agit en priorité sur toutes les autres et remplace tous les caractères par leurs ```\lccode```respectifs. En temps normal cette commande sert surtout à remplacer une chaîne de caractères par leurs équivalents minuscules, d'où son  nom. mais dans notre cas, ````\lowercase{\endgroup\def~{\endgraf\nobreak}}```` devient aux yeux de TeX ````\endgroup\def^^M{\endgraf\nobreak}```` sauf que, pour des raisons que je n'explique pas là, on ne pouvait pas l'écrire directement ; en fait tout ceci est une astuce archi-classique pour ce genre de problèmes ; en très gros cela vient du fait que ```~``` est un caractère actif, il n'a pas besoin d'être précédé par un slash inverse pour produire un effet (toujours en gros), et pas ```^^M```, qui en temps que caractère fin de ligne, serait ignoré.
                  
                  Ainsi, lorsqu'une fin de ligne simple sera lue, au lieu comme en temps normal de se comporter comme une simple espace, elle va porduire les commandes ```\endgraf\nobreak``` qui respectivement terminent le paragraphe en cours de "fabrication" et interdisent la coupure de page à cet endroit (pour ne pas couper dans un couplet).
                  
                  Pour la suite, 
                  ```` 
                  \begingroup\lccode`\~`\*%
                      \lowercase{%
                          \endgroup
                          \def~}{%
                              \global\advance\cnt@couplet\@ne
                              \bigbreak\quitvmode
                              \llap{\number\cnt@couplet\relax{} - }%
                              \ignorespaces
                          }%
                   ````
                  
                   on commence par la même astuce que précédemment, pour cette fois-   donner à ```*``` la définition 
                  ````  \global\advance\cnt@couplet\@ne
                              \bigbreak\quitvmode
                              \llap{\number\cnt@couplet\relax{} - }%
                              \ignorespaces 
                  ````
                  ```\global\advance\cnt@couplet\@ne```  signifie qu'on ajoute 1 ( ```\@ne``` est une constante égale à 1, elle sert car elle est interprétée plus rapidement que le chiffre 1 (et puis que c'est trop joli d'écrire ```\@ne``` plutôt que 1 <img src="/bundles/tinymce/vendor/tiny_mce/plugins/emotions/img/langue.png" title=":p" alt=":p" /> )) de manière globale au compteur ``` \cnt@couplet```défini plus haut dans le code par ```\newcount\cnt@couplet``` , c'est à dire que les niveaux de groupe sont sans influence, cf plus haut. Ensuite on ajoute un espacement vertical ```\bigbreak``` et ```\quitvmode``` refait passer TeX en mode horizontal, celui où il compose le paragraphe en cours de lecture (par opposition au mode vertical et mathématique, où respectivement il compose les pages en plaçant les paragraphes et où il compose les symboles mathématiques, simple n'est-ce pas <img src="/bundles/tinymce/vendor/tiny_mce/plugins/emotions/img/siffle.png" title=":-°" alt=":-°" /> désolé là je vais un peu vite, mais c'est difficile de tout expliquer, si tu as des questions précises n'hésite pas) .
                  
                  Puis ``` \llap{\number\cnt@couplet\relax{} - }%``` vient placer dans la marge à gauche le numéro du couplet avec un tiret, puis ```\ignorespaces``` est une commande qui fait ignorer les espaces (scoop !) jusqu'au 1er caractère rencontré, pour ne pas que des espaces parasites apparaissent. Voilà tout ce qui se passera dès que tu utiliseras``` *``` dans un environnement chant.
                  
                  ```\def\par{\penalty-50 \endgraf}%``` : pour comprendre cela il faut savoir que la commande ```\par``` est celle qui termine un paragraphe et qu'elle est ajoutée automatiquement quand TeX rencontre deux retours à la ligne successifs, et que la commande ```\endgraf``` rencontrée déjà auparavant n'est qu'une copie équivalente. Cette ligne redéfinit la commande ```\par``` pour qu'au lieu de simplement terminer le paragraphe, elle rajoute une pénalité de coupure (```\penalty-50```) pour inciter TeX à ne pas couper ici.
                  EDIT : ceci est faux, voir les posts suivants
                  
                  On termine de rendre actif les caractères ```^^M``` et ```~``` par ```\catcode`\^^M\active\catcode`\*\active```.
                  On enlève l'indentation de début de paragraphe par ```\parindent\z@```.
                  On remet les compteurs de couplets à 0 par ```\global\cnt@couplet\z@```.
                  
                  Ainsi, dès que tu reviendras à la ligne, teX viendra terminer un paragraphe, revenir à la ligne ensuite, tout en se débrouillant pour ne pas couper.
                  Dès que tu utiliseras *, TeX mettra un espacement vertical au dessus, ira placer le numéro du couplet dans la marge, incrémente le compteur de couplets.
                  
                  Bon, dis comme ça c'est un peu "et paf ça fait des chocapics", et je suis allé un peu vite et ai donc dis des "horreurs", mais c'est difficile de reprendre tout car le code n'est pas très difficile si on omet les subtilités des ```\lowercase``` mais elles sont inévitables (ou presque, mais c'est plus rapide à faire ainsi et plus propre) et elles reviennent souvent dans des codes TeX ; faut mettre les mains dedans, dans ce que LaTeX veut faire éviter à ses utilisateurs et donc évidemment c'est certainement peu compréhensible au début, mais si tu as des questions n'hésite pas.
                  
                  EDIT : oubli + aération + fautes d'orthographe limite honteuses...
                  

                  -
                  Edité par Anonyme 10 mai 2013 à 10:59:23

                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 mai 2013 à 0:02:43

                    Merci pepere pour les explications. L’astuce du \lowercase est infâme…

                    • Partager sur Facebook
                    • Partager sur Twitter
                      10 mai 2013 à 8:29:06

                      pepere250 a écrit:

                      d'ailleurs expert débutant c'est pas un peu contradictoire

                      Non, ce n'est pas du tout contradictoire. C'est, à mon avis, et sans vouloir être blessant, ton niveau en TeX.

                       

                      pepere250 a écrit:

                      Bon déjà, puisque c'est du TeX

                      À deux minuscules exceptions prés : \textit et \bfseries

                      Je suis globalement d'accord avec ce qui a été dit sauf :

                      pepere250 a écrit:

                      c'est du TeX pur sans LaTeX, démodé aujourd'hui et certainement incompréhensible au début et ayant tendance à donner de mauvaises manies

                       Je me demande pourquoi tu dis que ça donne de mauvaises habitudes.

                      Au contraire, ça donne de très bonnes habitudes pour deux raisons : au moins, on comprend ce qu'on fait et de plus, ni latex ni aucun package ne peut effectuer des réglages aussi appropriés à un problème. D'où d'ailleurs la nécessité de savoir le TeX, ne serait-ce que pour acquérir un tant soi peu d'autonomie dès qu'un problème non standard se présente.

                      Pour le reste, je suis globalement d'accord avec ce qui a été dit sauf :

                      pepere250 a écrit:

                      elle rajoute une pénalité de coupure (\penalty-50) pour inciter TeX à ne pas couper ici.

                      Non, c'est l'inverse : la pénalité incite TeX à couper justement. Car une pénalité négative (même assez faiblement comme ici) revient à encourager une coupure (de ligne ou de page).

                      -
                      Edité par unbonpetit 10 mai 2013 à 8:31:41

                      • Partager sur Facebook
                      • Partager sur Twitter
                        10 mai 2013 à 10:28:19

                        Merci beaucoup pour l'explication ;).

                        C'est sur que la redéfinition de caractère, est un chouilla proche de Tchernobyl. Mais bon des fois (à l'image de l’environnement tabular) on a pas trop  le choix

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          10 mai 2013 à 10:51:30

                          unbonpetit a écrit >pepere250 a écrit:

                          >> d'ailleurs expert débutant c'est pas un peu contradictoire

                          Non, ce n'est pas du tout contradictoire. C'est, à mon avis, et sans vouloir être blessant, ton niveau en TeX.

                          C'était juste que pour moi, expert désigne quelqu'un qui a de l'expérience, donc par définition non débutant ; mais je le prends pas mal du tout, plutôt comme un compliment :) .

                          Pour les mauvaises habitudes, je pensais plutôt au fait que ce livre explique la manière plain-TeXienne d'écrire, avec des commandes comme `\bye` qui ne sont pas définies en LaTeX, le système de "magnification" pour modifier la taille de police, la façon TeXienne de composer des maths et limite obsolète en LaTeX etc... Evidemment je suis d'accord sur le fait que ça instruit sur le fonctionnement interne et que dès qu'on a un problème non traité par un package, si on ne connaît pas TeX on est dans la mouise bien comme il faut.

                          Et pour les pénalités, mea culpa, ça fait tellement longtemps que je ne m'en suis pas servi à la main que j'ai oublié et que j'ai confondu, désolé :euh:

                          -
                          Edité par Anonyme 10 mai 2013 à 11:04:02

                          • Partager sur Facebook
                          • Partager sur Twitter
                            10 mai 2013 à 10:58:30

                            Quel district ?

                            • Partager sur Facebook
                            • Partager sur Twitter
                            OCaml, un langage expressif et performant qui vous ferait du bien.
                              10 mai 2013 à 23:23:06

                              Un petite question encore,

                              Est-il possible de faire une balise pour mettre un }bis sur les lignes désirées et non pas seulement sur le refrain?

                              D’ailleurs tu n'a pas expliqué comment était rendu cette option de l'environnement refrain =p

                              Peut-être  qu'avec une explication je serai capable de le faire moi même =)

                              -
                              Edité par BenZèn 10 mai 2013 à 23:29:03

                              • Partager sur Facebook
                              • Partager sur Twitter
                                11 mai 2013 à 21:39:57

                                BenZèn a écrit:

                                Est-il possible de faire une balise pour mettre un }bis sur les lignes désirées et non pas seulement sur le refrain?

                                Oui, évidemment.
                                J'ai choisi une macro et non un environnement, pour changer un peu.

                                Voici une nouvelle version où les espacements des tableaux avec ce qui précède sont plus rigoureux :

                                \documentclass[12pt]{article}
                                \usepackage[utf8]{inputenc}
                                \usepackage[T1]{fontenc}
                                \usepackage[landscape,a5paper,twoside,margin=2cm]{geometry}
                                \usepackage{titlesec,titletoc}
                                \usepackage[frenchb]{babel}
                                
                                \titleformat{\section}[block]{\normalfont\large\bfseries\filcenter}{}{1em}{}
                                \titlecontents{section}[0pt]{}{}{}{\titlerule*[.75pc]{.}\contentspage}
                                \makeatletter
                                \newcount\cnt@couplet
                                
                                \newcommand*\chant@cr{\endgraf\nobreak}
                                
                                \newcommand*\process@active[2]{%
                                	\catcode`#113
                                	\begingroup\lccode`\~`#1\lowercase{\endgroup#2}%
                                }
                                
                                \newenvironment{chant}
                                	{\process@active\^^M{\let~}\chant@cr
                                	\process@active\*{\def~}{%
                                			\global\advance\cnt@couplet\@ne
                                			\bigbreak\quitvmode
                                			\llap{\number\cnt@couplet\relax{} - }%
                                			\ignorespaces
                                		}%
                                	\def\par{\penalty-50 \endgraf}%
                                	\parindent\z@
                                	\global\cnt@couplet\z@
                                	}
                                	\relax
                                
                                \newcommand*\repeter[1][bis]{%
                                	\begingroup
                                	\process@active\^^M{\let~}\cr
                                	\repeter@i{#1}%
                                }
                                
                                \newcommand\repeter@i[2]{%
                                	\setbox\z@\vtop{\halign{##\hfil\cr#2\crcr}}%
                                	\leavevmode\copy\z@
                                	\draw@brace{#1}%
                                	\endgroup
                                }
                                
                                \newcommand\draw@brace[1]{%
                                	\setbox\z@\hbox{\lower.5\dp\z@\hbox{\kern.5em $\left.\vrule width\z@ height\z@ depth.5\dp\z@\right\}\hbox{#1}$}}%
                                	\ht\z@\z@\dp\z@\z@\box\z@
                                }
                                
                                \newenvironment{refrain}[1][]
                                	{\medbreak
                                	\bfseries\textit{Refrain}\endgraf
                                	\def\refrain@opt{#1}%
                                	\futurelet\nxt@tok\testnxt@tok
                                	}
                                	{\crcr\egroup\egroup
                                	\leavevmode\copy\z@
                                	\unless\ifx\refrain@opt\@empty\draw@brace\refrain@opt\fi
                                	}
                                
                                \newcommand*\testnxt@tok{%
                                	\ifx\nxt@tok\chant@cr\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
                                		{\afterassignment\init@boxchant
                                		\let\nxt@tok=
                                		}
                                		\init@boxchant
                                }
                                
                                \newcommand*\init@boxchant{%
                                	\process@active\^^M{\let~}\cr
                                	\setbox\z@\vtop\bgroup\halign\bgroup##\hfil\cr
                                }
                                
                                \makeatother
                                
                                \title{Carnet de Chant}
                                \author{Troupe Saint Michel Archange}
                                \date{}
                                \begin{document}
                                \maketitle
                                \raggedbottom
                                \twocolumn[\section{Chant de La promesse}]
                                 
                                \begin{chant}
                                	*Devant tous je m'engage
                                	Sur mon honneur
                                	Et je Te fais hommage
                                	De moi, Seigneur.
                                
                                	\begin{refrain}
                                		Je veux T'aimer sans cesse
                                		De plus en plus.
                                		Protège ma Promesse,
                                		Seigneur Jésus.
                                	\end{refrain}
                                
                                	*Je jure de Te suivre
                                	En fier chrétien
                                	Et tout entier je livre
                                	Mon c\oe ur au Tien.
                                
                                	*Je suis de Tes apôtres
                                	\repeter{%
                                	Et chaque jour
                                	Je veux aider les autres
                                	Pour Ton amour.}
                                
                                	*Fidèle à ma patrie,
                                	Je le serai.
                                	Tous les jours de ma vie,
                                	Je servirai.
                                
                                	*Ta règle a sur nous-mêmes
                                	Un droit sacré.
                                	Je suis faible, Tu m'aimes
                                	Je maintiendrai.
                                \end{chant}
                                
                                \twocolumn[\section{Partons, amis}]
                                
                                \begin{chant}
                                	\begin{refrain}[bis]
                                		Roum, roum, roum, roum
                                		Tra deri dera deri dera
                                	\end{refrain}
                                
                                	*Partons amis en route
                                	Le soleil est levé
                                	Fuyons l'ennui, le doute
                                	Marchons avec fierté.
                                
                                	*Fuyons les voies tordues
                                	Fuyons le faux bonheur
                                	Si loin que va la vie
                                	Marchons avec ardeur.
                                
                                	*Allons à la lumière
                                	Allons au vrai bonheur
                                	La souffrance sur terre
                                	Epure notre c\oe ur.
                                \end{chant}
                                
                                \clearpage\tableofcontents
                                \end{document}



                                • Partager sur Facebook
                                • Partager sur Twitter
                                  15 mai 2013 à 0:22:19

                                  Merci pour ces infos, ça marche à la perfection!


                                  Je m'en vais étudier tout ça de plus près pour mieux comprendre maintenant.

                                  Merci d'avoir répondu aussi rapidement et efficacement!

                                  BenZèn

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    30 avril 2015 à 1:49:34

                                    Salut BenZèn !

                                    Ton projet de carnet de chants a-t-il abouti ? On peut avoir un aperçu de ton code et du résultat ? :)

                                    Govi

                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    [LateX] Projet carnet de chant

                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                    • Editeur
                                    • Markdown