![\node 中带有文本高度或文本深度的控制序列 \pgfmath@ 未定义](https://linux22.com/image/333798/%5Cnode%20%E4%B8%AD%E5%B8%A6%E6%9C%89%E6%96%87%E6%9C%AC%E9%AB%98%E5%BA%A6%E6%88%96%E6%96%87%E6%9C%AC%E6%B7%B1%E5%BA%A6%E7%9A%84%E6%8E%A7%E5%88%B6%E5%BA%8F%E5%88%97%20%5Cpgfmath%40%20%E6%9C%AA%E5%AE%9A%E4%B9%89.png)
使用 pdflatex(来自 TeX Live 2015)编译时,以下文件出现此错误。我该如何修复它?我做错了什么?
错误
\pgfmath@dimen@ ...men@@ #1=0.0pt\relax \pgfmath@
l.27 ...e,draw=none] (idx) {index:\hspace*{10pt}};
似乎使用text height=...
或text depth=...
都会导致错误(见下面的注释行)。这在以前编译得很好,但我相信从那时到现在我已经做了tlmgr update --all
。
平均能量损失
\documentclass{article}
\usepackage{tikz}
\usepackage{calc}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\usetikzlibrary{chains}
% Errors
\tikzstyle{tape}=[draw,
text height=\heightof{$\sum_{i=1}^{n-1} m_i$},
text depth=\depthof{$\sum_{i=1}^{n-1} m_i$}]
% Errors
% \tikzstyle{tape}=[draw,text height=\heightof{$\sum_{i=1}^{n-1} m_i$}]
% Errors
% \tikzstyle{tape}=[draw,text depth=\depthof{$\sum_{i=1}^{n-1} m_i$}]
% No error
% \tikzstyle{tape}=[draw]
\begin{scope}[start chain=0 going right,node distance=0mm]
\node [on chain=0,tape,draw=none] (idx) {index:\hspace*{10pt}};
\node [on chain=0,tape] {$k_1$};
\node [on chain=0,tape] {$\ldots$};
\node [on chain=0,tape] {$k_n$};
\node [on chain=0,tape,draw=none] {$=$};
\node [on chain=0,tape] {$0$};
\node [on chain=0,tape] {$\ldots$};
\node [on chain=0,tape] {$\sum_{i=1}^{n-1} m_i$};
\end{scope}
\end{tikzpicture}
\end{figure}
\end{document}
我在这里发现了几个有类似错误的问题,但无法将任何答案转换为针对这种情况的修复。
答案1
calc
的宏不可扩展,尽管 PGF 需要一个数学值。
PGF 确实提供了自己的测量功能:
depth("…")
,width("…")
和height("…")
。
"
因为它们逃避了对文本的评估,所以它们是必需的。
如果您的文本中有,
、=
或]
,则必须将值括在括号中。
例如:
\tikzset{
text vert/.style={
text height={height("#1")},
text depth={depth("#1")}},
type/.style={draw, text vert={$\sum_{i=1}^{n-1} m_i$}}
}