如题,请问各位大佬如何在book文档类中实现l3doc中的function环境?
我来给一个非常不成熟的做法。直接搬!
my related question and discussion here~
我的做法是,将l3doc.cls
复制一份,将其后缀名修改为l3doc.sty
,之后注释去Line402的\LoadClass{article}
语句后,将l3doc.sty
置于工作目录下即正常使用\usepackage{l3doc}
.
当然上述的操作是有缺陷的,例如和texmf
树中的l3doc
官方文档类可能存在一定的命名<namespace>冲突,cfr
在上面的链接中指出也是建议修改.sty
名称的(例如将l3doc
改为mydoc
),但在l3doc.cls
中存在较多以l3doc
为类名称的\message
,此处我并没有做修改。
当将修改过后的l3doc.sty
文档放到工作目录后,可以得到:
\documentclass{book}
\usepackage{l3doc}
\usepackage{lipsum}
\begin{document}
\cs{lipsum} some text \cmd{zhlipsum} some text \cs{tl_if_empty:NTF} \meta{tl~var} \Arg{true code} \Arg{false code} some text you can use \cmd{l3doc} like that
\lipsum[1]
\begin{function}{\package_function_one:N, \package_function_two:n}
\begin{syntax}
\cs{package_function_one:N} \meta{cs}
\cs{package_function_two:n} \marg{Argument}
\end{syntax}
Descriptive~text~here~...\lipsum[2]
\end{function}
\vspace*{2ex}
\lipsum[3]
\end{document}
当然,如果你的目标是all stuffs in l3doc
,上面的做法是可行的,你可以使用\cs
,syntax
,function
等所有命令;但是如果你的目标仅仅是提取出function
,上面的不完美做法会存在大量的冗余定义,并不优雅。对于后者的需求需要对l3doc.cls
的代码有更深的认识,之后可以从\DeclareDocumentEnvironment { function }
开始考虑"逆向工程",提取出和此有关的所有代码(但我不会latex3.....短时间内也没空....)另附MWE压缩文件。