latex 命令有多余的空格

latex 命令有多余的空格

我正在编写一个命令来处理细菌名称。它们第一次写完整,然后只写第一个名称和后面的句号。我通过拼凑其他人的例子来管理我所拥有的,尽管我似乎有一个多余的空间。我现在忽略了有时第二个名字也会被缩短。

平均能量损失

\documentclass[letterpaper,10pt]{scrartcl}
\usepackage{etoolbox}


\def\splitfirstchar#1#2\sentinel{#1.}
\newcommand{\first}[1]{\splitfirstchar#1\sentinel} 

\def\testwords#1{%
    \readwords#1\relax
}
\def\readwords#1 #2\relax{%
    \ifcsundef{bactused}{
        \def\bactused{true}%want full name
        \textit{#1 #2}
    }{
        \textit{\first{#1} #2}
    }
    %\relax
}
\def\ecoli{\testwords{Escherichia coli}}
\begin{document}
\ecoli
\ecoli\ecoli. Blah
\end{document}

生成:

在此处输入图片描述

那么额外的空间来自哪里呢?

答案1

你需要%在包含以下内容的行的末尾\textit{...}以及以以下内容结尾的行{

答案2

TeX 将 视为<return>空格,就像它将多个连续空格视为空格一样。因此,在您的例子中,每次使用 之后实际上都会有一个返回\ecoli%这会“删除”这个<return>

来自TeX 书关于 AU Thor 的短篇小说(第6 运行 TeX,第 26 页):

这里的符号%是我们之前没有讨论过的纯 TeX 的一个特性:它有效地终止了输入文件的一行,而不会引入 TeX 在移动到下一行输入时通常会插入的空格。此外,TeX 会忽略您在%文件中 , 之后输入的所有内容,直到该行的末尾;因此,您可以将注释放入手稿中,并且知道注释仅供您查看。

相关内容