恒定计数器不起作用

恒定计数器不起作用

我有一个 \hg 和 \hgunits 包这里

我想像这样使用它:

\item svoboda a volnost {\jednotky{22}}
\item \def\aa{\value\modulo{152123}{10}}

{\hg
\hgunits{\aa}
} 

这里

{\hg
\hgunits{2}
} 

作品

{\hg
\hgunits{\aa}
} 

才不是。

另外,当单独调用时, \jednotky{22} 也会打印正确的值 2。

我想知道如何修复它。

包裹:

\usepackage[nomessages]{fp}

\newcommand{\modulo}[2]{%
\FPeval{\result}{trunc(#1-(#2*trunc(#1/#2,0)),0)}\result%
}

\newcommand\jednotky[1]{
$\modulo{#1}{10}$
}

答案1

正如评论中所述

\def\aa{\value\modulo{152123}{10}}

命令名称不应该\aa像覆盖标准 latex 命令那样。\value 是一个接受单个参数的宏,因此这里没有括号,它会获取参数\modulo(不是\modulo{152123}{10})。

预期用途是,\hgunits{\aa}\hgunits只是\ifcase检查 0-9 的值,因此参数必须扩张到一个数字。

fp包计算不能通过扩展进行,

 \FPeval{\result}{trunc(#1-(#2*trunc(#1/#2,0)),0)}\result%

第一的分配一个值\result(如\def或 \newcommand`)并使用该结果,您不能使用这样的分配作为必须扩展为数字的代码。

有些包可以进行可扩展的算术运算(xfp例如),但对于预期的用例,您只需从数字的十进制形式中提取数字,而不需要进行模 10 算术运算,请参阅更新后的答案

https://tex.stackexchange.com/a/511167/1090

相关内容