\newdimen、\newskip 和 \newlength 之间有什么区别?

\newdimen、\newskip 和 \newlength 之间有什么区别?

\newdimen\newskip和之间有何区别\newlength

我应该何时使用它们?请为每种情况提供一个非平凡的例子。

答案1

\newlength是 LaTeX2e 版本的\newskip。它有额外的检查来避免重新定义或非法名称。在 LaTeX2e 中,它被定义为

\def\newlength#1{\@ifdefinable#1{\newskip#1}}

例如,

\newlength\foo % OK
\newlength\foo % redefinition ERROR!

\newlength\endbar % ERROR: \endbar is illegal command name in LaTeX2e.
% It is reserved by LaTeX kernel to define bar environment together with \bar

\newskip仅分配一个新的跳过(粘合或橡胶空间)寄存器。如果您改用低级 TeX 命令\newskip,则不会显示任何错误消息。

在 LaTeX 中您应该始终使用\newlength而不是\newskip


\newdimen是另一个分配新维度寄存器的低级 TeX 宏,它与 不同\newskip。它们的含义不同。例如,

\newdimen\rigidlength
\rigidlength=2pt % or \setlength{\rigidlength}{2pt}

\newlength\rubberlength % you cannot use \newdimen here
\setlength{\rubberlength}{2pt plus 2pt minus 1pt}

答案2

\newlength是 LaTeX 语法并且始终是一个跳过寄存器:

\documentclass{article}
\newskip\foo
\foo=1cm plus 1mm minus 3mm
\newdimen\bar
\bar=1cm %plus 1mm minus 3mm % not possible
\newlength\baz
\setlength\baz{1cm plus 1mm minus 3mm} 
\begin{document}
\the\foo \par
\the\bar \par
\the\baz
\end{document}

相关内容