计算长度/比例之间的比率

计算长度/比例之间的比率

我想计算两个长度之间的比率,以便使用 mercatormap 包自动获取地图的比例。例如,我希望地图在水平方向上显示 1 公里,并且宽度为\textwidth,这意味着我必须提供的比例参数将是这样的100000cm / \textwidth

我找到了这个解决方案:

\documentclass{minimal}
\usepackage{graphicx}

\begin{document}

\makeatletter
\Gscale@div\tmp {100cm}{\textwidth}

{\textbackslash}textwidth = \the\textwidth

100cm / {\textbackslash}textwidth = \tmp

\Gscale@div\tmp {100000cm}{\textwidth}       % Causes: ! Dimension too large. <to be read again> [...] 
                                             % I can't work with sizes bigger than about 19 feet.

100000cm / {\textbackslash}textwidth = \tmp  

\end{document}

在此处输入图片描述

这显然不适用于大尺寸。考虑到1pt28.4cm一个比率计算正确,第二个比率另一方面引发了上述评论中的错误。使用时\pgfmathparse也得到了同样的错误。

有没有办法可以解决这个“约19英尺”的限制?

答案1

您可以使用xfp\fpeval

\documentclass{article}
\usepackage{xfp}

\begin{document}

\edef\tmp{\fpeval{100cm/\textwidth}}

100cm = \the\dimexpr100cm\relax

\verb|\textwidth| = \the\textwidth

\tmp

\end{document}

根据您的使用情况,您甚至可以避免\tmp

在此处输入图片描述

bc得到了

bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
2845.27559/345
8.24717562318840579710

所以结果与小数点后第八位一致,这对于 TeX 来说已经足够了。

相关内容