我想计算两个长度之间的比率,以便使用 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}
这显然不适用于大尺寸。考虑到1pt
第28.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 来说已经足够了。