Deutsch English Français Italiano |
<tg9r9p$rik1$1@herbert.ortolo.eu> View for Bookmarking (what is this?) Look up another Usenet article |
X-Received: by 2002:a5d:6985:0:b0:22a:d169:6fce with SMTP id g5-20020a5d6985000000b0022ad1696fcemr10537028wru.717.1663594617764; Mon, 19 Sep 2022 06:36:57 -0700 (PDT) Path: ...!news-out.google.com!nntp.google.com!proxad.net!feeder1-2.proxad.net!fdn.fr!news.ortolo.eu!.POSTED.localhost!not-for-mail From: Tanguy Ortolo <tanguy@ortolo.eu> Newsgroups: fr.comp.text.tex Subject: =?UTF-8?Q?Pr=C3=A9paration?= d'un module pour la projection de textes de chants Date: Mon, 19 Sep 2022 13:36:57 -0000 (UTC) Sender: tanguy@localhost Message-ID: <tg9r9p$rik1$1@herbert.ortolo.eu> Mime-Version: 1.0 Injection-Date: Mon, 19 Sep 2022 13:36:57 -0000 (UTC) Injection-Info: herbert.ortolo.eu; posting-account="tanguy"; posting-host="localhost:::1"; logging-data="903809"; mail-complaints-to="usenet@ortolo.eu" Summary: Module pour =?UTF-8?Q?r=C3=A9aliser?= un diaporama de texte de chant =?UTF-8?Q?d=27assembl=C3=A9e?= de =?UTF-8?Q?fid=C3=A8les?= Keywords: module, paquet, package, extension, songproj, chant, projection, couplet, refrain, vers, strophe, diaporama, =?UTF-8?Q?=C3=A9glise=2C=0A_assembl=C3=A9e=2C?= chanson, Beamer, TeX, LaTeX, LaTeX3 User-Agent: tin/2.4.5-20201224 ("Glen Albyn") (Linux/5.10.0-17-amd64 (x86_64)) Cancel-Lock: sha1:u6UNCD/N3A72UgN7e9qlfXjy0mw= Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bytes: 13560 Lines: 371 Bonjour à tous, Dans mon église locale, nous avons un vidéoprojecteur qui sert à afficher les textes des chants utilisés. Ça permet de consommer de l'électricité plutôt que des tonnes de papier (je n'ai pas vérifié si les bilans financier, énergétique et carbone étaient favorables, mais ce n'est pas le sujet). Et ça nécessite surtout de préparer, pour chaque office, un diaporama avec les textes de chants. Vous me voyez venir, j'imagine : PowerPoint et LibreOffice Impress me conviennent fort peu, en particulier avec l'absence de notion de surcouche, qui implique beaucoup de manipulations manuelles pour aligner les couplets d'une diapo sur la suivante. Après en avoir soupé avec ces WYSIWYG, je viens donc enfin de réaliser de quoi faire ça avec Beamer. Pour vous donner un peu de contexte, il s'agit d'afficher le texte de chants constitués d'un refrain et de couplets en alternance, en commençant soit par un couplet (C R C R C R), soit directement par le refrain (R C R C R C R). Certains chants n'ont d'ailleurs que des couplets. Si les couplets et le refrain ne sont pas trop longs, on peut afficher sur une même diapo un couplet et le refrain. Sinon, on n'affiche qu'un couplet, puis, sur la diapo suivante, le refrain, et ainsi de suite. L'utilisation visée consiste à écrire le texte des chants dans des fichiers séparés, avec un balisage de ce genre : ``` latex ave_maria_lourdes.tex % Vers le plus long, utilisé pour le centrage \longest{Dans l'eau pure et sainte} \begin{couplet} Ô Vierge Marie \\ Le peuple chrétien \\ À Lourdes vous prie \\ Chez vous il revient. \\ \end{couplet} \begin{refrain} Ave, ave, ave Maria. (bis) \\ \end{refrain} \begin{couplet} Le fond de la roche \\ S'éclaire à l'instant \\ La Dame s'approche \\ Fait signe à l'enfant. \\ \end{couplet} \begin{couplet} « Venez, je vous prie \\ Ici, quinze fois \\ Avec vos amies \\ Entendre ma voix ». \\ \end{couplet} \begin{couplet} Avec insistance \\ La Dame, trois fois \\ A dit : « Pénitence ». \\ Chrétien, c'est pour toi ! \\ \end{couplet} % Ce chant est plus long, mais c'est sans intérêt pour cet exemple \end{chant} ``` Ce genre de fichier sera ensuite à importer dans un diaporama, comme ceci : ``` latex ecm.tex \documentclass[12pt]{beamer} \usepackage[french]{babel} \usepackage{songproj} \begin{document} \begin{frame} \begin{song}{2}[1,2,3] % Deux strophes sur l'écran (couplet et refrain) % Utiliser les couplets 1, 2 et 3 \input{ave_maria_lourdes} \end{song} \end{frame} \end{document} ``` Le code de mon extension détermine s'il y a un refrain au début ou après un premier couplet, pour construire un transparent de ce genre : ```latex \begin{frame} \settowidth{\versewidth}{Dans l'eau pure et sainte} \vfill \vfill \begin{overprint} \onslide<+> \begin{verse}[\versewidth] Ô Vierge Marie \\ Le peuple chrétien \\ À Lourdes vous prie \\ Chez vous il revient. \\ \end{verse} \onslide<+> \begin{verse}[\versewidth] Le fond de la roche \\ S'éclaire à l'instant \\ La Dame s'approche \\ Fait signe à l'enfant. \\ \end{verse} % Et ainsi de suite pour les autres couplets \end{overprint} \vfill \begin{verse}[\versewidth] Ave, ave, ave Maria. (bis) \\ \end{verse} \vfill \vfill \end{frame} ``` J'en viens au code de mon extension (c'est un peu long, vous vous en doutez). Comme vous pourrez le voir, j'utilise largement des concepts de LaTeX3, que j'ai trouvés très utiles. Pour info, j'ai conservé les termes de « refrain » et « couplet » en français, parce qu'ils sont déjà utilisés en anglais, et que les termes anglo-anglais correspondants, soit “chorus” et “verse”, sont extrêmement ambigus (en particulier “verse”, qui peut également signifier « vers » ou « strophe »). Que pensez-vous de mon code ci-dessous ? Je m'interroge en particulier sur les points suivants : - Le nom : j'ai appelé ça “songproj” mais on devrait sans doute pouvoir trouver mieux. - L'utilisation de variables globales : c'est simple et acceptable parce qu'il serait à mon avis tout à fait absurde de vouloir définir un chant dans un chant. Mais s'il s'avère plus propre ou plus pertinent d'utiliser des affectations locales, je suis preneur de suggestions sur la façon de faire cela. - J'aimerais bien prendre en charge des listes de numéros de couplets comme « 1-2, 6-7 », voire « -2, 6- » mais j'ai peur que ce soit un peu trop compliqué à faire pour une utilité assez faible (on chante généralement entre deux et cinq couplets, donc rien d'horrible à énumérer. - À plusieurs endroits, je cherche à propager un argument optionnel d'une fonction à une autre. Dans l'environnement `refrain` par exemple, je passe l'argument optionnel `#1` à l'environnement `simple_refrain`. J'utilise pour cela `\IfNoValueTF{#1}` pour rappeler, selon le cas, `\begin{simple_refrain}` ou `\begin{simple_refrain}[#1]`. J'aimerais bien simplifier cela. - Ça ne permet pas d'afficher un chant sans refrain avec deux couplets par écran, ce qui devra faire l'objet d'une amélioration future. - Il me reste à déterminer comment documenter et de publier cela, parce que c'est la première fois que j'écris une extension qui peut intéresser plusieurs personnes sur la planète. :-) Ah, et évidemment, vous pouvez l'essayer avec `ecm.tex` et `ave_maria_lourdes.tex` précités. ```latex songproj.sty \NeedsTeXFormat{LaTeX2e}[2021/02/02] \ProvidesPackage{songproj}[2021/09/19 Song projection] \RequirePackage{expl3} \RequirePackage{xparse} \RequirePackage{verse} \ExplSyntaxOn \bool_new:N\g_my_song_bool % are we in a song? \bool_new:N\g_my_song_start_bool % are we at the start of a song? \bool_new:N\g_my_refrain_first_bool % does the song start with the refrain? \int_new:N\g_my_stanzas_per_slide_int % number of stanzas to show on each slide (1 or 2) \dim_new:N\g_my_linewidth_dim % length of the longest song line \seq_new:N\g_my_couplet_indexes_seq % indexes of song couplets to include \seq_new:N\g_my_couplets_seq % list of the song's couplets ========== REMAINDER OF ARTICLE TRUNCATED ==========