公式后带有一个可选参数的空命令会导致额外的水平缩进

公式后带有一个可选参数的空命令会导致额外的水平缩进

考虑以下最小示例:

\documentclass{minimal}
\newcommand{\CMDI}[1]{}
\newcommand{\CMDII}[2][]{}
\begin{document}
    \begin{equation}
        3.14
    \end{equation}
    \CMDII[optional]{main}
    A sentence which is so long that it does not fit on one line and continues on another line and which would be even longer if I was more creative.
    \begin{equation}
        3.14
    \end{equation}
    \CMDI{main}
    A sentence which is so long that it does not fit on one line and continues on another line and which would be even longer if I was more creative.
\end{document}

它给出了以下pdf:

PDF

为什么第一个“A”之前有多余的空格?我该如何通过修改 的定义来删除它\CMDII?谢谢!

我的动机:我使用带有可选参数的自定义命令在草稿中插入注释,并且不想在最终版本中显示它们,同时将它们保留在源代码中。

答案1

这是由于一个特殊功能造成的:TeX 在完成数学显示时会进行一些宏扩展,而在第二种情况下,\CMDI{}宏扩展为零并消失,就像从未存在过一样。事实上,如果您尝试使用\relax\CMDI{},就会出现虚假的空间。

它从何而来? 前面提到的扩展用于抑制 后的结束行产生的空格\end{equation}。 然而,在 的情况下\CMDII,该命令不是完全可扩展的,因此 后的结束行{}会产生空格。

解决方案:

\newcommand{\CMDI}[1]{\ignorespaces}
\newcommand{\CMDII}[2][]{\ignorespaces}

在此处输入图片描述

相关内容