为什么在 renewcommand 中添加空格不起作用?

为什么在 renewcommand 中添加空格不起作用?

我正在寻找一种在量词后添加一些空格的方法,并找到了答案排版量词的最佳实践?。以下 MWE 运行完美:

\documentclass[]{article}
\usepackage{amssymb}

\let\existstemp\exists
\let\foralltemp\forall
\renewcommand*{\exists}{\existstemp\,}
\renewcommand*{\forall}{\foralltemp\,}
\newcommand{\N}{\mathbb N}

\begin{document}
$\forall m \in \N, \exists n \in \N\colon m < n$
\end{document}

然而,在我第一次尝试解决问题时,我尝试

\documentclass[]{article}
\usepackage{amssymb}

\renewcommand*{\exists}{\exists\,}
\renewcommand*{\forall}{\forall\,}
\newcommand{\N}{\mathbb N}

\begin{document}
$\forall m \in \N, \exists n \in \N\colon m < n$
\end{document}

但这会导致 LaTeX 崩溃。

为什么这不起作用?我的解决方案是最短/最干净的吗?

答案1

TeX 是一种宏扩展语言。

如果你定义

 \renewcommand*{\exists}{\exists\,}

然后当\exists遇到时,它会被替换文本替换,然后处理再次开始,

\exists

变成

\exists\,

变成

\exists\,\,

变成

 \exists\,\,\,

依此类推,直到用完输入堆栈。

相关内容