答案1
链接的文档来自 TUGBoat 88 (28.2),因此作者很可能使用了该类ltugboat
或ltugboat
包(两者都有)。
命令序列正在用 排版\cs{foo}
,参数可以用[\meta{arg}]
或排版\tubbraced{\meta{arg}}
,当然,这取决于宏的类型。
\cs
定义为:
\DeclareRobustCommand{\cs}[1]{{\tt \char`\\#1}}
\documentclass{ltugboat}
\begin{document}
\cs{pdfbookmark}[\meta{level}]\tubbraced{\meta{text}}\tubbraced{\meta{key}}
\end{document}
例如,以下语法类似ltxdoc.cls
:
\documentclass{ltxdoc}
\begin{document}
\cs{pdfbookmark}\oarg{level}\marg{text}\marg{key}
\end{document}
答案2
这可以处理任意数量的参数:
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\syntax}{mO{}}
{
\group_begin:
\tl_clear:N \l__belford_syntax_args_tl
\normalfont\ttfamily
\token_to_str:N #1
\keys_set:nn { belford/syntax } { #2 }
\tl_use:N \l__belford_syntax_args_tl
\group_end:
}
\NewDocumentCommand{\meta}{m}
{
\group_begin:
\normalfont$\langle$\textit{#1}$\rangle$
\group_end:
}
\tl_new:N \l__belford_syntax_args_tl
\keys_define:nn { belford/syntax }
{
m .code:n = \__belford_syntax_addarg:nnn { \symbol{`\{} } { \symbol{`\}} } { #1 },
o .code:n = \__belford_syntax_addarg:nnn { [ } { ] } { #1 },
p .code:n = \__belford_syntax_addparg:nn #1,
}
\cs_new_protected:Nn \__belford_syntax_addarg:nnn
{
\tl_put_right:Nn \l__belford_syntax_args_tl { #1 \meta{#3} #2 }
}
\cs_new_protected:Nn \__belford_syntax_addparg:nn
{
\tl_put_right:Nn \l__belford_syntax_args_tl { ( \meta{#1} , \meta{#2} ) }
}
\ExplSyntaxOff
\NewDocumentCommand{\pkg}{m}{\textsf{#1}}
\begin{document}
For this \pkg{hyperref} provides
\syntax{\pdfbookmark}[o=level,m=text,m=key]
We also have
\begin{itemize}
\item \syntax{\makebox}[o=width,o=char,m=text]
\item \syntax{\makebox}[p={x}{y},o=char,m=text]
\end{itemize}
\end{document}
对于实际示例,您可以直接使用\verb
。