expl3
我正在为使用中实现的包编写文档ltxdoc
,相关部分如下所示
% \begin{macro}{\conteq_args_once}
% Some explanation
%
% \begin{macrocode}
\cs_new:Npn \conteq_args_once:Nn #1#2 {
\exp_not:o {#1 {#2}}
}
\cs_generate_variant:Nn \conteq_args_once:Nn {NV}
% \end{macrocode}
% \end{macro}
不幸的是,这给了我
! Missing $ inserted.
<inserted text>
$
l.385 % \begin{macro}{\conteq_args_once}
但\conteq\_args\_once:Nnn
也不起作用。如何正确注释此类函数的文档?
答案1
虽然您可以启动 formltxdoc
并“自行开发”,但建议使用l3doc
,这是 LaTeX 团队为expl3
自己使用的类。目前这是一个相当大的 hack 集合,但确实可以正确处理_
名称之类的内容,并且还提供了比 更丰富的文档环境ltxdoc
。遗憾的是,l3doc
缺乏真正全面的文档:正如我所说,它的内部并不完美!l3doc.dtx
但是,您可以排版以至少获取一些信息。
也许掌握这些知识的最好方法是查看一些 LaTeX3 源代码。我建议避免使用l3doc.dtx
本身和,l3bootstrap.dtx
因为它们并不常见:像 这样的代码可能是更好的选择。(除了 的使用之外,源代码还展示了团队标准化的“内部风格”。我们热衷于鼓励将其作为一种更通用的“代码风格”:虽然您可能不完全同意每个决定,但从长远来看,如果大多数代码无论作者是谁都看起来一样,那就太好了,因为这将有助于维护。)l3names,dtx
l3basics.dtx
l3clist.dtx
l3doc
expl3
expl3
答案2
答案3
我最近遇到了同样的问题,并看到了这篇文章。虽然最好采用l3doc
另一个更高级的类,但现在我需要一个快速解决方案,因为我没有时间深入研究另一个文档类。对于那些处于相同情况的人:您可以添加
\def\MakePrivateLetters{
\catcode`\@=11\relax
\catcode`\_=11\relax
\catcode`\:=11\relax
}
放入 dtx 文件中的驱动程序代码的前导码中,然后expl3
名称就不再是问题了。