Expl3 calcula la relación de dimensión como int/decimal

Expl3 calcula la relación de dimensión como int/decimal

Tengo que calcular la proporción de dos dimensiones y mostrarla (posiblemente como el valor int redondeado).

No sé cómo producir el mejor MWE pero aquí hay un ejemplo:

\documentclass{article}
\usepackage{expl3}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\test}{}{%

\dim_ratio:nn{\columnwidth}{\textheight}

}
\ExplSyntaxOff
\begin{document}
\test

\end{document}

Salidas:

22609920/36044800

Y ahora estoy atascado porque no sé cómo hacer que calcule la proporción, ni puedo configurarlo en una variable de punto flotante, por ejemplo, mediante

\fp_new:N\l_my_fp
\fp_set:Non\l_my_fp{\dim_ratio:nn{\columnwidth}{\textheight}}

Ya que me sale un error:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ./Senza-titolo.tex:13: Error de LaTeX: "kernel/misused-fp"! ! Se utilizó incorrectamente un punto flotante con valor '0.6272727272727273'. ! ! Consulte la documentación de LaTeX3 para obtener más información. ! ! Para obtener ayuda inmediata, escriba H. !.................................................

Respuesta1

Creo que hay más de una manera.

Si desea tener una forma expandible, \fp_eval:n {\dim_ratio:nn{}{}}(acortada) es suficiente, entonces no \NewDocumentCommandla necesita.

\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}

ingrese la descripción de la imagen aquí

Respuesta2

Aquí no hay expl3ninguna necesidad.

\documentclass{article}

\makeatletter
\def\test{%
  \strip@pt\dimexpr\columnwidth/\strip@pt\textheight\relax}
\makeatother

\begin{document}

\test

\end{document}

Aún mejor: ¡usa LuaTeX!

\documentclass{article}
\begin{document}

\directlua{
  tex.sprint(tex.getdimen("columnwidth")/tex.getdimen("textheight"))
}

\end{document}

información relacionada