自动产生轮廓?

自动产生轮廓?

我有一个 .tex 文档,它被分成\section\subsection\subsubsection等。我想生成一个单独的第二个文档,它是一个大纲这是第一份文档。最好的方法是什么?

当然,编写一个脚本来提取章节标题是相当简单的——想必这已经存在了?

或者我可以只放入临时文件\tableofcontents然后从生成的 PDF 中提取它。

(我正在使用 LyX 作为 TeX 前端,所以如果 LyX 中有这个功能,那也会很有帮助。我知道 LyX 中有一个轮廓查看器,但我没有看到可以出口本大纲。

答案1

LaTeX 会生成一个扩展名为的文件.toc,其中包含所需的 TOC 命令。您可以简单地将该文件包含到大纲文档中。

假设您的主文档名为 main.tex。包含目录的文件名为 main.toc。在其中创建一个新文档 outline.tex,使用。如果 .toc 文件可能包含内部宏(例如 babel 的宏),则\input{main.toc}使用makeatletter和。将这些操作分组以保持设置本地化。对于大纲,您可能希望像主文档一样分别使用相同的设置和序言。\makeatother\select@language {english}

因此,这可能是一份这样的大纲文件:

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

在这个问题上,查看两个地方可能会有所帮助:

  • \tableofcontents文档类文件中的定义
  • 在自定义类/包\@starttoc内或中的定义。latex.ltx

当然,这也适用于表格和图形列表。

答案2

只需使用 grep 就可以很好地完成工作:

grep "\section" 文档.tex

答案3

我来这里是为了寻找非常这是此脚本的简单版本,它只会将大纲写入 stdout。我在 1986 年左右看到过一个,但现在找不到等效版本,所以我自己编写了一个小型 shell 脚本。它可以改进,例如,如果它获取了错误的参数数量,则可以执行一些智能操作,或者处理书籍中的 \part 和 \chapter(如果您相信的话,我猜还有 \subparagraph{}),但就今天而言,这已经足够好了。

#!/bin/sh
#Extract an outline from a LaTeX file
grep -e "section{" \
     -e "paragraph{" \
     $1 \
| sed -e "s/label sxn.*$//" \
      -e "s/\\\subsubsection/      /" \
      -e "s/\\\subsection/    /"  \
      -e"s/\\\section/  /" \
      -e "s/\\\paragraph/        /" \
      -e"s/\\\label.*$//" \
| tr -d "{}"

相关内容