Ich möchte dem Inhaltsverzeichnis benutzerdefinierte Zeilen für meine Anhänge hinzufügen, die ich in einer externen Software erstellt habe. Außerdem soll es möglich sein, die Seitenzahl jedes einzelnen Anhangs anzugeben. Wie kann ich dies erreichen?
Als MWE werde ich mein Bestes geben.
\documentclass{report}
\newcommand{\append}[2]{%
\stepcounter{chapter}%
\newpage\thispagestyle{empty}\phantom{-}%
\addcontentsline{toc}{chapter}{\protect\numberline{\Alph{chapter}}{#1}}%
\newpage\addtocounter{page}{-1}\addtocounter{page}{#2}%
}
\begin{document}
\tableofcontents
\chapter{Chapter 1}
Bla bla
\chapter{Chapter 2}
Bla bla bla
\appendix
\chapter{Appendix 1}
Blah
\append{Extra 1}{2}
\append{Extra 2}{1}
\end{document}
Generiertes Inhaltsverzeichnis:
Damit es funktioniert, muss leider für jeden einzelnen Anhang eine leere Seite eingefügt werden.
Wie kann ich diese zusätzlichen leeren Seiten entfernen und gleichzeitig andere Merkmale des \input
Befehls beibehalten?
Antwort1
Da Sie keine leere Seite einbinden möchten, weil Sie einige großformatige CAD-Zeichnungen separat plotten möchten, habe ich mir angesehen, wie \cftaddtitleline{toc}{chapter}{<text>}{<page>}
in derDokumentationdes tocloft
Pakets, Seite 49:
\newcommand{\cftaddtitleline}[4]{
\addtocontents{#1}{%
\protect\contentsline{#2}{#3}{#4}
}
}
Sie müssen also nur \addtocontents
anstelle von verwenden \addcontentsline
. Um es genauso wie die anderen chapter
Einträge anzuzeigen, sollten Sie den Titel als definieren , wodurch dieser Eintrag in Ihrer Datei \protect\numberline{\Alph{chapter}}#1}
entsteht :*.toc
\contentsline {chapter}{\numberline {2}Chapter 2}{3} %automatically done with \chapter{}
\contentsline {chapter}{\numberline {A}Appendix 1}{11} %added
Sie können ihn in der folgenden Zeile jedoch nicht verwenden \thepage
und erhöhen, da alle Abschnitte die gleiche Nummer erhalten würden:
\addtocontents{toc}{\protect\contentsline{chapter}{\protect\numberline{\Alph{chapter}}#1}{\thecnt}}
\addtocounter{page}{#2}
\thepage
Ich habe einen Zähler hinzugefügt, der vor dem Aufruf festgelegt wird \append
, und der so geändert wird, dass er die Nummer des vorherigen Kapitels (Anhang 1) nicht beeinflusst.
\documentclass{report}
\newcounter{cnt}
\newcommand{\append}[2]{%
\stepcounter{chapter}
\addtocontents{toc}{\contentsline{chapter}{\protect\numberline{\Alph{chapter}}#1}{\thecnt}}
\addtocounter{cnt}{#2}
}
\begin{document}
\tableofcontents
\chapter{Chapter 1}
Bla bla
\chapter{Chapter 2}
Bla bla bla
\appendix
\chapter{Appendix 1}
Blah
\setcounter{cnt}{\thepage}
\stepcounter{cnt}
\append{Extra 1}{7}
\append{Extra 2}{8}
% In case you want to add other 'normal' appendices
%\clearpage
%\setcounter{page}{\thecnt}
%\chapter{Appendix \thechapter}
\end{document}
Antwort2
Nachdem ich etwas geschlafen hatte, konnte ich eine Alternative finden, die wie gewünscht funktionierte. Sie basiert in gewisser Weise auf der Antwort von U. Martinez-Corral.
Hintergrund: Ich wollte einen Befehl erstellen, der dem Inhaltsverzeichnis ein Element hinzufügt und eine bestimmte Anzahl von Seiten reserviert.
Hier ist der Code.
\documentclass{report}
\usepackage{afterpage}
\newcounter{count}
\newcounter{add}\setcounter{add}{1}
\newcommand{\append}[2]{%
\stepcounter{chapter}%
\setcounter{count}{\thepage}\addtocounter{count}{\theadd}%
\addtocontents{toc}{\protect\contentsline{chapter}{\protect\numberline{\thechapter}#1}{\thecount}}%
\addtocounter{add}{#2}%
\afterpage{\addtocounter{page}{-1}\addtocounter{page}{\theadd}\setcounter{add}{1}}%
\ignorespaces%
}
\begin{document}
\tableofcontents
\append{Extra 1}{3}
\append{Extra 2}{1}
\chapter{Chapter 1}
\chapter{Chapter 2}
\appendix
\chapter{Appendix A}
Some text
\append{Extra B}{2}
\append{Extra C}{1}
Text out of nowhere!
\append{Extra D}{3}
\chapter{Appendix F}
\append{Extra G}{1}
\append{Extra H}{1}
\end{document}
Ein paar Worte, um zu erklären, was los ist.
\setcounter{count}...
Zeile berechnet die Startseite des Phantomkapitels unter Berücksichtigung der Anzahl der bereits reservierten Seiten.
\addtocontents...
fügt dem Inhaltsverzeichnis eine benutzerdefinierte Zeile hinzu. Die Zeile wird genauso formatiert wie jedes andere Kapitel.
\addtocounter{add}{#2}
erhöht die Gesamtzahl der reservierten Seiten. Diese Zahl wird entweder auf der nächsten Seite oder in der nächsten verwendet \append
.
\afterpage...
wird aufgerufen, wenn eine neue Seite beginnt. Es addiert die Anzahl der reservierten Seiten zum page
Zähler und setzt die Zahl auf 1 zurück.
\ignorespaces
wird hinzugefügt, damit der Befehl überall verwendet werden kann und keine zusätzlichen Leerzeichen erzeugt, siehe „Text aus dem Nichts!“ im Beispiel.
Vielen Dank für Ihre Hilfe :)