TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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.)

share|improve this question
up vote 15 down vote accepted

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:

% your preamble settings you wish to keep: fonts etc.

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.

share|improve this answer
thanks for your answer! – Tobin Fricke Dec 8 '10 at 20:34
@Tobin: If it helped, it would be great if you would mark the answer as "accepted" by clicking the tick (check mark) at the left. – Stefan Kottwitz Mar 15 '11 at 17:18

Simply using grep gets the job done pretty well:

grep "\section" document.tex

share|improve this answer
Escaping is not needed within double quotes. – Tobin Fricke Dec 9 '10 at 17:58
I would go for "section{", to also get subsections (yes, I'm too lazy to figure out the right syntax for \\(sub)*section.) – Bruno Le Floch Mar 13 '11 at 17:35

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.