我知道 TeX 宏参数可以使用适当的分隔符进行解析。正如 TeXbook 中的经典示例所示,
同样,我尝试定义一个宏(出于某些特殊目的,以下实际上是我的情况的一个更简单的场景),
\documentclass{article}
\def\mycommand\cone\bgroup#1\egroup\ctwo #2.#3\end{#1:#2:#3}
\begin{document}
\mycommand\cone{One}\ctwo Two.Three\end
\end{document}
其中,\cone
和\ctwo
是使用/系统定义的宏,我对这些定义不感兴趣,而是想忽略它们。我感兴趣的是三个参数。
现在,当我尝试编译上述文件时,我收到错误消息,
! Use of \mycommand doesn't match its definition.
l.10 \mycommand\cone{
One}\ctwo Two.Three
这就是我陷入困境的地方。
请注意“ \cone{One}\ctwo Two.Three
”部分是不可更改的。因此,任何建议的更改都必须在 的定义中进行
\mycommand
。
我知道 TeXbook 中也指出,参数列表不能包含任何括号。为了解决这个问题,我尝试使用\bgroup
and \egroup
。
答案1
\def\mycommand\cone\bgroup#1\egroup\ctwo #2.#3\end{#1:#2:#3}
需要明确\bgroup
。似乎你想要
\def\mycommand\cone#1\ctwo #2.#3\end{#1:#2:#3}
然后
\mycommand\cone{One}\ctwo Two.Three\end
或者
\mycommand\cone One\ctwo Two.Three\end
会有#1
=One