设置尺寸参数的正确方法是什么?

设置尺寸参数的正确方法是什么?

在 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根据需要插入。

相关内容