J'ai composé à l'aide du package verse une anthologie poétique assez longue.

J'aimerais obtenir un index des titres, du type TitrePoème .................... TitreSection, page.

Comme les titres sont déjà utilisés pour composer la table des matières (grâce à la commande \poemtitle, qui met en page le titre et crée son entrée dans la table), y a-t-il un moyen de les utiliser à nouveau pour composer cet index ?

Ouvrir dans l'éditeur Overleaf
\documentclass[12 pt, a5paper, twoside, french]{scrartcl}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[light, oldstyle, largesmallcaps]{kpfonts}
\usepackage{microtype}

% Environnement de poésie
\usepackage{verse}
%% Sections non numérotées
\renewcommand{\poemtoc}{subsection}
\addtocounter{secnumdepth}{-3}
\usepackage{babel}
\begin{document}

\section{Jacques Prévert}
\begin{verse}
    \poemtitle{Le Voyage malaisé}
Le coucou ne dit pas l'heure\\
le corbeau ne dit pas l'année\\
l'horloger est un receleur\\
Le temps volé il le revend ailleurs\\
mais ne dit pas où c'est.
\end{verse}

\tableofcontents
\end{document}

Posée 30 Nov '17, 13:41

Pathe's gravatar image

Pathe ♦♦
7.4k28196245
Taux d'acceptation : 55%

Voulez vous faire un index (ordonnée alphabétiquement) ou une liste (sorte d'une table des matière personnalisée) ?

(30 Nov '17, 19:24) touhami touhami's gravatar image

@touhami : merci pour cet utile commentaire, qui m'aide à préciser mon besoin. Je désire faire un index ordonné alphabétiquement... mais sans l'article : le poème de Baudelaire « Une charogne » serait classé à la lettre C. Du coup, utiliser les entrées de la table des matières apparaît impossible.

Dois-je supprimer la question ou la modifier ? Je me tâte.

(01 Déc '17, 01:13) Pathe ♦♦ Pathe's gravatar image

À mon avis il faut modifier la question pour ajouter ces informations.

Voulez vous faire ça automatiquement à partir de \poemtitle{Le Voyage malaisé} ou avez vous la possibilité d'ajouter une commande \index{Voyage malaisé} ?

(01 Déc '17, 10:44) touhami touhami's gravatar image

Oui, je vais rajouter des index. L'idée de renseigner automatiquement l'index à partir des informations de la commande \poemtitle était séduisante, mais je crains fort que ce ne soit par trop complexe.

(01 Déc '17, 12:45) Pathe ♦♦ Pathe's gravatar image

Le package poetry, qui fournit notamment la commande \listofpoems, ne serait-il pas plus approprié ?

(01 Déc '17, 13:12) denis ♦♦ denis's gravatar image

Cette commande est intéressante, mais la syntaxe de ce package diffère hélas de celle du package verse : l'utiliser m'obligerait à ré-éditer largement tous mes fichiers.

(01 Déc '17, 14:26) Pathe ♦♦ Pathe's gravatar image

Bah, ça se règle facilement à coup de sed et autres awk :)

(01 Déc '17, 14:28) denis ♦♦ denis's gravatar image

😄 J’aime bien le facilement !

(01 Déc '17, 14:53) Pathe ♦♦ Pathe's gravatar image

Il y a aussi le package poetrytex, qui semble assez complet.

Mais je pense rester avec verse, j'ai trop avancé pour changer à présent.

(01 Déc '17, 20:50) Pathe ♦♦ Pathe's gravatar image

@Pathe j'ai remarqué dans une autre question que vous avez utilisé \poemtitle[Sans faute]{Sans faute\\[2cm]{\normalsize (Codicille)}}. Dans ce cas quelle version voulez vous indexer ? la version courte [Sans faute] ou la version longue Sans faute\\[2cm]{\normalsize (Codicille)} (qui peut poser problème) ?

(01 Déc '17, 23:01) touhami touhami's gravatar image

@touhami : le cas que vous citez était une médiocre tentative de ma part pour obtenir un sous-titre pour ce poème. Il a été résolu par un tableau.

Mais vous avez raison : c'est un bon exemple de la complexité des titres. Voilà pourquoi je vais créer un index en rajoutant des commandes \index{}, plutôt que de persister à tenter de récupérer les données fournies par la commande \poemtitle.

(02 Déc '17, 00:47) Pathe ♦♦ Pathe's gravatar image

Le package poemscol, qui vient d'être mis à jour, offre nativement une table des poèmes et un index des titres et premières lignes.

(04 Déc '17, 08:52) denis ♦♦ denis's gravatar image

Cette information illustre par défaut le fonctionnement perfectible du CTAN. La recherche du mot poetry renvoie vers les packages poetry, poetrytex, memoir et poemscol. Celle du mot poem donne poetry, gmverse et poemscol. Il existe aussi le sujet verse, qui renvoie altverse, gmverse, metrix, poetry, poetrytex et verse.

Il en résulte une sensation de fouillis pour l'utilisateur. Comment savoir quelle extension utiliser ?

Et comment améliorer le fonctionnement de cet utile site qu'est le CTAN ?

(04 Déc '17, 12:35) Pathe ♦♦ Pathe's gravatar image

Cela pourrait faire l'objet d'une jolie question sur TeXnique ! :)

(05 Déc '17, 18:38) denis ♦♦ denis's gravatar image

Au sujet du CTAN ou de la meilleure extension pour composer de la poésie ?

(05 Déc '17, 22:07) Pathe ♦♦ Pathe's gravatar image

Je songeais au CTAN mais l'un n'empêche pas l'autre.

(05 Déc '17, 23:30) denis ♦♦ denis's gravatar image
(06 Déc '17, 01:46) Pathe ♦♦ Pathe's gravatar image
Affichage de 5 parmi 17 Afficher 12 commentaire(s) en plus

voici une solution.

Il faut ajouter

Ouvrir dans l'éditeur Overleaf
\usepackage{etoolbox}
\usepackage{xstring}
\noexpandarg 
\usepackage[xindy]{imakeidx}
\makeindex[columns=1, options=-L french -C utf8]

On aura besoin de sauvegarder le titre de section d'une commande \mtsectiontitle : grâce à etoolbox.

Ouvrir dans l'éditeur Overleaf
\pretocmd{\@sect}{\expandafter\ifx\csname c@#1\endcsname\c@section\def\mtsectiontitle{#7}\fi}{}{}

Vous pouvez remplacer #7 par #8 pour utiliser la version longue de titre.

On redéfinie la commande \@vsptitle : grâce à xstring et encore une fois etoolbox.

Ouvrir dans l'éditeur Overleaf
\patchcmd{\@vsptitle}{\@afterheading}%
{\renewcommand*{\do}[1]{%
    \IfBeginWith{#1}{##1}{\StrBehind{#1}{##1}[\mtarticle]}{}%
}%
\docsvlist{Un ,un ,Une ,une ,Le ,le ,La ,la ,Les ,les ,Des ,des ,L',l'}%
\ifx\mtarticle\undefined
    \index{#1\protect\dotfill\mtsectiontitle}%
\else
    \index{\mtarticle\protect\dotfill\mtsectiontitle}%
    \let\mtarticle\undefined%
\fi
\@afterheading}{}{}

et de même, vous pouvez remplacer #1 (pas ##1) par #2 pour utiliser la version longue de titre.

ECM À compiler avec les commandes :

pdflatex monfichier + texindy -L french -C utf8 monfchier.idx + pdflatex monfichier

Ouvrir dans l'éditeur Overleaf
\documentclass[french]{article}
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}

%------------------------------------
\usepackage{verse}
\renewcommand{\poemtoc}{subsection}
\addtocounter{secnumdepth}{-3}
%------------------------------------

\usepackage{etoolbox}
\usepackage{xstring}
\noexpandarg

\makeatletter 
\pretocmd{\@sect}{\expandafter\ifx\csname c@#1\endcsname\c@section\def\mtsectiontitle{#7}\fi}{}{}

\patchcmd{\@vsptitle}{\@afterheading}%
{\renewcommand*{\do}[1]{%
    \IfBeginWith{#1}{##1}{\StrBehind{#1}{##1}[\mtarticle]}{}%
}%
\docsvlist{Un ,un ,Une ,une ,Le ,le ,La ,la ,Les ,les ,Des ,des ,L',l'}%
\ifx\mtarticle\undefined
    \index{#1\protect\dotfill\mtsectiontitle}%
\else
    \index{\mtarticle\protect\dotfill\mtsectiontitle}%
    \let\mtarticle\undefined%
\fi
\@afterheading}{}{}
\makeatother

\usepackage[xindy]{imakeidx}
\makeindex[columns=1, options=-L french -C utf8]
\begin{document}
\section{Section foo}
\begin{verse}
    \poemtitle{Le nuage}
Le nuage dit à l'indien :\\
« Tire sur moi tes flèches,\\
Je ne sentirai rien. »

« C'est vrai, rien ne t'ébrèche,\\
Répond le sauvage,\\
Mais vois mes tatouages !\\
Rien de pareil sur les nuages. »
\end{verse}
\begin{verse}
    \poemtitle{Le Voyage malaisé}
Le coucou ne dit pas l'heure\\
le corbeau ne dit pas l'année\\
l'horloger est un receleur\\
Le temps volé il le revend ailleurs\\
mais ne dit pas où c'est.
\end{verse}

\section{Section bar}
\begin{verse}
    \poemtitle[Sans faute]{Sans faute (Codicille)}
C'est ma faute\\
c'est ma faute\\
c'est ma très grande faute d'orthographe\\
voilà comment j'écris\\
giraffe.

J'ai eu tort d'avoir écrit cela autrefois\\
je n'avais pas à me culpabiliser\\
je n'avais fait aucune phaute d'orthografe\\
j'avais simplement écrit giraffe en anglais.
\end{verse}

\tableofcontents
\printindex
\end{document}

alt text

Remarque avec l'option -shell-escape l'extension imakeidx lance la compilation de l'index automatiquement.

Lien permanent

Publiée 02 Déc '17, 11:53

touhami's gravatar image

touhami
9.7k410
Taux d'acceptation : 51%

Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.