Expl3 计算尺寸比为整数/小数

Expl3 计算尺寸比为整数/小数

我必须计算两个维度的比例,并显示它(可能是四舍五入的整数值)。

我不知道如何生成最佳的 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}

相关内容