如何调用同时具有逐字参数和普通参数的命令?

如何调用同时具有逐字参数和普通参数的命令?

这是代码:

\documentclass{article}
\NewDocumentCommand\foo{v}{\texttt{#1}}
\AtBeginDocument{\catcode`\|\active\def|{\foo|}}
\begin{document}
Hello, \foo{world}, |world|!
\end{document}

它不能编译:

! Missing control sequence inserted.
<inserted text>
                \inaccessible
l.12 \begin{document}

如何解决这个问题?我希望能够调用\foo{world}|world|并使它们到达相同的\foo命令。

答案1

在您的设置中,您已将其标记|为“其他”角色。您需要确保在处于活动状态\def|时发生这种情况|。有几种方法,例如

\documentclass{article}
\NewDocumentCommand\foo{v}{\texttt{#1}}
\catcode`\|\active
\AtBeginDocument{\catcode`\|\active\def|{\foo|}}
\catcode`\| 12 %
\begin{document}
Hello, \foo{world}, |world|!
\end{document}

相关内容