长度及何时使用它们

长度及何时使用它们

LaTeX 中有许多长度。例如,\enskip\enspace\quad\parskip\smallskip……其中一些主要用于垂直间距,另一些主要用于水平间距,也许其中一些用于两种情况。我想知道是否有一个列表可以指示 LaTeX 中每种长度的含义和预期用途。我所说的“预期用途”不仅指长度是垂直还是水平,还指在什么情况下使用该特定长度是一种好的做法。

答案1

首先要知道的是间距参数间距命令\parskip并且\parindent属于前者,\enskip\quad并且\smallskip属于后者。

间距参数的完整列表会很长,因此让我们集中讨论间距命令。

垂直间距命令

  • \smallskip\medskip留下\bigskip由该类预先定义的一定量的垂直空间;它们是特殊情况\vspace{<skip>};如果在段落中间给出,它们会在它们恰好被设置的行和下一行之间产生垂直空间,因此最好使用它们之间段落。

  • \smallbreak\medbreak并且\bigbreak做几乎相同的事情,但是如果前一个垂直空格小于它们要插入的空格,它们会删除它;它们还会终止一个段落并告诉 TeX 它们标记了一个可能发生分页符的好点。

  • \addvspace{<skip>}尝试与可能的其他同类间距合并,以便以两者的最大量进行间距(在某些情况下这可能不会发生,问题非常微妙)。

  • \vfill相当于\vspace{\fill}告诉 TeX 用空白填充。

  • 该变体\vspace*{<skip>}告诉 TeX 如果垂直间距恰好出现在分页符之后,也不要忽略它;事实上,所有先前的垂直间距都会在分页符处消失。

水平间距命令

  • \enskip\quad\qquad分别留出半个 em、一个 em 和两个 em 的水平空间。“em”是字体相关的长度,通常与当前字体中的大写字母 M 一样宽。

  • \hspace{<skip>}是一个通用的水平间距命令,它告诉 TeX 留出相应数量的水平空间。

  • \hspace*{<skip>}类似,但不会在换行符处消失。

  • \hfill相当于\hspace{\fill}

  • \,\!分别留下一个细空格和它的负数;\,可用于修复由于视觉上不兼容的字符对(例如,大写字母紧跟在小写字母之后)或在诸如此类的情况下D.\,E.~Knuth(有人更喜欢D.~E.~Knuth;请注意,这D.E.~Knuth是错误的)造成的一些不良间距。

使用什么水平命令?一般来说,最好依靠\quad来自数百年印刷术的朋友。当特定应用程序需要不同的方法时,该\hspace命令可以满足目的。

我不记得有任何可以用于垂直和水平间距的间距命令。

您提到\enspace的是,如果我没记错的话,没有在 LaTeX 手册中列出(因为没有\smallbreak\medbreak\bigbreak);它是从 Plain TeX 继承而来的,并且几乎与相同\enskip,但从技术上讲它是一个 kern,而不是跳过。

命令\,\!有一个“长版本”,只能在文本模式下使用(因此不能在公式中使用):\thinspace\negthinspace。它们像一样\enspace插入与跳过不同的字距,因为它们通常不定义换行点(实际规则相当复杂,请参阅 TeXbook);特别是 TeX 不会在 中的“D.”和“E.”之间换行D.\,E.~Knuth。此外,字距只有其自然宽度(有关跳过,请参阅下文)。

什么是<skip>

A<skip>是三叉长度规格:

<natural width> plus <stretching> minus <shrinking>

例如,\smallskip相当于\vspace{3pt plus 1pt minus 1pt}(在标准类中)告诉 TeX 保留 3pt 的垂直空间,但可收缩至 2pt 或可拉伸(最佳)至 4pt。但是,当存在拉伸组件时,TeX 还可以在紧急情况下将该空间拉伸到规定的范围之外;\pagebreak当 TeX 没有足够的材料来正确填充当前页面时,通常会发现命令。

长度可以用任何合法的 TeX 测量单位来指定,但拉伸和收缩分量也可以用以下形式表示:无限单位 filfillfilll谨慎使用)。例如,如果 TeX 在页面中找到\vfill,它与 相同\vspace{0pt plus 1fill},则页面中找到的所有\smallskips 都将为 3pt 宽,因为 的无限分量\vfill 胜利

该命令\stretch可以在以下上下文中使用:\stretch{<decimal number>}相当于跳过规范0pt plus <decimal number>fill,因此\vspace{\stretch{2}}相当于说\vfill\vfill。TeX 将按比例用空白填充fill组件。所以

\clearpage
\thispagestyle{empty}
\vspace*{\stretch{1}} % the same as `\vspace*{\fill}`
\begin{flushright}
\itshape
To my dog\\
and my cat
\end{flushright}
\vspace{\stretch{2}}
\clearpage

可用于在页面中放置题词,下方的空白空间是上方的两倍。请注意,必须使用上方的空白空间,\vspace*以避免分页符处的空白空间消失。

警告

最近的一个问题提出了一个有趣的问题:定理标签生成的空间(XeTeX)

事实证明,这是一个未记录的功能(又称“无法修复的错误”):命令\, \! \thinspace \negthinspace \enspace定义为

\kern<dimen>

因此如果它们以垂直模式发布(当 TeX 尚未开始一个段落时),它们会产生一个垂直的空间,而不是水平空间。

确保在段落开始时发出它们;例如,请注意\item 没有开始一个段落,也不\begin{<theorem>}(其中<theorem>代表用 定义的任何环境\newtheorem)。

相反,如果 TeX 发现\quad\qquad和时处于垂直模式,则它们会开始一个段落\enskip\hspace

答案2

查看以下链接:

  1. 在 LaTeX 中排版数学

当我们在数学模式下查看空格时,所有空格都会被忽略。因此,$x y$与 是相同的$xy$。这在排版数学公式等时非常重要。您可以添加空格的方式包括:

  • \,用作$x\, y$thinspace
  • \;用作$x\; y$thickspace
  • \(space)用作$x\ y$charspace
  • \quad用作$x\quad y$quadspace
  • \qquad用作$x\qquad y$产生double quadspace
  • \!用作 ,$x\! y$产生negative thinspace

请注意,在上述所有空格中,字符空格都是必需的,以避免 LateX 将您的空格命令读取为由于\newcommand\例如:$x\, y$是好的,$x\,y$是坏的。

然而,在数学模式下,可以使用文本空格在数学输入之间生成自定义空格,但必须小心输入此类文本的方式。建议使用amsmath命令。也可以使用。数学模式下空格的其他可能实现可能包括或命令。\text{ }\mbox{}\hspace{ }\hphantom{ }

  1. TeXbyTopic 文档

  2. 长度尺寸

请注意,TeXbyTopic 文档有点技术性,可能不像第一个链接那么简单。我今天晚些时候会提供一个示例。

相关内容