存储一些宽度以便暂时改变它然后恢复到原来的语法是什么?
例子:
%save length here
\setlength\somewidth{\textwidth}
some text
\begin{someenvironment}
more text
\end{someenvironment}
%restore length here
答案1
长度是组安全的,即,除非明确设为全局,否则任何内部更改都{...}
将限制在该组中。例如,在表格单元格中设置的长度仅在该单元格中更改,在下一个单元格中,该值不受此影响!
您可以放置一个{...}
(或一\begingroup...\endgroup
对)或使用环境内的设置(如果可能)——环境也会形成组。
第三种可能性:如果确实需要,用 和 定义划痕宽度\newlength
,或者说,\setlength{\helperwidth}{\somewidth}
或者更像TeX
,\helperwidth=\somewidth
甚至更短: 。\helperwidth\somewidth
如果必须使用旧定义(“值”)进行一些额外的计算等,则额外长度的定义(或使用目前不需要的另一个长度)有其优势。
“正确”的方法取决于实际需求。
\documentclass{article}
\newlength{\somewidth}
\newlength{\helperwidth}% Just for fun
\newenvironment{someenvironment}{%
Width is \the\somewidth%
}{}
\begin{document}
\setlength{\somewidth}{\textwidth}
\begin{someenvironment}
more text
\setlength\somewidth{0.5\textwidth}
Now width is \the\somewidth%
\end{someenvironment}
Outside the width is \the\somewidth
Or using a group:
{%
\setlength{\somewidth}{0.5\textwidth}
\begin{someenvironment}
Now width is \the\somewidth%
\end{someenvironment}
}%
Outside of the group the width is \the\somewidth
\helperwidth=\somewidth
% Or \helperwidth\somewidth
\setlength\somewidth{0.75\textwidth}
\begin{someenvironment}
Now width is \the\somewidth%
\end{someenvironment}
Outside of the environment the width is \the\somewidth
\setlength{\somewidth}{\helperwidth}
Now restoring the width: \the\somewidth
\end{document}
相同的组特征也适用于TeX
计数寄存器——它们是组安全的,但是LaTeX
计数器不是群安!