[Tex/LaTex] Automatically produce outline

sectioningtable of contents

I have a .tex document which is divided into \section, \subsection, \subsubsection, etc. I would like to produce a separate second document which is an outline of this first document. What's the best way to do this?

Of course, it would be fairly trivial to write a script to extract the section headings–presumably this exists already?

Or I could just put in a temporary \tableofcontents and then extract this from the resulting PDF.

(I'm using LyX as a TeX front-end, so if this exists in LyX, that would be helpful too. I know there's an outline viewer in LyX, but I don't see a feature to export this outline.)

Best Answer

LaTeX generates a file with the extension .toc which contains the required TOC commands. You could simply include that file into an outline document.

So, let's say, your main document is called main.tex. The file containing the table of contents is then main.toc. Create a new document outline.tex, within that use \input{main.toc}. Use makeatletter and \makeatother for the case that the .toc file might contain internal macros, such as \select@language {english} of babel. Group those actions to keep settings local. For the outline, you might wish to use the same settings respectively preamble like your main document does.

So, this could be such an outline document:

\documentclass{article}
% your preamble settings you wish to keep: fonts etc.
\begin{document}
\begingroup
\section*{\contentsname}
\makeatletter
\input{main.toc}
\makeatother
\endgroup
\end{document}

Looking at two places might further be useful in this matter:

  • the definition of \tableofcontents in your document class file
  • the definition of \@starttoc within latex.ltx or in a customized class/package.

Of course this works also for lists of tables and figures.