Expl3 次元比を int/decimal として計算します

Expl3 次元比を int/decimal として計算します

2 つの次元の比率を計算し、それを表示する必要があります (丸められた int 値として表示することもできます)。

最良の 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}

関連情報