Wie füge ich dem Inhaltsverzeichnis benutzerdefinierte Zeilen mit angegebenen Seitenzahlen hinzu?

Wie füge ich dem Inhaltsverzeichnis benutzerdefinierte Zeilen mit angegebenen Seitenzahlen hinzu?

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:

MWE

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 \inputBefehls 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 tocloftPakets, Seite 49:

\newcommand{\cftaddtitleline}[4]{
 \addtocontents{#1}{%
  \protect\contentsline{#2}{#3}{#4}
 }
}

Sie müssen also nur \addtocontentsanstelle von verwenden \addcontentsline. Um es genauso wie die anderen chapterEinträ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 \thepageund 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}

\thepageIch 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 pageZähler und setzt die Zahl auf 1 zurück.

\ignorespaceswird 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 :)

verwandte Informationen