我希望 LaTeX 自动处理单词的前后空格,而无需我添加空格

我希望 LaTeX 自动处理单词的前后空格,而无需我添加空格

我目前正在使用模板动态创建 LaTeX 文档,而我使用循环创建一个包含一个或多个单词的句子。这个句子的模板是He said: "<%words%>."

结尾句号和引号已经存在。我只需填写单词,替换即可<%words%>

因此我最终可能会得到如下文本:He said: " word1 word2 ."这是不合标准的,因为空格确实出现并且很丑陋。

我想避免第一个引号之后和结束句号之前的空格。

请假设我无法修复动态添加单词时的问题。它必须在 LaTeX 中修复。我希望 LaTeX 能够处理空格。我认为这可以工作:"{}word1{}word2{}."但事实并非如此。也许我误解了 的用法{}

我也认为这可行:"\xspace{}word1\xspace{}word2\xspace{}.",但事实并非如此。

以上两个都将单词粘在一起,单词之前、之间或之后都没有空格。

底线是,不要让你与模板混淆:我想让 LaTeX 处理间距(正如它所做的那样并且应该如此),而我自己只指示单词边界:例如He said: "{}word1{}word2{}."呈现为He said: "word1 word2."

这是一个测试:

\documentclass{article}
\usepackage{xspace}
\begin{document}
He said: "{}word1{}word2{}."

He said: "\xspace{}word1\xspace{}word2\xspace{}."
\end{document}

顺便说一句,如果可能的话,我真的需要它与 xelatex 一起工作。

编辑:抱歉,我认为我的例子太简单了,无法传达复杂性。问题是我需要不断动态地将word1,添加word2到我的句子中。这些 (word1, word2) 可能只是单词或控制+单词,例如\emph{a b c}\href{url}{caption}

其次,无法知道后面跟着的word2是标点符号(没有空格可添加)还是另一个单词(因此需要添加空格)。

抱歉如果我造成混淆。

答案1

这个问题远非明确,但似乎您正在寻找\xspace<space>而不是\xspace{}(它没有做任何事情,因为{}明确阻止\xspace采取行动)。

在此处输入图片描述

\documentclass{article}
\usepackage{hyperref,xspace}
\begin{document}
He said: ``word1\xspace word2\xspace .''

He said: ``word1\xspace word2\xspace \emph{a b c}\xspace \href{url}{caption}\xspace .''

\end{document}

答案2

如果您的模板能够\corrspaces在第一个之前添加控制序列",即它看起来像He said: \corrspaces"<%words%>.",那么以下宏可以解决您的问题:

\def\corrspaces"#1#2."{``\removelastspace#1#2\end/ \end/\fin{#1#2}.''}
\def\removelastspace #1 \end/#2\fin#3{\ifx^#2^#3\else#1\fi}

He said (1): \corrspaces" word1 word2 ."

He said (2): \corrspaces"word1 word2 ."

He said (3): \corrspaces" word1 word2."

He said (4): \corrspaces"word1 word2." 

所有四个示例都打印相同的结果:“word1 word2”。

相关内容