我必须计算两个维度的比例,并显示它(可能是四舍五入的整数值)。
我不知道如何生成最佳的 MWE,但这里有一个例子:
\documentclass{article}
\usepackage{expl3}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\test}{}{%
\dim_ratio:nn{\columnwidth}{\textheight}
}
\ExplSyntaxOff
\begin{document}
\test
\end{document}
输出:
22609920/36044800
现在我陷入困境,因为我不知道如何让它计算比例,也无法将其设置为浮点变量,例如通过
\fp_new:N\l_my_fp
\fp_set:Non\l_my_fp{\dim_ratio:nn{\columnwidth}{\textheight}}
因为我收到一个错误:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ./Senza-titolo.tex:13: LaTeX 错误:“kernel/misused-fp” ! 值为“0.6272727272727273”的浮点数被误用。 ! ! 有关更多信息,请参阅 LaTeX3 文档。 ! 如需立即获得帮助,请输入 H。 !...............................................
答案1
我认为,方法不止一种。
如果您想要一种可扩展的方式,\fp_eval:n {\dim_ratio:nn{}{}}
(缩短)就足够了,那么您不需要\NewDocumentCommand
这个。
\documentclass{article}
%\usepackage{expl3}
\usepackage{xparse}
\ExplSyntaxOn
\fp_new:N \l_moriambar_ratio_fp
% Expandable:
\cs_new:Npn \calctheratio #1#2 {%
\fp_eval:n {\dim_ratio:nn{\columnwidth}{\textheight}}
}
\NewDocumentCommand{\test}{}{%
\fp_set:Nn \l_moriambar_ratio_fp {\dim_ratio:nn{\columnwidth}{\textheight}}
\fp_use:N \l_moriambar_ratio_fp
}
\ExplSyntaxOff
\begin{document}
\test
\calctheratio{\columnwidth}{\textwidth}
\end{document}
答案2
expl3
这里根本就没有必要。
\documentclass{article}
\makeatletter
\def\test{%
\strip@pt\dimexpr\columnwidth/\strip@pt\textheight\relax}
\makeatother
\begin{document}
\test
\end{document}
甚至更好:使用 LuaTeX!
\documentclass{article}
\begin{document}
\directlua{
tex.sprint(tex.getdimen("columnwidth")/tex.getdimen("textheight"))
}
\end{document}