我正在寻找一种方法,简单地将跳跃表达式中的所有组件(自然长度加上正长度减去负长度)乘以相同的数字。我在下面的 MWE 中尝试了一些示例,但没有成功。当然,我可以创建 3 个不同的 dimen 表达式,然后将每个 dimen 表达式乘以一个数字,然后将每个结果输入到跳跃表达式中,但我正在寻找一种更简单、更方便的解决方案。在我的 MWE 中,\skip_show:N
当它不产生错误时仅显示自然长度。
\documentclass{article}
\ExplSyntaxOn
\skip_const:Nn \c_mymodule_myskipi_skip { 36pt plus 18pt minus 12pt }
\skip_const:Nn \c_mymodule_myskipii_skip
{
%\fp_eval:n { 0.8333 } \c_mymodule_myskipi_skip
%\c_mymodule_myskipi_skip * \fp_eval:n { 0.8333 }
%\skip_eval:n { \fp_eval:n { 0.8333 } \c_mymodule_myskipi_skip }
\skip_eval:n { \c_mymodule_myskipi_skip * \fp_eval:n { 0.8333 } }
}
\skip_show:N \c_mymodule_myskipii_skip
\ExplSyntaxOff
\begin{document}
text
\end{document}
答案1
在原始层面上,你想要\multiply
或\glueexpr
\baselineskip=20pt plus 5pt minus 2pt
\showthe\baselineskip
\multiply\baselineskip by 2
\showthe\baselineskip
\baselineskip=\glueexpr(\baselineskip * 10)\relax
\showthe\baselineskip
\bye
生产
> 20.0pt plus 5.0pt minus 2.0pt.
l.4 \showthe\baselineskip
?
> 40.0pt plus 10.0pt minus 4.0pt.
l.8 \showthe\baselineskip
?
> 400.0pt plus 100.0pt minus 40.0pt.
l.12 \showthe\baselineskip
expl3
因此使用\glueexpr
:
\documentclass{article}
\ExplSyntaxOn
\skip_const:Nn \c_mymodule_myskipi_skip { 36pt plus 18pt minus 12pt }
\skip_const:Nn \c_mymodule_myskipii_skip
{
\skip_eval:n { ( \c_mymodule_myskipi_skip * 25 )/30 }
}
\skip_show:N \c_mymodule_myskipii_skip
\ExplSyntaxOff
\begin{document}
text
\end{document}
生产
> \c_mymodule_myskipii_skip=30.0pt plus 15.0pt minus 10.0pt.
<recently read> }
l.8 \skip_show:N \c_mymodule_myskipii_skip
?
或更简单(因为评估是隐含的)
\documentclass{article}
\ExplSyntaxOn
\skip_const:Nn \c_mymodule_myskipi_skip { 36pt plus 18pt minus 12pt }
\skip_const:Nn \c_mymodule_myskipii_skip
{
( \c_mymodule_myskipi_skip * 25 )/30
}
\skip_show:N \c_mymodule_myskipii_skip
\ExplSyntaxOff
\begin{document}
text
\end{document}