在 LaTeX3/expl3 中使用 calc-like(calc 包)命令

在 LaTeX3/expl3 中使用 calc-like(calc 包)命令

在尽可能多地从LaTeX2e代码切换到的过程中LaTeX3/expl3,我被一些软件包工具的使用所困扰calc。我读过这个软件包,但它似乎目前已被弃用。特别是,我在使用pkg 命令l3calc时遇到了麻烦。在这方面,如果不声明一个框,该怎么做?我的意思是,像chez这样的东西。calc\widthofLaTeX3/expl3\widthof{This text}LaTeX3/expl3

更准确地说,我遇到的问题如下:

\documentclass{memoir}

% Loading explicitly the calc pkg doesn't help
%\usepackage{calc}

\usepackage{xparse}

\ExplSyntaxOn

\dim_new:N \g_tmp_dim
\dim_set:Nn \g_tmp_dim { \widthof{This ~ text} } % { 3pt } It works with this

\NewDocumentCommand \ShowWidth { }
 { \dim_use:N \g_tmp_dim }

\ExplSyntaxOff

\begin{document}
\ShowWidth
\end{document}

也许我的问题与此处参数的扩展有关,我应该为以不同方式管理扩展的n函数定义一个变体?只是在思考它...\dim_set:Nn

答案1

诸如 之类的函数\dim_set:Nn需要其第二个参数(在本例中为 a <dimension expression>)完全可扩展。 类似于 的函数\widthof无法返回可扩展的维度,因为必须设置用于进行测量的框。

\setlength这并不意味着不能定义与with行为类似的用户级宏calc;但是必须定义表达式的解析器。

顺便说一句,没有什么可以阻止您在 LaTeX3 代码中使用\setlength(with calc)(尽管这样做风格不好)。或者,对于简单的应用程序,使用类似于 cgnieder 的答案的代码用于计算给定字体的 \baselineskip 的宏

相关内容