![为什么使用 lengthconvert 包的输出时 pgfmathsetmacro 会失败?](https://linux22.com/image/439517/%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BD%BF%E7%94%A8%20lengthconvert%20%E5%8C%85%E7%9A%84%E8%BE%93%E5%87%BA%E6%97%B6%20pgfmathsetmacro%20%E4%BC%9A%E5%A4%B1%E8%B4%A5%EF%BC%9F.png)
我正在尝试绘制基于 缩放的矩形\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}
但该文档并不保证其有效。