Exportar solo tabla de contenidos

Exportar solo tabla de contenidos

¿Cuál sería la forma preferida de exportar lo que Table of contentsuso en un .texarchivo a otro separado .pdf?

Actualmente tengo un my-report.texarchivo y deseo emparejar el resultado de pdflatex( my-report.pdf) con my-report-toc.pdf, que contiene solo la tabla de contenido.

¿Existe una manera sencilla de lograr esto?


Mi .texarchivo tiene este tipo de diseño (simplificado):

...
\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}
...

Respuesta1

extracción de PDF

Se pueden utilizar herramientas externas para extraer páginas del archivo PDF, por ejemplo pdftk. Si el índice está en las páginas 5 y 6:

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

\include

Si el documento principal está separado en varios \includearchivos, entonces \tableofcontentsva a un archivo separado myreport-tableofcontents.tex:

\tableofcontents
\newpage

y myreport.texpara incluir su toc:

\include{myreport-tableofcontents}

Luego myreport-toc.texsolo incluye el índice:

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

Con hyperrefy enlaces

Si myreport.texcarga el paquete hyperref, entonces el archivo de tabla de contenidosmyreport.toc también contiene nombres de anclaje. Eso se puede utilizar para hacer enlaces entre documentos. Por ejemplo, el archivo de descripción general de mi paquete en CTAN,oberdiek.pdfIncluye la tabla de contenidos de todos los paquetes del paquete. El archivo fuenteoberdiek.texutiliza esta técnica, consulte la definición de \tocincludeen el siguiente ejemplo. Por supuesto que ambos myreport.texy myreport-toc.texnecesitan hyperref.

También se necesita:

  • Cualquier macro utilizada myreport.tocdebe proporcionarse en formato myreport-toc.tex.

  • Se debe utilizar la misma clase, fuentes, diseño de página,….

  • En el caso del número de página, el ejemplo utiliza zrefpara colocar los datos de los números de página en el .auxarchivo de myreport. La etiqueta tocescribe el número de página de la página de inicio de la tabla de contenido. Al utilizar el módulo, zref-thepagetambién se recuerda la apariencia visual de todos los números de página del documento. Luego, el .auxarchivo de myreportse lee zref-xren myreport-toc.tex.

Archivo 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}

Archivo 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}

Respuesta2

Primer método (conshorttoc)

El método más sencillo es utilizar el comando \anothertableofcontentsdel shorttocpaquete, que carga e imprime la ToC desde un .tocarchivo arbitrario.

Si su documento principal es

my-report.tex

\documentclass{article}

\usepackage{blindtext}

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

crear un my-report-toc.texcon el siguiente contenido

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} 

Al compilar este último, el resultado my-report-toc.pdfcontendrá el ToC de my-report.pdf:

ingrese la descripción de la imagen aquí


Segundo método (conpdfpages)

Otro método es utilizar el pdfpagespaquete para cargar sólo las páginas del ToC en un archivo diferente. En este caso, las páginas que contienen el ToC no deben contener nada más.

Si su documento principal es

my-report.tex

\documentclass{article}

\usepackage{blindtext}

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

cree un my-report-toc.texcon el siguiente contenido (reemplace pages=1con el rango real de páginas de su ToC)

my-report-toc.tex

\documentclass{article}

\usepackage{pdfpages}

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

Al compilar este último, el resultado my-report-toc.pdfcontendrá el ToC de my-report.pdf:

ingrese la descripción de la imagen aquí

Respuesta3

Puede utilizar pdfseparatepara extraer una página, o un rango de páginas, de un archivo pdf.

Suponiendo que el índice tiene sólo una página, intentepdfseparate -f 2 -l 2 my-report.pdf my-report-toc.pdf

Por supuesto, esto requiere que sepas cuántas páginas ocupa el índice.

Respuesta4

mycontents.tex:

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

Dóndemwe.toc está el archivo auxiliar de suya compilado mwe.texdocumento principal en el mismo directorio.

Tenga cuidado que algunos editores pueden mover estos archivos a otro lugar o eliminar los archivos auxiliares después de compilar, pero no hay problemas al compilar desde una terminal.

información relacionada