CTAN 包中定义的命令列表

CTAN 包中定义的命令列表

是否有可用资源列出 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或可能包含命令定义的其他文件。

相关内容