为什么使用 lengthconvert 包的输出时 pgfmathsetmacro 会失败?

为什么使用 lengthconvert 包的输出时 pgfmathsetmacro 会失败?

我正在尝试绘制基于 缩放的矩形\textwidth。 的缩放功能\begin{tikzpicture}很好用,但在那种环境下,我想使用厘米而不是点。如果我在 中硬编码转换,\newcommand*一切正常。如果我尝试使用 lengthconvert 包导出因子,它会出错。

复制者:

\documentclass[letterpaper]{article}
\usepackage[margin=1cm,verbose,showframe]{geometry}
\usepackage{lengthconvert}
\usepackage{tikz}

\newcommand*{\lettertextwidthpt}{557.38951pt}%
%\newcommand*{\lettertextwidthcm}{\Convert[unit=cm,number-only]{\lettertextwidthpt}}% This fails.
\newcommand*{\lettertextwidthcm}{19.59}% This succeeds.

\begin{document}

\noindent
\begin{tikzpicture}[scale=\textwidth / \lettertextwidthpt]
        \pgfmathsetmacro{\maxbits}{64}
        \pgfmathsetmacro{\bitwidthcm}{\lettertextwidthcm / \maxbits}
\end{tikzpicture}

\end{document} 

错误如下:

! Undefined control sequence.
\pgfmath@dimen@ ...men@@ #1=0.0pt\relax \pgfmath@ 
                                                  
l.15 ...bitwidthcm}{\lettertextwidthcm / \maxbits}

虽然我想知道为什么会失败,但我也想知道如何识别未定义的控制序列以及我应该用 Google 搜索什么来找到答案。

谢谢。

答案1

你很幸运,因为有时你可以在 pgfmath 中使用单位。

\documentclass{article}
\usepackage{tikz}

\newcommand*{\lettertextwidthpt}{557.38951pt}%
\pgfmathsetmacro\lettertextwidthcm{\lettertextwidthpt/1cm}

\begin{document}

\lettertextwidthcm %%% shows 19.59001

\end{document}

但该文档并不保证其有效。

相关内容