我有一个非常简单的问题。
有时我需要在字母或单词之间加两个空格,如下所示:
a a %this is a single space
a a %this is a double space
我希望双倍空格看起来就像单倍空格*2。实现此目的的最简单方法是什么?
目前我正在做的是
a\ \ a
但我觉得这不是实现我目标的干净方法
答案1
双倍空格的概念定义得非常模糊,如果你试图用它来向读者表达任何含义,那将是非常令人困惑的。TeX 不是打字机,空格没有固定的长度,它们会拉伸和收缩以调整单词以帮助换行,因此在源代码中,单词之间只有一个空格,而紧行和松行之间的空格可能相差两倍。现代计算机中 10pt 的单词间距是
\glue 3.33333 plus 1.66666 minus 1.11111
因此介于 2.2pt 和 5pt 之间。
因此,紧密线上的双倍空格比松散线上的单倍空格要小。
答案2
您可以使用双波浪线~~
来获得两个空格。但也许\enskip
也可以提供帮助,或者您可以定义一个命令,例如\ds
(用于双倍空格),以便在将来想要更改双倍空格的宽度时可以灵活使用。
\documentclass{article}
\newcommand{\ds}{~~}
\begin{document}
H H (normal Space)
H~~H (doubled Space with \verb+~~+, double Tilde)
H\ds H (doubled Space with userdefined \verb+\ds+)
H\enskip H (\verb+\enskip+)
H\quad H (\verb+\quad+)
H\qquad H (\verb+\qquad+)
H\hspace{5em} H (certain space with \verb+\hspace+)
\end{document}
如果您仅在特殊列表中需要此功能,则可以定义一个以列表为参数的命令。我过去常常使用xparse
逐字参数(类型v
)来定义命令,因为\newcommmand
将解析参数并截断空格,然后\obeyspaces
才能完成其工作。
\documentclass{article}
\usepackage{xparse}
\NewDocumentCommand{ \letterlist }{ v }
{%
{\obeyspaces#1}%
}
\begin{document}
A B C D E F
\letterlist{A B C D E F}
\end{document}
但图像显示单空格和双空格很容易混淆,因此可以考虑使用其他符号来分隔列表……