获取 tex 文档中所有标签的列表?

获取 tex 文档中所有标签的列表?

所以我想知道是否pdflatex正在写文档中使用的所有标签main.tex

当你处理像博士论文这样长达一百页的文档时,人类不可能记住所有的参考文献并指向它们:0!

我遇到了 Tex 编辑器能够恢复文档的所有标签
如何在 WinEdt 中获取 LaTeX 文档中所有标签的列表

但我想有人可能也希望在不滚动文本代码、切换编辑器或移动到窗口的情况下获取标签。这让我吹掉了手册上的灰尘,并编写了下面的小脚本,但仍然……

悬而未决的问题:
tex 没有提供这样做的方法吗?

答案1

.aux所有标签都以 开头的行写入文件\newlabel。该机制描述于这个答案。因此,查找文件\newlabel中的所有实例.aux将为您提供所需的信息。

如果使用该.aux文件作为参考,请以新名称复制它并使用该副本,因为一旦重新编译源文件,“原始文件”就会消失。

如果您使用的是 *nix 系统,则可以启动(或编写脚本)命令。这将生成一个仅包含文件中行的grep \\newlabel *aux | main-labels.txt新文件。然后可以将其用作参考。\label,aux

@Sveinung 对这个问题的评论为 Windows 提供了类似的方法。

最后,有两个包可以在文档中定义标签值的页面上打印出标签值:

  • showlabels

  • showkeys

\ref这两个包都会报告由或(及其朋友)访问的标签的值\cite。两者都提供了包含或排除特定类型标签的选项,以及指定在输出中放置报告标签的位置的选项。(有关详细信息,请参阅包文档。)

答案2

一个好的旧 shell 解决方案:)

#! /usr/bin/sh
match="grep -THn -A 2 --colour" 
pattern='\\label{.*}'

find $1 -name "*.tex" | xargs -n 1 $match $pattern 

编辑:传递一个可选的目录参数:$ ./labels.sh chapX,因为这可能会产生一些输出!打印所有匹配的文件名、行号和两行上下文(标签突出显示)。

相关内容