所以我想知道是否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
,因为这可能会产生一些输出!打印所有匹配的文件名、行号和两行上下文(标签突出显示)。