在 \edef 的替换文本中使用 \dots 似乎会破坏 \dots 宏以供以后使用

Using \dots inside replacement text of \edef seems to break the \dots macro for later use

我在 LaTeX 中遇到了一个奇怪的问题,如下面的最小示例所示:

\documentclass{article}
\begin{document}
% 1: (\dots)

\edef\sameasdots{\dots}
2: (\sameasdots)

3: (\dots)
\end{document}

给出输出

2: (...)
3: (.)

使用宏 \sameasdots 会破坏 \dots 宏,它之后只显示一个点。

但是如果我取消注释第 3 行,即在 \sameasdots 之前至少使用 \dots 一次,问题就不会出现。它只会与 \edef 结合使用,而不是与 \def 结合使用,因此一个明显的解决方法是使用 \def 代替。但我需要 \edef 因为在我的用例中我在 for 循环中定义宏,它提供替换文本作为宏,必须在定义时替换。

是否有人知道导致此行为的原因以及它是否是错误?我正在使用 pdfLaTeX。

您可以使用 \protected@edef 而不是 \edef,请参阅 http://www.texfaq.org/FAQ-edef 了解更多详情。

\documentclass{article}

\begin{document}
 1: (\dots)

\makeatletter
\protected@edef\sameaasdots{\dots}
\makeatother
2: (\sameaasdots)

3: (\dots)
\end{document}