是否有可用资源列出 CTAN(或其他 TeX 托管站点)上每个包可用的控制序列/命令?
我知道它们显示在文档 PDF 中,但查看并生成列表相当繁琐。
另外,为什么提交包时不需要这个?如果包编写者知道定义了哪些命令以及在哪里定义,这似乎会非常有帮助。
答案1
我同意上述评论的怀疑态度——我不认为这样的列表在现实生活中有什么用处。不过,为了好玩,这里有一个小的 bash 脚本,尝试列出所有本地安装的*.sty
文件中的所有命令。
#!/bin/bash
# search file system for all latex package files
packages=$(sh -c "find / -name '*.sty' | grep -oE '/([^/]+)/[^/]+\.sty$' | cut -f2 -d'/' | sort | uniq" 2>/dev/null)
# iterate over all packages to list their macros.
for package in $packages; do
# run Martin Scharrer's `latexdef` on each package name to list the
# commands defined therein. The loop hangs on arsclassica, so we
# skip it.
if [ $package != "arsclassica" ]; then
echo "package: $package"
latexdef -l -p $package
fi
done
请注意,latexdef
在每个包上调用 TeX,有时它不能正常工作,并且您会收到编译错误消息。您还会收到一些空行,因此您必须过滤输出。此外,似乎编译器在latexdef
尝试处理包时会挂起arsclassica
,因此我手动将其排除。由于我只让脚本运行到以字母开头的包名称c
,因此很可能会发生更多挂起,并且需要更多豁免。
还请注意,这不包括*.cls
或可能包含命令定义的其他文件。