没有参数的宏后面没有空格

没有参数的宏后面没有空格

使用如下宏:

\def\naive{na\"{\i}ve}

我发现,我希望紧随其后的空间不见了。因此,

the \naive approach

我明白了

幼稚的做法

在输出中。我该如何恢复空间?

答案1

\naive\使用或的问题\naive{}:如果您碰巧忘记了结束的反斜杠/括号,您最终会在没有注意到的情况下吞噬空间。

添加到宏定义的问题\xspace:如果宏使用,这可能会产生不一致的间距\emph。请参阅xspace 和斜体校正了解详情。

在上面链接的帖子中,Will Robertson 建议使用“分隔”宏(例如/末尾带有)作为替代方案。 的主要优点\naive/是如果您忘记了结束斜杠,则会出现错误消息。

(另见回答。)

\documentclass{article}

\newcommand{\naive}{}% To make sure that \naive isn't already defined    
\def\naive/{na\"{\i}ve}

\begin{document}

the \naive/ approach

\end{document}

在此处输入图片描述

答案2

使用包xspace。 它

提供一个单一命令,查看命令流中其后面的内容,并决定是否插入一个空格来替换被 TeX 命令解码器“吃掉”的空格。

对于您的情况,可以按以下方式使用:

\documentclass{article}

\usepackage{xspace}

\def\naive{na\"{\i}ve\xspace}

\begin{document}

the \naive approach

\end{document}

答案3

使用括号\naive{}\naive\xspace。请参阅常见问题解答:https://texfaq.org/FAQ-xspace

答案4

快速回答:\naive\方法

更好的答案:使用xspace-package

\usepackage{xspace}
\newcommand{\better\xspace }
...

the \better approach

优点:xspace查看下一个字符。因此,您不会在以下位置出现过时的空格:

Macro at sentence end\better.

相关内容