Ich muss das Verhältnis zweier Dimensionen berechnen und anzeigen (möglicherweise als gerundeten int-Wert).
Ich weiß nicht, wie man das beste MWE produziert, aber hier ist ein Beispiel:
\documentclass{article}
\usepackage{expl3}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\test}{}{%
\dim_ratio:nn{\columnwidth}{\textheight}
}
\ExplSyntaxOff
\begin{document}
\test
\end{document}
Ausgaben:
22609920/36044800
Und jetzt stecke ich fest, da ich nicht weiß, wie ich das Verhältnis berechnen kann, noch kann ich es auf eine Gleitkommavariable setzen, z. B. über
\fp_new:N\l_my_fp
\fp_set:Non\l_my_fp{\dim_ratio:nn{\columnwidth}{\textheight}}
Da bekomme ich eine Fehlermeldung:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ./Senza-titolo.tex:13: LaTeX-Fehler: „kernel/misused-fp“ ! ! Eine Gleitkommazahl mit dem Wert „0,6272727272727273“ wurde falsch verwendet. ! ! Weitere Informationen finden Sie in der LaTeX3-Dokumentation. ! ! Geben Sie für sofortige Hilfe H ein. !..............................................
Antwort1
Es gibt, glaube ich, mehr als einen Weg.
Wenn du einen erweiterbaren Weg haben willst, \fp_eval:n {\dim_ratio:nn{}{}}
reicht (verkürzt) aus, \NewDocumentCommand
das brauchst du dann nicht.
\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}
Antwort2
expl3
Das ist hier überhaupt nicht nötig .
\documentclass{article}
\makeatletter
\def\test{%
\strip@pt\dimexpr\columnwidth/\strip@pt\textheight\relax}
\makeatother
\begin{document}
\test
\end{document}
Noch besser: Verwenden Sie LuaTeX!
\documentclass{article}
\begin{document}
\directlua{
tex.sprint(tex.getdimen("columnwidth")/tex.getdimen("textheight"))
}
\end{document}