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 \NewDocumentCommand
la 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}
Respuesta2
Aquí no hay expl3
ninguna 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}