从一个单位(pt、ex、em、in、bp、dd、pc、mm、cm)转换为另一个单位

从一个单位(pt、ex、em、in、bp、dd、pc、mm、cm)转换为另一个单位

我想要一个命令来将一个单位(pt、ex、em、in、bp、dd、pc、mm、cm)转换为另一个单位。我可以用 l3 做什么?

答案1

非常准确(也许太准确了,所以我对小数位进行了限制):

\documentclass{article}

\NewExpandableDocumentCommand{\convertto}{omm}{%
  % #1 = number of decimal digits
  % #2 = length
  % #3 = new unit
  \IfNoValueTF{#1}{%
    \fpeval{\dimeval{#2}/(1#3)}\,#3%
  }{%
    \fpeval{round(\dimeval{#2}/(1#3),#1)}\,#3%
  }%
}

\begin{document}

\convertto{1pc}{pt}

\convertto{1in}{cm}

\convertto[2]{1in}{cm}

\convertto{\textwidth}{cm}

\convertto{1ex}{mm}

{\Large\convertto{1ex}{mm}}

\end{document}

在此处输入图片描述

答案2

l3skip 模块提供\dim_to_decimal_in_unit:nn

摘自 LaTeX3 界面,第 231 页(2024-02-20 版本):

计算 ⟨dim exprs ⟩,并将 ⟨dim expr1 ⟩ 的值保留在输入流中,该值以 ⟨dim expr2 ⟩ 给出的单位表示。如果结果的小数部分为零,则将其与小数标记一起省略。结果的精度限制为最多五位小数,并省略尾随零。

例如

\dim_to_decimal_in_unit:nn { 1bp } { 1mm }

在输入流中留下 0.35278,即以毫米表示的一个大点的大小。

相关内容