De acordo comUsando arquivos externos .toc, o arquivo a seguir deverá exibir o índice duas vezes:
\documentclass{report}
\begin{document}
\tableofcontents
\chapter*{Contents (manual input)}
\makeatletter
\input{\jobname.toc}
\makeatother
\chapter{Foo}
\section{Bar}
\end{document}
mas a entrada manual de \jobname.toc
está vazia.
Se \jobname.toc
existir (por exemplo, após uma primeira compilação do .tex
arquivo anterior), esta entrada manual fornece o resultado esperado (não vazio) assim que for removido ou comentado:
- qualquer
\tableofcontents
, - ou
\chapter{Foo}
.
Você entende o que está acontecendo?
Responder1
A pergunta vinculada era sobre como inserir um .toc
arquivo relacionado a umdiferentedocumento.
No momento em que você utiliza \input{\jobname.toc}
ele certamente está vazio, pois \tableofcontents
o insere e depois abre o arquivo para escrever nele, limpando-o assim.
O .toc
arquivo é então preenchido novamente no documento final.
Dê uma olhada no shorttoc
pacote que deve resolver seu problema real.
Porém, é fácil resolver o problema, atrasando a abertura do arquivo para escrita no documento final.
\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}
Você vê que pode inserir o índice quantas vezes quiser; \InputIfFileExists
deve ser usado, porque o .toc
arquivo ainda pode estar faltando.
Responder2
\tableofcontents
insere o toc, mas depois o abrepara escreverentão isso exclui o original, então você insere um arquivo enquanto grava nele, então você está sujeito ao buffer de arquivos do sistema operacional.
Responder3
Se você usar a memoir
classe (uma classe expandida book
e report
) o arquivo toc não será excluído e preenchido novamente até o final do documento, então você pode colocar quantos tocs quiser ao longo do documento.