\newcommand 的扩展

\newcommand 的扩展

我遇到的问题肯定是由于我对、、、等工作方式的细节缺乏了解\newcommand,尽管\def我在使用该包时碰巧遇到了这个问题。\edef\letfnpct

下面是带有输出的 MWE(实际的脚注已被抑制以节省空间)。

\documentclass{article}

\usepackage{fnpct}

\newcommand{\comma}{,}

\begin{document}

Hello\footnote{This is a footnote}, World!

Hello\footnote{This is another footnote}\comma again!

\end{document}

平均能量损失

目标是让两种情况产生相同的输出(嗯,无论如何都是脚注和逗号的输出)。(由于 MWE 中未给出的原因,不使用该\comma命令不是一种选择。)

我的理解是,该fnpct包重新定义了\footnote命令以读入紧跟脚注的内容并相应地进行排版。在第二种情况下,似乎它将读入\comma而不是,,因此不会正确更改其排版方式。有没有办法可以定义一个\comma命令,以便它在“实际”编译时之前仅替换所有实例\comma,(我想到的是类似于#defineC 中的编译器指令。)或者也许还有其他方法可以实现所需的结果?

更新:按照 clemens 的建议更改\newcommand{\comma}{,}为并立即\newcommand{\comma}{,\ }添加行,将产生以下输出。这修复了逗号和脚注的顺序,但仍然存在空格和脚注的顺序问题。\setfnpct{add-punct-marks=\comma}\begin{document}

微波辐射计

答案1

在此处输入图片描述

\comma again空格从未被标记的情况下,它只是被吸收为命令名称的终止符,如果不存在,则输入将\commaagain引用未定义的命令commaagain。这与逗号无关,只是 TeX 语法。

解决方案不是(出于多种原因)在 的定义中添加空格,\comma因为通常它会在不需要的地方添加空格,如您所见。最好更正标记,以便在需要空格的位置添加空格标记,所以\comma{} again在这里。

使用正确的输入语法,声明克莱门斯建议产生上述输出。

\documentclass{article}

\usepackage{fnpct}

\newcommand{\comma}{,}
\setfnpct{add-punct-marks=\comma}

\begin{document}

Hello\footnote{This is a footnote}, World!

Hello\footnote{This is another footnote}\comma{} again!

\end{document}

相关内容