如果我需要将宽度设置为文本宽度,那么稍后如何恢复它?

如果我需要将宽度设置为文本宽度,那么稍后如何恢复它?

存储一些宽度以便暂时改变它然后恢复到原来的语法是什么?

例子:

%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计数器不是群安!

相关内容