编写一个包含 \command、{ 和 } 的宏作为参数

编写一个包含 \command、{ 和 } 的宏作为参数

我知道 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 中也指出,参数列表不能包含任何括号。为了解决这个问题,我尝试使用\bgroupand \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

相关内容