如何将 \textwidth 转换为 mm 并使用该数字作为命令?

如何将 \textwidth 转换为 mm 并使用该数字作为命令?

我正在尝试将 \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

相关内容