Nur Inhaltsverzeichnis exportieren

Nur Inhaltsverzeichnis exportieren

Was wäre die bevorzugte Methode zum Exportieren der Table of contentsin einer Datei verwendeten Daten .texin eine separate Datei .pdf?

Derzeit habe ich eine my-report.texDatei und möchte das Ergebnis von pdflatex( my-report.pdf) mit koppeln my-report-toc.pdf, das nur das Inhaltsverzeichnis enthält.

Gibt es eine einfache Möglichkeit, dies zu erreichen?


Meine .texDatei hat folgendes Layout (vereinfacht):

...
\begin{titlepage}
\includepdf[pages=-]{abstract.pdf}
\end{titlepage}

% -------------------------------------------------    
% This should go to a separate .pdf file on export.
\tableofcontents
\pagebreak
% -------------------------------------------------

\section{Section1}
...
\section{Section2}
...
\section{Section3}
...

Antwort1

PDF-Extraktion

Mit externen Tools lassen sich Seiten aus der PDF-Datei extrahieren, z. B. pdftk. Wenn das Inhaltsverzeichnis auf den Seiten 5 und 6 steht:

pdftk myreport.pdf cat 5-6 output myreport-toc.pdf

\include

Wenn das Hauptdokument in mehrere \includeDateien aufgeteilt ist, dann \tableofcontentskommt das in eine separate Datei myreport-tableofcontents.tex:

\tableofcontents
\newpage

und um myreport.texdas Inhaltsverzeichnis einzuschließen:

\include{myreport-tableofcontents}

Anschließend myreport-toc.texfolgt nur noch das Inhaltsverzeichnis:

\includeonly{myreport-tableofcontents}
\input{myreport}

Mit hyperrefund Links

Wenn myreport.texdas Paket geladen wird hyperref, enthält die Inhaltsverzeichnisdatei myreport.tocauch Ankernamen. Diese können verwendet werden, um Links zwischen Dokumenten zu erstellen. Beispielsweise die Übersichtsdatei für mein Paket auf CTAN,oberdiek.pdfenthält das Inhaltsverzeichnis aller Pakete im Bundle. Die Quelldateioberdiek.texverwendet diese Technik, siehe die Definition von \tocincludeim Beispiel unten. Natürlich benötigen sowohl myreport.texals auch .myreport-toc.texhyperref

Außerdem wird benötigt:

  • Alle in verwendeten Makros myreport.tocsollten in bereitgestellt werden myreport-toc.tex.

  • Es sollten die gleiche Klasse, die gleichen Schriftarten, das gleiche Seitenlayout usw. verwendet werden.

  • Im Falle der Seitenzahlen verwendet das Beispiel , zrefum die Daten für die Seitenzahlen in die .auxDatei von zu schreiben myreport. Das Label tocschreibt die Seitenzahl für die Startseite des Inhaltsverzeichnisses. Durch die Verwendung des Moduls zref-thepagewird auch das visuelle Erscheinungsbild aller Seitenzahlen im Dokument gespeichert. Die .auxDatei von wird dann von in myreportgelesen .zref-xrmyreport-toc.tex

Datei myreport.tex:

\documentclass{book}
\usepackage{zref-abspage,zref-thepage}
\makeatletter
\newcommand*{\pagevaluelabel}[1]{%
  \zref@labelbyprops{toc}{abspage}%
}
\makeatother
\AtBeginDocument{%
  \addtocontents{toc}{\string\providecommand\string\pagevaluelabel[1]{}}%
  \addtocontents{toc}{\string\pagevaluelabel{toc}}%
}
\usepackage{hyperref}

\setcounter{secnumdepth}{4}

\begin{document}

\frontmatter

Title page
\newpage

\chapter*{Foreword}

\tableofcontents

\mainmatter

\chapter{Chapter}

\section{Section}

\subsection{Subsection}

\subsubsection{Subsubsection}

\end{document}

Datei myreport-toc.tex:

\documentclass{book}
\usepackage{hyperref}
\usepackage{zref-xr}
\zexternaldocument[main:]{test}\relax

\makeatletter
\newcommand*{\tocinclude}[1]{%
  \chapter*{\contentsname
    \@mkboth{\MakeUppercase\contentsname}%
            {\MakeUppercase\contentsname}%
  }%
  \begingroup
    \makeatletter
    \def\@prj{#1}%
    \let\contentsline\foreign@contentsline
    \input{\@prj.toc}%
  \endgroup
}
\def\foreign@contentsline#1#2#3#4{%
  \ifx\\#4\\%
    \csname l@#1\endcsname{#2}{#3}%
  \else
    \ifHy@linktocpage
      \csname l@#1\endcsname{{#2}}{%
        \hyper@linkfile{#3}{\@prj.pdf}{#4}%
      }%
    \else
      \csname l@#1\endcsname{%
        \hyper@linkfile{#2}{\@prj.pdf}{#4}%
      }{#3}%
    \fi
  \fi
}%

\begin{document}
\makeatletter
\zref@refused{main:toc}
\setcounter{page}{%
  \numexpr\zref@extractdefault{main:toc}{abspage}{1}\relax
}
\renewcommand*{\thepage}{%
  \zref@extractdefault{main:thepage\number\value{page}}%
  {page}{\arabic{page}}%
}
\tocinclude{myreport}
\end{document}

Antwort2

Erste Methode (mitshorttoc)

Am einfachsten geht das mit dem Befehl \anothertableofcontentsaus dem Paket, der das Inhaltsverzeichnis aus einer beliebigen Datei shorttoclädt und druckt ..toc

Wenn Ihr Hauptdokument

my-report.tex

\documentclass{article}

\usepackage{blindtext}

\begin{document}    
\tableofcontents    
\blinddocument    
\end{document} 

Erstellen Sie eine my-report-toc.texmit folgendem Inhalt

my-report-toc.tex

\documentclass{article}

\usepackage{shorttoc}
\usepackage{xspace}  % this shouldn't be needed in your document

\begin{document}
\anothertableofcontents{my-report}{Contents}{3}
\end{document} 

Wenn Sie Letzteres kompilieren, my-report-toc.pdfenthält das Ergebnis das Inhaltsverzeichnis von my-report.pdf:

Bildbeschreibung hier eingeben


Zweite Methode (mitpdfpages)

Eine andere Methode besteht darin, das Paket zu verwenden, pdfpagesum nur die Seiten des Inhaltsverzeichnisses in eine andere Datei zu laden. In diesem Fall dürfen die Seiten, die das Inhaltsverzeichnis enthalten, nichts anderes enthalten.

Wenn Ihr Hauptdokument

my-report.tex

\documentclass{article}

\usepackage{blindtext}

\begin{document}    
\tableofcontents 
\clearpage   
\blinddocument    
\end{document} 

Erstellen Sie eine my-report-toc.texmit folgendem Inhalt (ersetzen Sie diesen pages=1durch den tatsächlichen Seitenumfang Ihres Inhaltsverzeichnisses)

my-report-toc.tex

\documentclass{article}

\usepackage{pdfpages}

\begin{document}
\includepdf[pages=1]{my-report.pdf}
\end{document} 

Wenn Sie Letzteres kompilieren, my-report-toc.pdfenthält das Ergebnis das Inhaltsverzeichnis von my-report.pdf:

Bildbeschreibung hier eingeben

Antwort3

Sie können es verwenden, pdfseparateum eine Seite oder einen Seitenbereich aus einer PDF-Datei zu extrahieren.

Angenommen, das Inhaltsverzeichnis ist nur eine Seite lang, versuchen Siepdfseparate -f 2 -l 2 my-report.pdf my-report-toc.pdf

Voraussetzung hierfür ist natürlich, dass Sie wissen, wie viele Seiten das Inhaltsverzeichnis umfasst.

Antwort4

mycontents.tex:

\documentclass{article}
\begin{document}
\section*{My Contents}
\input{mwe.toc}
\end{document}

Wo mwe.tocbefindet sich die Hilfsdatei Ihresbereits zusammengestellt mwe.texHauptdokument im selben Verzeichnis.

Beachten Sie, dass einige Editoren diese Dateien nach dem Kompilieren an einen anderen Ort verschieben oder die Hilfsdateien entfernen können, beim Kompilieren von einem Terminal aus jedoch keine Probleme auftreten.

verwandte Informationen