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}

Связанный контент