更新至 TL 2017 后出现 \widthof 问题

更新至 TL 2017 后出现 \widthof 问题

我可以保证,以下示例在 2017 年之前可以正常运行。更新到 TL2017 后,出现了以下错误消息:

!Undefined control sequence.
\pgfmath@dimen@ ...men@@ #1=0.0pt\relax \pgfmath@

有什么迹象表明哪里出了问题?

\documentclass{scrartcl}
\usepackage{calc}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
 \node[text width=\widthof{ABC}] at (0,0) {bla};
\end{tikzpicture}
\end{document}

还有一个问题:如何处理数学表达式?

\documentclass{scrartcl}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
 \node[text width=width("n=10"))] at (0,0) {bla};
\end{tikzpicture}
\end{document}

这不起作用,但是这个变体可以:

\node[text width=width("{$n=10$}")] at (0,0) {bla};

答案1

早期版本的 TikZ 定义了一个\widthof宏,可以像你之前那样使用,你可能仍然会找到这样的例子。然而,在 TikZ 3 版本中,你可以改用width数学引擎的功能,然后说

\node[text width=width("ABC")] at (0,0) {bla};

关于你的最后一个问题,你的工作代码和非工作代码之间的关键区别在于括号的存在。我不知道具体发生了什么,但=我认为以某种方式绊倒了解析器。因此,这也有效:

\documentclass{scrartcl}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
 \node[text width=width("{n=10}")] at (0,0) {bla};
\end{tikzpicture}
\end{document}

相关内容