\fboxsep=1cm 和 \setlength{\fboxsep}{1cm} 之间有什么区别?

\fboxsep=1cm 和 \setlength{\fboxsep}{1cm} 之间有什么区别?

问题已写在上面。

答案1

TeX 符号与 LaTeX 符号。

\newdimen\myDim \myDim=5cm+\linewidth 不起作用

\newdimen\myDim \myDim=\dimexpr5cm+\linewidth\relax 适用于etex

\newlength\myLen \setlength\myLen{5cm+\linewidth}与包一起使用calc

\newlength\myLen \setlength\myLen{\dimexpr5cm+\linewidth}适用于etex

myDim=5cm plus 1em不起作用,必须跳过\newskip\mySkip

\setlength\myLen{5cm plus 1em minus .2ex}有效,LaTeX 长度始终是跳过寄存器

答案2

详细阐述一下 Herbert 的说法,LaTeX 的“长度”就是 TeX 所称的“跳过”:带有橡胶成分的长度。因此,可以使用 TeX 语法设置它们

\fboxsep=1 cm

或 LaTeX 语法

\setlength{\fboxsep}{1 cm}

这里有几个需要注意的地方。首先,LaTeX 会插入一个,\relax以防止代码意外拾取“加号”或“减号”部分。例如

\def\Oops#1{\fboxsep=#1}
\Oops{1 cm} plus some space

会导致 TeX 抱怨缺少数字,因为“加号”被解释为跳过的拉伸组件。插入 的 LaTeX 解决方案\relax是安全的。当然,可以在没有 LaTeX 的情况下在 TeX 宏中执行相同的操作:

\def\Safe#1{\fboxsep=#1\relax}
\Safe{1 cm} plus some space

此处的‘加号’并未被误解。

Herbert 还指出,该calc软件包允许将计算作为长度设置的一部分。就我个人而言,我倾向于使用 e-TeX 来实现这一点:

\def\Safer#1{\fboxsep\glueexpr#1\relax}

在此,计算由引擎完成,这通常比使用宏更好。(但请注意,仅使用、、、和进行基本\glueexpr算术运算。该包具有“max”和“min”函数。)()+-x/calc

相关内容