在 TeXbook 中,Knuth 设置的尺寸参数主要如下:
\parskip=3pt
其他软件包作者定义此类参数时不使用等号
\parskip30pt
许多后来的作者使用 LaTeX\setlength
\setlength{\parskip}{30pt}
你甚至可以定义一个constant
某处并写下:
\parskip\parsep
甚至 \parskip30PT
甚至\parskip10Pt
有效!
我倾向于\parskip30pt
在包中使用宏,\newlength
在文档中使用前言命令。有没有正确的方法来设置尺寸参数?
注意:对于任何想要尝试上述命令的人来说,这是一个简短的最小示例。
\documentclass[11pt]{article}
\usepackage{lipsum}
\begin{document}
\parskip30pt
\lipsum[1-2]
\parskip=3pt
\lipsum[1]
\setlength{\parskip}{30pt}
\lipsum[1]
\parskip\parsep
\lipsum[1]
\parskip25Pt
\lipsum[3]
\parskip30PT
\lipsum[4]
\texttt{\meaning\parsep}
\texttt{\the\parsep}
\end{document}
答案1
在 TeX 级别,有两种寄存器类型需要担心,即维度和跳过。前者只采用维度(这并不奇怪),而后者也具有橡胶组件。LaTeX 的“长度”是 TeX 跳过,因此可以具有橡胶组件。当您考虑如何终止设置指令时,这一点很重要。例如:
\newskip\myskip
\def\setmyskip#1{\myskip #1} % Bad!
\setmyskip{10 pt} plus some other context
这里,TeX 会认为 'plus' 是跳过信息的一部分,并会抱怨缺少数字。因此 LaTeX\relax
在 的定义中包含\setlength
以避免这种情况:
> \setlength=macro:
#1#2->#1#2\relax .
当您设置一个长度与另一个长度时,此终止问题不适用:
\parskip\parsep plus
不会将 视为plus
设置的一部分。每当您设置一个登记来自另一个 TeX '知道' 没有其他要寻找的东西。 (注意:如果您尝试对存储为宏的常量执行相同操作,则您又需要\relax
。)
现在,关于如何“正确”地做到这一点,我不清楚在哪种情况下 是=
至关重要的(与 的情况相反\let
,有时 可选项=
很重要)。所以我不会使用它。
由于 LaTeX 提供了正确的设置终止方式,如果我们讨论的是 LaTeX 文档,我更喜欢它的方法而不是普通的 TeX 方法。也就是说,如果我想要一个固定的长度,我会倾向于使用一个维度,然后使用\newdimen
普通的 TeX 设置方法并\relax
根据需要插入。