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}

관련 정보