我正在寻找一个可以查找所有包中的所有命令的编辑器或文档浏览器,例如,我想要查找“whiledo”,然后弹出一个窗口或窗格,其中包含所需的参考信息。此外,有人会忘记命令,因此输入“循环命令”会很有帮助,然后会显示可能的命令列表。
texdoc
不会这样做,因为它需要包名称。
Perl pod 浏览器就是这样工作的。
答案1
这也不是完整的答案,但是如果你使用
find /usr/local/texlive/2011/texmf-dist/source/ -name "*.dtx" -exec grep -q "\\\DescribeMacro{.*whiledo.*}" {} \; -print | xargs -n 1 basename | xargs -n 1 bash -c 'texdoc "${0%.dtx}"'
在 unixoid shell 中(当然,您应该安装了源,并且需要将其放在正确的发行版路径下),ifthen 包的文档将会弹出。
对于常规使用,你可能希望创建一个名为的 shell 脚本,例如lookuptexdoc.sh
包含
#!/bin/bash
find /usr/local/texlive/2011/texmf-dist/source/ -name "*.dtx" -exec grep -Eq "\\\DescribeMacro{.*$1.*}|\\\DescribeEnv{.*$1.*}" {} \; -print | xargs -n 1 basename | xargs -n 1 bash -c 'texdoc "${0%.dtx}"'
然后通过调用,lookuptexdoc.sh comment
您将获得定义名称包含“注释”的命令或环境的所有包的文档。
当然,这还可以更加完善,到目前为止我还不是一个熟练的 shell 程序员。
答案2
这不是一个完整的答案,但在 Linux 下,很容易找到包含、、或后跟宏名的.sty
文件(即包) 。例如,以下 shell 命令成功返回该宏在文件中定义。只是,您可能需要根据您的 Linux 设置修改 shell 命令不同位置的数量。\def
\edef
\xdef
\gdef
\let
\linenumbers
lineno.sty
\
grep -l '\\\(def\|edef\|let\|gdef\|xdef\)\\linenumbers[^a-z@]' \
`find /usr/share/texmf -regex '.*\.sty\|.*\.cls'`
当然,您可能会碰巧得到更多积极的文件,例如,该命令\tag
在 4 个不同的文件中定义,并且宏\reserved@a
被定义了很多次,因为它是一个流行的本地“宏变量”名称。