如何定义独立于空白的宏

如何定义独立于空白的宏

我如何定义一个宏\test,例如使用\def\test#1{...},可以以以下两种方式使用?没有空格的用法

\test{A}This is some text

以及使用空白

\test{A} This is some text

应该产生相同的排版结果:

答:这是一些文字

这将帮助我在编写自由物理文本时更加轻松。

答案1

代码

\newcommand\test[1]{#1:~\ignorespaces}

会满足您的要求。空格应该是替换文本的一部分,正如您所希望的那样;使用\ignorespace,参数后面的空格将被吞噬。

答案2

套餐xspace可以成为你的朋友:

\documentclass{article}
\usepackage{xspace}
\newcommand*{\test}[1]{#1:\xspace}
\begin{document}
\test{A}This is some text

\test{A} This is some text
\end{document}

结果

但是,xspace不会在标点符号前添加空格,例如,它的用途是用于文本内部的内容。Manuels 的解决方案或 egreg 的回答在这种情况下可能更好,因为它总是设置一个空格并忽略额外的空格。

相关内容