Expl3 以整數/小數形式計算維數比

Expl3 以整數/小數形式計算維數比

我必須計算二維的比率,並顯示它(可能作為四捨五入的 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}

相關內容