Je souhaite ajouter à la fin d'un document une table des planches qui ressemble en gros à ceci :

TABLE DES PLANCHES DU SECOND VOLUME.

Ouvrir dans l'éditeur Overleaf
Pl.                         Pages.    Pl.                                     Pages.
───────────────────────────────────────────────────────────────────────────────────
31e. — Chinois                  4  │  46e. — Entremets froids.                  124
32e. — Hure                     8  │  47e. — Entremets froids, aux gradins.     140
33e. — Industrie               12  │  48e. — Entremets froids, aux sultanes.    148
34e. — Taureaux                16  │  49e. — Bordures de plat                   168
35e. — Aigle                   20  │  50e. — Grand trophée                      172
36e. — Buisson de truffes      22  │  51e. — Fontaine                           176
37e. — Chaufroix               24  │  52e. — Ballon                             180
38e. — Bagration               28  │  53e. — Château fort.                      184
39e. — Entrées froides         36  │  54e. — Grande pièce gothique.             188
40e. — Entrées froides.        44  │  55e. — Grande pièce orientale             192
41e. — Entrées froides.        48  │  56e. — Pavillon chinois.                  196
42e. — Rôts                    60  │  57e. — Pavillon gothique                  204
43e. — Légumes                 76  │  58e. — Charlottes                         208
44e. — Entremets chauds       100  │  59e. — Grandes sultanes                   212
45e. — Entremets froids.      112  │  60e. — Gâteau de broche.                  220

Bien entendu le lecteur est en droit de s'attendre à ce qu'un clic sur un élément de cette table le transporte directement à la planche souhaitée.Pour cela il sera donc nécessaire de définir des hyperliens.

Ce résultat peut-il être obtenu en utilisant les seules fonctionnalités de LaTeX (commande xelatex) ou bien est-il nécessaire d'avoir recours comme pour l'index à un programme auxiliaire ? 

Précisions:

  1. les planches sont créées séparment sous forme de pdf's d'une page chacun et ajoutées au document grâce à des commandes \pdfinclude{}
  2. Les N° de pages sont tributaires de la taille de police choisie au moment de la compilation. Elle peut varier de 8pt à 14pt. Il est donc impossible de connaître les numéros de pages à l'avance et partant de réaliser cette table manuellement.
  3. Les N° de planches sont référencés à maintes reprises das le corps du document. Une numérotation automatique partant de un, etc. n'est donc pas à envisager.
  4. Du fait de la briéveté des intitulés, la présentation sur deux colonnes séparées par un ligne verticale (de préférence centrée sur la page) ne saurait être remise en question.
  5. Bien entendu la colonne 'Pages' doit être alignée à droite (\flushright)

En espérant que l'exemple ci-dessus reste lisible après publication.

.

Posée 19 Déc '20, 21:30

Chris%20Jones%20XL's gravatar image

Chris Jones XL
19111118
Taux d'acceptation : 6%

Je n'est pas bien compris les points 3 et 5. Pourriez-vous nous expliquer davantage ?

(20 Déc '20, 08:39) touhami touhami's gravatar image
1

Essayez l'extension etoc

(20 Déc '20, 12:04) samcarter samcarter's gravatar image

@touhami #3 fait allusion au fait que les planches sont référencées dans le document de la façon suivante : v. pl. N° 33… ou N°42… etc.(il s'agit du volume II… les 1-30 apparaissent dans le vol. I). #5 : la colonne numéro de page devrait respecter les conventions (?) d'alignement des nombres : si la 1ere ligne référence page 1 et la deuxième page 20 le 1 doit être aligné verticalement avec le 0 du 20. Par ailleurs comme les chiffres sont minuscules+proportionnels (oldstyle) et majuscules+monospace c'est bien sûr la seconde variété qui doit être utilisée ici (N° de planche et N° de page).

(20 Déc '20, 23:42) Chris Jones XL Chris%20Jones%20XL's gravatar image

@samcarter au premier abord c'est effectivement ce que j'avais en tête… en particulier la possibilité d'utiliser une table comme support (plutôt) qu'une énumération) — ¶ 30 du manuel — semble prometteuse.Étant d'une nullité crasse techniquement je vais donc devoir copier-coller l'exemple et le modifier jusqu'à obtention du résultat souhaité.

(20 Déc '20, 23:58) Chris Jones XL Chris%20Jones%20XL's gravatar image

Voici une solution basée sur etoc :

La commande \insereruneplanche possède 3 arguments : 1) fichier pdf à insérer 2) entrée dans la table des planches 3) label.

La commande \tabledesplanches s'occupe de la mise en page de la liste des planches.

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

\usepackage{mwe}

\usepackage{pdfpages}
\usepackage{etoc}
\usepackage{hyperref}

\newcounter{planche}
\renewcommand{\theplanche}{\arabic{planche}e}
\setcounter{planche}{30}
\etocsetlevel{planche}{6}
\newcommand{\insereruneplanche}[3]{%
    \includepdf[pagecommand={%
        \refstepcounter{planche}\label{#3}%
        \etoctoccontentsline{planche}{\protect\numberline{\theplanche}#2}}]{#1}}
\newcommand{\tabledesplanches}{%
    \etocsetnexttocdepth{-1}%
    \begingroup
    \etocsetlevel{planche}{-1}
    \etocsetlevel{part}{0}
    \etocsetstyle{planche}{}{}
    {\noindent\makebox[1.8em][l]{\etocnumber.} -- \etocname\hfill\etocpage\par}{}
    \setlength{\columnseprule}{.4pt}
    \etocmulticolstyle[2]{\noindent
    {\bfseries\Large
    \MakeUppercase{TABLE DES PLANCHES DU SECOND VOLUME.\vskip1cm}}%
    \noindent Pl.\hfill Pages.\quad Pl.\hfill 
    Pages.\vspace{.2cm}\hrule\vspace{.2cm}}
    \tableofcontents
    \endgroup}

\begin{document}
\tableofcontents

%\huge

\section{Foo}
\lipsum[1-10]
\insereruneplanche{ficherplancheI}{Chinois}{foo}
\section{Bar}
\lipsum[1-50]
\insereruneplanche{ficherplancheII}{Hure}{bar}
\section{Baz}
\lipsum[1-10]
\insereruneplanche{ficherplancheIII}{Entremets froids}{baz}
\tabledesplanches
\end{document}
Lien permanent

Publiée 21 Déc '20, 07:56

touhami's gravatar image

touhami
9.7k410
Taux d'acceptation : 51%

Modifiée 31 Déc '20, 16:30

@touhami cela fonctionne parfaitement. À part peut-être le fait que la table est alignée avec la marge gauche plutôt que centrée. Je devrais aussi supprimer les petits encadrés rouges pour les hyperliens : Comme le dit le manuel de etoc… de nos jours il est inutile d'ajouter ce genre de chose à une toc puisque dans un tel contexte l'utilisateur/lecteur considère qu'il est en droit de s'attendre à pouvoir cliquer et se voir immédiatement connecté à la page cible du document. Em deux mots… une solution élégante qui espérons-le sera utile à d'autres novices de mon acabit !

(22 Déc '20, 00:20) Chris Jones XL Chris%20Jones%20XL's gravatar image

@touhami il me reste à intégrer votre code (à peine modifié) à mes sources markdown et roulez jeunesse. Une seule chose semble ne pas fonctionner. Je n'ai pas trouvé trace des labels (troisième argument de \inséreruneplanche{1}{2}{label} dans le document en sortie. Mais cela n'est pas en soi un problème (voir l'autre question que j'ai posée : https://texnique.fr/osqa/questions/9644/mise-en-page-de-la-legende-dune-planche-graphique-pleine-page-au-bas-de-la-page-precedant-celle-ci

(22 Déc '20, 00:27) Chris Jones XL Chris%20Jones%20XL's gravatar image
1

Le troisième argument est la pour la création des références croisées.

avec \inséreruneplanche{1}{2}{label} une commande \label{label} est implicitement ajoutée et on peut dont faire référence à la planche avec \ref{label} ou \pageref{label}.

(22 Déc '20, 09:11) touhami touhami's gravatar image

D'après ce que je comprends \insereruneplanche{}{}{} correspondrait en langage TeX à ce que l'on nomme macro-instruction dans les diverses formes de langage assembleur que j'ai pratiquées. Le généré de la macro est-il accessible dans un des fichiers créés au moment de la compilation (moyennant une option passée au compilateur si besoin est ?

(23 Déc '20, 00:46) Chris Jones XL Chris%20Jones%20XL's gravatar image

Je n'ai pas bien compris votre question.

(24 Déc '20, 19:04) touhami touhami's gravatar image

J'essayais d'imaginer une stratégie qui m'aide à mieux comprendre le fonctionnement de vos 2 macros et je faisais sans doute fausse route. Le but recherché étant de pouvoir y apporter quelques modifications de détail. Je bute notamment sur le fait qu'il y a une ligne vide entre l'en-tête (Pl. .. Pages) et le corps de la table. (31e. — Chinois ... 4 | 46e. — Entremets ... etc.). Cela est ennuyeux car je ne veux surtout pas que la fin de la table s'imprime sur la page suivante.

(25 Déc '20, 22:41) Chris Jones XL Chris%20Jones%20XL's gravatar image

Vous pouvez jouer sur \vspace{.2cm}\hrule\vspace{.2cm}. Vous pouvez la remplacer, par exemple, par \vspace{.2cm}\hrule\vspace{.1cm} ou encore \vspace{.2cm}\hrule, vous pouvez même ajouter une valeur négative \vspace{.2cm}\hrule\vspace{-.2cm}. Mais il faut faire attention que tout cela n’empêchera pas la fin de la table d'aller sur la page suivante.

(26 Déc '20, 08:21) touhami touhami's gravatar image

j'avais pensé faire ce que vous recommandez mais pas très sûr de ce que je faisais cela ne donnait résultat escompté. Fort de votre conseil j'ai recommencé et avec un vspace{} négatif cela fonctionne comme souhaité.

(31 Déc '20, 01:00) Chris Jones XL Chris%20Jones%20XL's gravatar image

Il ne me reste qu'un petit problème à résoudre : dans mon exemple toutes les planches ont un numéro à 2 chiffres. Dans le cas du premier volume de cet ouvrage, les planches sont numérotées à partir de : 1\textsuperscript{e}. Dans la mesure où le numéro de planche est aligné avec la marge gauche, dès que l'on passe de 9 à 10, l'alignement du tiret (em-dash) qui suit n'est plus respecté. Comment puis-je modifier la macro \tabledesplanches afin que le numéro de planche soit aligné à la droite de la colonne ?

(31 Déc '20, 01:17) Chris Jones XL Chris%20Jones%20XL's gravatar image

Ah. C'est ma faute. Il suffit de remplacer \etocnumber. par \makebox[1.8em][l]{\etocnumber.} ou encore, si vous voulez, par \makebox[1.8em][r]{\etocnumber.}. Je vais modifier ma réponse.

(31 Déc '20, 16:28) touhami touhami's gravatar image

\makebox[1.8em][r]{\etocnumber.} donne le résultat escompté (en ajoutant une espace insécable 0xA0 juste avant le tiret (--) sur la même ligne. Si j'avais le bagage technique je serais tenté de regrouper toutes ces macros dans un package (extension ?) avec pour le rendre un peu plus général/flexible quelque chose qui serait calqué sur \hypersetup où l'utilisateur pourrait spécifier les options de formattage (police etc.). Ceci aurait notamment l'avantage de rendre plus concis le préambule des documents.

(01 Jan '21, 21:28) Chris Jones XL Chris%20Jones%20XL's gravatar image
Affichage de 5 parmi 11 Afficher 6 commentaire(s) en plus
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.