这是代码:
\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}