De acuerdo aUsando archivos externos .toc, el siguiente archivo debería mostrar la tabla de contenidos dos veces:
\documentclass{report}
\begin{document}
\tableofcontents
\chapter*{Contents (manual input)}
\makeatletter
\input{\jobname.toc}
\makeatother
\chapter{Foo}
\section{Bar}
\end{document}
pero la entrada manual de \jobname.toc
está vacía.
Si \jobname.toc
existe (por ejemplo, después de una primera compilación del .tex
archivo anterior), esta entrada manual proporciona el resultado esperado (no vacío) tan pronto como se elimina o comenta:
- cualquiera
\tableofcontents
, - o
\chapter{Foo}
.
¿Entiendes lo que está pasando?
Respuesta1
La pregunta vinculada trataba sobre cómo ingresar un .toc
archivo relacionado con undiferentedocumento.
En el momento en que lo usa, \input{\jobname.toc}
seguramente está vacío, porque \tableofcontents
lo ingresa y luego abre el archivo para escribir en él, borrándolo así.
Luego, el .toc
archivo se vuelve a llenar al finalizar el documento.
Eche un vistazo al shorttoc
paquete que debería resolver su problema real.
Sin embargo, es fácil resolver el problema retrasando la apertura del archivo para escribirlo al final del documento.
\documentclass{report}
\usepackage{atveryend}
\makeatletter
\def\@starttoc#1{%
\begingroup
\makeatletter
\@input{\jobname.#1}%
\if@filesw
\AfterLastShipout{%
\@ifundefined{tf@#1}{%
\expandafter\newwrite\csname tf@#1\endcsname
\immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
}{}%
}%
\fi
\@nobreakfalse
\endgroup}
\makeatother
\begin{document}
\tableofcontents
\chapter*{Contents (manual input)}
\InputIfFileExists{\jobname.toc}{}{Missing toc}
\setcounter{tocdepth}{0}
\renewcommand{\contentsname}{Short contents}
\tableofcontents
\chapter{Foo}
\section{Bar}
\end{document}
Verás que puedes ingresar la tabla de contenido tantas veces como quieras; \InputIfFileExists
Se debe utilizar, porque .toc
es posible que aún falte el archivo.
Respuesta2
\tableofcontents
ingresa el toc pero luego lo abrepara la escrituraentonces esto elimina el original, entonces usted ingresa un archivo mientras escribe en él, por lo que está sujeto al almacenamiento en búfer de archivos del sistema operativo.
Respuesta3
Si usa la memoir
clase (una clase expandida book
y report
), el archivo toc no se elimina ni se vuelve a llenar hasta el final del documento, por lo que puede colocar tantos tocs como desee en todo el documento.