![使用l3doc编写LaTeX文档时的索引问题](https://linux22.com/image/266483/%E4%BD%BF%E7%94%A8l3doc%E7%BC%96%E5%86%99LaTeX%E6%96%87%E6%A1%A3%E6%97%B6%E7%9A%84%E7%B4%A2%E5%BC%95%E9%97%AE%E9%A2%98.png)
我过去常常l3doc
为我的包写文档。在文档中我需要描述包的宏、环境和选项。我开始function
只使用环境。在@egreg(谢谢!)给出提示后,我找到了环境environment
。由于我找不到文档l3doc
。我遇到了更多问题。这是一个例子:
\documentclass{l3doc}
\usepackage{lipsum} % to generate some text
\begin{document}
\lipsum
\begin{function}{\macro}
this is a macro.
\end{function}
\begin{environment}{env}
this is an env.
\end{environment}
\begin{function}{opt}
\begin{syntax}
opt = \meta{a}
\end{syntax}
this is an opt.
\end{function}
\PrintIndex
\end{document}
我使用下面的命令来编译它:
pdflatex example
makeindex -s l3doc.ist example
pdflatex example
pdflatex example
结果如下:
存在几个问题:
- 您可以看到该条目
env
重复了两次。 - 条目的页码
env
错误。 - 该条目应在而不是
opt
下进行索引。由于它是一个选项而不是环境,因此我无法使用。我需要。O
P
environment
syntax
谢谢你的帮助。
答案1
问题在于,这l3doc
实际上在某种程度上是项目内部的问题,而不是我们认为的稳定或正确记录的问题——简而言之,它是一堆用于文档的黑客和附加组件,我们对其进行了试验并发现它们对我们自己的东西很有用,但从未完成并为其编写适当的文档。
您可以通过排版找到那里的文档,l3doc.dtx
但您就会明白我的意思:用户界面中并非记录了所有内容,代码大部分没有注释或附加信息。尽管如此,它可能会为您提供一些额外的信息,但请注意,我们可能会更改或添加这些界面。
至于您上面的问题:l3doc.ist
在将 levelchar 设置为 时出现/存在错误,#
但是代码仍然假设 levelchar 为>
。在内部,我们已停止使用l3doc.ist
,而是使用gind.ist
LaTeX2e 发行版。如果您使用它,或更正 levelchar,l3doc.ist
您将看到env
条目正确显示,仍然会有 2 个条目,但其中一个是主标题“环境”下的子条目。
至于opt
: 您使用的问题function
,但那只是用于命令,它只是出于排序目的而删除第一个字符,假设它是反斜杠;因此您的条目在第二个字符“p”下排序。您运气不好,我们没有用于记录选项的环境。
目前有\DescribeOption
命令,但仅此而已,我们不确定这个命令是否能在以后的版本中继续存在。
更新
我刚刚意识到我没有回答第二个问题:“为什么env
显示的页码是“1”而不是2?”
嗯,它不是,它显示的代码行号为 1(直立数字),而不是使用默认包约定的页码doc
。换句话说,这是一个代码文档环境,而不是用户界面描述环境。
基本上是一个缺陷(如果不是错误的话)让我们回到这一点,这实际上不是一个成品......但很明显我们应该对此做些什么。