命令 \number 的含义是什么?何时使用它?以及对以下代码的一些困惑

命令 \number 的含义是什么?何时使用它?以及对以下代码的一些困惑
\setcounter{numofgaps}{\numexpr\number\value{numofboxes}-1}
\setlength{\truetextsectionwidth}{\textsectionwidth-\number\value{numofgaps}\gapwidth}

上面的代码是答案的一个片段 如何在一个投影仪框架中排列文本和图像?

  1. 我知道该\numexpr...\relax对用于表达式求值。上面的\setcounter命令没有(代码中\relax后面的括号结尾有同样的效果吗?)-1{\numexpr\number\value{numofboxes}-1}
  2. 该命令的用途是什么\number(如果我不使用它,会出现什么问题?)
  3. \number\value{numofgaps}\gapwidth意味着 numofgaps 乘以 gapwidth,但是为什么不添加表示和*之间的乘积的符号。\value{numofgaps}\gapwidth

答案1

\number在这些上下文中不需要原语。但是您需要在\dimexpr\setlength,除非您加载calc

例子:

\documentclass{article}

\newcounter{numofboxes}
\newcounter{numofgaps}
\newlength{\textsectionwidth}
\newlength{\truetextsectionwidth}
\newlength{\gapwidth}

\setlength{\gapwidth}{10pt} % an easy number
\setlength{\textsectionwidth}{300pt} % an easy number
\setcounter{numofboxes}{11} % an easy number

\begin{document}

\setcounter{numofgaps}{\numexpr\value{numofboxes}-1}
\setlength{\truetextsectionwidth}{\dimexpr\textsectionwidth-\value{numofgaps}\gapwidth}

\texttt{numofgaps = \thenumofgaps}

\texttt{\string\truetextsectionwidth = \the\truetextsectionwidth}

\end{document}

在此处输入图片描述

里面\numexpr任何<number>都可以使用,并且\value{numofboxes}符合的语法<number>

长度寄存器可以乘以一个<factor>基本上是<number>或一个明确的十进制数。

请注意,里面\dimexpr有类似

\number\value{numofgaps}*\gapwidth

是不合法的,因为整数乘数必须长度寄存器;\gapwidth*\number\value{numofgaps}是合法的,但实际上并不是需要的。


代码\value{counter}扩展为\csname c@counter\endcsname,因此它等同于\c@counter,其中是处理\c@counter时分配的整数寄存器的名称。在 中,任何整数寄存器名称都可以直接使用。无需通过 将其转换为显式数字。该构造有其用途,但当 TeX 需要 时不需要。\newcounter{counter}\numexpr\number\number\value{counter}<number>

相关内容