J'ai inclus une annexe pdf dans un document que je compose grâce à l'extension pdfpages et à sa commande \includepdf.

Grâce à l'option addtotoc de cette commande \includepdf, j'ai reporté dans ma table des matières les sections de cette annexe. Ça fonctionne bien, mais voilà : l'une des pages de l'annexe comporte plusieurs sections :

alt text

J'ai rajouté une entrée addtotoc pour la même page :

Ouvrir dans l'éditeur Overleaf
\includepdf[pages = 3, pagecommand = {\pagestyle{scrheadings}},
addtotoc={3, subsection, 2, Deuxi\`eme section de l'annexe, label2},
addtotoc={3, subsection, 2, Troisi\`eme section de l'annexe, label3},
frame = true, scale = 0.9]{annexe.pdf}

Malheureusement, cela ne fonctionne pas : seule la dernière entrée est prise en considération. On voit bien que la deuxième section est absente de la table des matières :

alt text

Y a-t-il un moyen de générer plusieurs entrées de table des matières pour une seule page d'un pdf intégré à mon document ?


Voici un ECM :

Ouvrir dans l'éditeur Overleaf
\documentclass[12pt, a4paper, french, BCOR = 0pt, DIV = 22]{scrartcl}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[light, largesmallcaps]{kpfonts}
\usepackage{scrlayer-scrpage}
\usepackage{lastpage}
\usepackage{pdfpages}
\usepackage{lipsum}
\usepackage{babel}
\begin{document}
\ifoot{\textsf{Titre}}
\cfoot{}
\ofoot{\textsf{\thepage/\pageref{LastPage}}} 
\pagestyle{scrheadings}
\section{Introduction}
\lipsum[1]
\newpage
\section{Annexes}
\includepdf[pages = 1, pagecommand = {\pagestyle{scrheadings}},
frame = true, scale = 0.9]{annexe.pdf}
\includepdf[pages = 2, pagecommand = {\pagestyle{scrheadings}},
addtotoc={2, subsection, 2, Premi\`ere section de l'annexe, label1},
frame = true, scale = 0.9]{annexe.pdf}
\includepdf[pages = 3, pagecommand = {\pagestyle{scrheadings}},
addtotoc={3, subsection, 2, Deuxi\`eme section de l'annexe, label2},
addtotoc={3, subsection, 2, Troisi\`eme section de l'annexe, label3},
frame = true, scale = 0.9]{annexe.pdf}
\includepdf[pages = 4, pagecommand = {\pagestyle{scrheadings}},
addtotoc={4, subsection, 2, Quatri\`eme section de l'annexe, label4},
frame = true, scale = 0.9]{annexe.pdf}
\newpage
\tableofcontents
\end{document}

À toutes fins utiles, voici le code m'ayant servi à générer le pdf annexé au document servant d'exemple ci-dessus :

Ouvrir dans l'éditeur Overleaf
\documentclass[12pt, a4paper, french, BCOR = 0pt, DIV = 22]{scrartcl}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[light, largesmallcaps]{kpfonts}
\usepackage{lipsum}
\renewcommand{\thesection}{\Roman{section}} 
\renewcommand{\thesubsection}{\thesection.\Roman{subsection}}
\usepackage{babel}
\begin{document}
\renewcommand*{\titlepagestyle}{empty}
\pagestyle{empty}
\title{Titre de l'annexe}
\maketitle
\newpage
\section{Première section de l'annexe}
\lipsum[2]
\newpage
\section{Deuxième section de l'annexe}
Du texte.
\section{Troisième section de l'annexe}
\lipsum[3]
\newpage
\section{Quatrième section de l'annexe}
\lipsum[4]
\end{document}

Posée 01 Sep '17, 20:53

Pathe's gravatar image

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

Modifiée 01 Sep '17, 20:56


Le problème ici est qu'on peut pas donner deux valeurs à une même clé (addtotoc), essayer de voir, par exemple, avec \includepdf[pages = 1, angle=20, angle=60]{annexe.pdf}

ou \includepdf[pages = 1, pages = 2]{annexe.pdf} donc la dernière valeur est prise en compte.

La syntaxe de la clé (option) addtotoc est comme suit

addtotoc={<Entrées de TOC>} avec

<Entrées de TOC> --> <page>, <unité de sectionnement>, <niveau de sectionnement>, <Titre de l'entrée>, <label>[,<Entrées de TOC>][] signifie que c'est facultatif.

Donc, les deux entrées peuvent être ajouter comme suit

Ouvrir dans l'éditeur Overleaf
\includepdf[pages = 3, pagecommand = {\pagestyle{scrheadings}},
addtotoc={3, subsection, 2, Deuxi\`eme section de l'annexe, label2,
3, subsection, 2, Troisi\`eme section de l'annexe, label3},
frame = true, scale = 0.9]{annexe.pdf}

En effet pas besoin d'insérer le pdf page par page, dans l'ECM qui suit une seule commande \includepdf est utilisée (et une seule addtotoc)

Ouvrir dans l'éditeur Overleaf
\documentclass[12pt, a4paper, french, BCOR = 0pt, DIV = 22]{scrartcl}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[light, largesmallcaps]{kpfonts}
\usepackage{scrlayer-scrpage}
\usepackage{lastpage}
\usepackage{pdfpages}
\usepackage{lipsum}
\usepackage{babel}
\begin{document}
\ifoot{\textsf{Titre}}
\cfoot{}
\ofoot{\textsf{\thepage/\pageref{LastPage}}} 
\pagestyle{scrheadings}
\section{Introduction}
\lipsum[1]
\newpage
\section{Annexes}
\includepdf[pages = -, pagecommand = {\pagestyle{scrheadings}},
addtotoc={2, subsection, 2, Premi\`ere section de l'annexe, label1,
3, subsection, 2, Deuxi\`eme section de l'annexe, label2,
3, subsection, 2, Troisi\`eme section de l'annexe, label3,
4, subsection, 2, Quatri\`eme section de l'annexe, label4},
frame = true, scale = 0.9]{annexe.pdf}
\newpage
\tableofcontents
\end{document}
Lien permanent

Publiée 01 Sep '17, 21:51

touhami's gravatar image

touhami
9.7k410
Taux d'acceptation : 51%

Modifiée 02 Sep '17, 10:47

Votre solution fonctionne bien. En revanche, je n'ai pas le sentiment qu'elle est expliquée dans la documentation de l'extension pdfpages. Pensez-vous qu'il faut en informer son auteur ?

(02 Sep '17, 03:51) Pathe ♦♦ Pathe's gravatar image
1

@Pathe voir page 7.

(02 Sep '17, 10:48) touhami touhami's gravatar image

Comme quoi il faut lire les docs avec la plus grande attention.

(02 Sep '17, 13:56) Pathe ♦♦ Pathe's gravatar image
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.