尝试了 printlen 包,但似乎不明白 2.5in 是什么意思:
\documentclass{minimal}
\usepackage{printlen}
\uselengthunit{in}
\begin{document}
\newlength{\advertwidth}
\setlength{\advertwidth}{2.5in}
\printlength{\advertwidth}
\end{document}
排版上述结果2.50049 in
--- 有没有更好的?
注意:除上述内容外,该项目还需要以下软件包:
\usepackage{calc,geometry,xcolor,graphicx,csvsimple}
尤其是最后一个,与最初提供的答案相冲突。
答案1
\documentclass[preview,border=12pt,varwidth]{standalone}
\usepackage[nomessages]{fp}
\usepackage{printlen}
\makeatletter
\newcommand{\printer}[3][in]{%
\FPeval\temp{round(\expandafter\strip@pt\csname#2\endcsname/72.27:#3)}%
\temp#1}
\makeatother
\newlength\xxx
\setlength{\xxx}{2.5in}
\parindent=0pt
\begin{document}
\printer{xxx}{1}
\printer{xxx}{2}
\printer{xxx}{7}
\end{document}
答案2
最近上传的lengthconvert
包似乎就是您正在寻找的:
\documentclass{article}
\usepackage{lengthconvert}
\Convertsetup{unit=in}
\begin{document}
\newlength{\advertwidth}
\setlength{\advertwidth}{2.5in}
\Convert{\advertwidth}
\Convert{72.27pt}
\end{document}
答案3
强制expl3
解决方案:
\documentclass{minimal}
\usepackage{expl3,xparse}
\ExplSyntaxOn
\NewDocumentCommand { \printlengthas } { m m }
{ \dim_to_decimal_in_unit:nn {#1} { 1 #2 } #2 }
\ExplSyntaxOff
\begin{document}
\newlength{\advertwidth}
\setlength{\advertwidth}{2.5in}
\printlengthas{\advertwidth}{in}
\end{document}
(\dim_to_unit:nn
目前还在实验阶段,但这个想法必然会保留下来:只是名称的问题。)
注意:这目前需要最新版本expl3
:\dim_to_decimal_in_unit:nn
已于 2014-07-15 添加到 CTAN 版本。
答案4
该函数\printlen[Unit][FracNr]{length}
将单位输出格式化为无衬线字体,我不喜欢这种字体,因此我使用以下四个宏来输出长度(单位为 pt、in、cm 和 mm)。这些宏需要用于非整数除法的包 fp 和 siunitx。
\newcommand{\ScaledPointsInPoint}{\number \dimexpr 1pt \relax}
\newcommand*{\FPSizePt}[2][0]{%
\FPdiv\res{\number\dimexpr #2\relax}{\ScaledPointsInPoint}%
\FPeval\res{round(\res:#1)}%
\SI\res{pt}}
\newcommand*{\FPSizeIn}[2][2]{%
\FPdiv\res{\number\dimexpr #2\relax}{\ScaledPointsInPoint}%
\FPdiv\res{\res}{72.27}%
\FPeval\res{round(\res:#1)}%
\SI\res{in}%
}
\newcommand*{\FPSizeCm}[2][2]{%
\FPdiv\res{\number\dimexpr #2\relax}{\ScaledPointsInPoint}%
\FPdiv\res{\res}{72.27}%
\FPmul\res{2.54}{\res}%
\FPeval\res{round(\res:#1)}%
\SI\res{\cm}}
\newcommand*{\FPSizeMm}[2][2]{%
\FPdiv\res{\number\dimexpr #2\relax}{\ScaledPointsInPoint}%
\FPdiv\res{\res}{72.27}%
\FPmul\res{25.4}{\res}%
\FPeval\res{round(\res:#1)}%
\SI\res{\mm}}
用法:
\newlength{\testlen}\setlength{\testlen}{5440 pt}
\FPSizeIn{\testlen}, \FPSizeCm[4]{\testlen}, \FPSizeMm{\testlen}, \FPSizePt{\testlen}.
在区域设置=DE 中输出:75,27 英寸、191,1941 厘米、1911,94 毫米、5440 点。