\node 中带有文本高度或文本深度的控制序列 \pgfmath@ 未定义

\node 中带有文本高度或文本深度的控制序列 \pgfmath@ 未定义

使用 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$}}
}

相关内容