我有一个希望缩放的长度,但是我不确定如何进行,并且我在网上找到的答案都没有帮助。
我尝试从中得出这个结论的函数是:
% #1 is the unit to convert to
% #2 is the length to convert
\makeatletter
\def\convertto#1#2{\strip@pt\dimexpr #2*65536/\number\dimexpr 1#1}
\makeatother
进入:
% #1 is the length
% #2 is the multiple
% #3 is the output units
\makeatletter
\def\multlen#1#2#3{\strip@pt\dimexpr #1*65536*\numexpr #2/\number\dimexpr 1#3}
\makeatother
使用示例如下:
\begin{document}
\multlen{.5in}{2}{in}
... other content
\end{document}
一些期望的输出如下:
\multlen{.5in}{2}{in}
返回 1in
\multlen{1in}{2}{in}
返回 2in
\multlen{.5in}{5}{in}
返回 2.5in
结果是算术溢出。
答案1
TeX 长度不记录任何单位,因此对于计算来说,“返回单位”是无用的,您只需在其前面加上一个因子就可以将长度乘以2\textwidth
两倍,因此\textwidth
是2\dimexpr 5in\relax
10 英寸。
对于调试和文档目的,重新缩放以显示特定单位的长度可能很有用,并且 latex 提供了\dim_to_decimal_in_unit:nn
\documentclass{article}
\ExplSyntaxOn
\newcommand\lengthunit[2]{\dim_to_decimal_in_unit:nn{#1}{1#2}#2}
\ExplSyntaxOff
\begin{document}
\lengthunit{\textwidth}{cm}
\lengthunit{2\textwidth}{cm}
\lengthunit{1in}{cm}
\lengthunit{5\dimexpr 1in\relax}{cm}
\end{document}