我用它l3doc
来记录一些软件包(我知道它不是官方稳定的,但我喜欢它……)。我遇到了一个问题,如果其中一个项目是以反斜杠开头的宏,则{function}{<list>}
需要为每个项目添加一个反斜杠。<list>
\documentclass{l3doc}
\begin{document}
\begin{function}{{environment}}
Description
\end{function}
\begin{function}{\command}
Description
\end{function}
\begin{variable}{counter}
Description
\end{variable}
\begin{function}{{environmentII}, counterII, \commandII}
Description for multiple items
\end{function}
\begin{macro}{{environment}}
Definition
\end{macro}
\begin{macro}{\command}
Definition
\end{macro}
\begin{macro}{counter}
Definition
\end{macro}
\begin{macro}{{environmentII}, counterII, \commandII}
Description for multiple items
\end{macro}
\end{document}
该示例显示,使用单个项目<list>
可以按预期工作,但只要我将宏添加到列表中,所有项目都会反斜杠.{macro}
没有显示此行为...
有没有什么办法可以防止这种情况发生?
答案1
在我看来,你只是误用了环境。预期的参数要么是函数,要么是函数列表。但你传递的列表中的元素都不是 l3 意义上的函数。(但环境可能也适用于文档级命令 - 见下文。在这种情况下,一些您传递的内容是函数,但不是其他内容。)
请注意,即使在您说它按预期工作的情况下,您也无法获得一致格式化的项目。例如,您会以counter
衬线字体(而不是打字机字体)格式化,因为它看起来不像解析器的变量。(\l_tobi_counter_int
可能在这里有效并且是 l3 等效项。)
定义提供的各种环境的代码l3doc根据环境想要记录的事物类型的预期语法处理参数。
例如,function
环境会在逗号分隔列表中的每个元素中查找:
,以便将名称与其参数的规范分开。然后,系统会自动以标准方式处理和格式化此信息。
例如,
\begin{function}{\Tobi_function_one:nn, \Tobi_function_one:Vn, \Tobi_function_one:VV}
Description for multiple items
\end{function}
将检测到它正在处理同一函数的三个变体,即以通常方式生成基本函数变体的情况。然后,它将第一个格式化为基本变体,将其余两个格式化为变体,将它们组合起来并区分它们不同的参数说明符。
逗号分隔列表适用于列出的项目是主题上的细微变化的情况,例如具有不同参数规范的相同函数或某种变体形式。但环境、计数器和宏不属于这种类型,不应以这种方式组合在一起。
我不太确定macro
应该用它做什么。我找不到太多关于l3doc并且我无法从 l3 文档来源中弄清楚到底有什么区别。
我的第一个想法是macro
可能是用于文档级命令,但尽管我上面说了,解析的文档用于function
记录文档级命令。这让我很困惑,因为我不认为这些命令是功能一点也不。我认为这是区分文档级内容和较低级别的 l3 内容的想法的一部分,并且“函数”仅适用于后者。但我显然弄错了。(当然,这macro
也不一定有太大意义,因为函数肯定是宏。)
这是我正在玩的示例代码。
\documentclass{l3doc}
\begin{document}
\begin{function}{\Tobi_function_prior:n}
Description
\end{function}
\begin{function}{\command:}
Description
\end{function}
\begin{variable}{\l_Tobi_variable_tl}
Description
\end{variable}
\begin{function}{\Tobi_function_one:nn, \Tobi_function_one:Vn, \Tobi_function_one:VV}
Description for multiple items
\end{function}
\begin{function}{\TobiDocumentCommand}
\begin{syntax}
\cs{TobiDocumentCommand}\marg{mandatory argument}
\end{syntax}
\end{function}
\end{document}