我正在尝试将 \textwidth 转换为我想要的其他单位,并使用数字(不带单位)进行计算。
如何做到这一点?
答案1
你可以使用我的calculator
包。该\LENGTHDIVIDE
命令将两个长度相除,并将结果作为数字存储在新命令中,如你所愿。
试试这个代码:
\documentclass[a4paper]{article}
\usepackage{calculator}
\begin{document}
\LENGTHDIVIDE{\textwidth}{1mm}{\size}
\size
\end{document}
在标准 A4 文章中\size
返回 121.25427
答案2
\strip@pt
删除单位pt
并且可以使用 eTeX\dimexpr
进行计算:
\documentclass{article}
\usepackage{siunitx}
\makeatletter
% #1: macro, which gets the result of the conversion without unit
% #2: length expression
\newcommand*{\converttomm}[2]{%
\edef#1{%
\strip@pt\dimexpr(#2)*2540/7227\relax % 72.27 pt = 1 in = 25.4 mm
}%
}
\makeatother
\begin{document}
\converttomm{\mmTextWidth}{\textwidth}
The text width is \SI{\mmTextWidth}{\milli\meter}.
\end{document}
答案3
使用 LaTeX3 将长度转换为十进制:
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
%\cs_new_eq:NN \calc \fp_eval:n
\cs_new_eq:NN \convertlen \dim_to_decimal_in_unit:nn
\ExplSyntaxOff
\begin{document}
\verb|\textwidth| in \verb|pt|s: \the\textwidth
\makeatletter
\verb|1mm| in \verb|pt|s: \setlength{\@tempdima}{1mm}\the\@tempdima
\makeatother
$\frac{\texttt{\string\textwidth}}{\texttt{1mm}} = \convertlen{\textwidth}{1mm}$
\end{document}
上面\convertlen{<fromlen>}{<tounit>}
使用 LaTeX3定义了用户界面\dim_to_decimal_in_unit
。