我有一个 .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 "{}"