使用 TeX Live 2016 编译 tikz 的问题

使用 TeX Live 2016 编译 tikz 的问题

我在编译此 MWE 代码时遇到一些问题pdflatex在 Fedora 24 上,使用我从其网站和 DNF 包安装的 TexLive 2016。相同的代码适用于Windows 10 上最新的MiKTeX 2.9 安装。

这些是我遇到的错误。

Undefined control sequence. {x_{\ell-1} & x
Package PGF Math Error: Unknown operator `$' or `$H' (in '{$H_{\ell -1}$}'). {x_{\ell-1} & x

这是 MWE。

\documentclass{article}
\usepackage{tikz}
\usepackage{amsmath,amssymb,amsfonts,amsthm}

\usetikzlibrary{matrix, fit, arrows, calc, positioning, patterns, decorations.pathreplacing, decorations.markings}

\begin{document}

\begin{tikzpicture}
        \matrix(MX)[matrix of math nodes, row sep=0pt, column sep=0pt,%
        %text height=1.5ex, text depth=0.25ex,%
        minimum width=\widthof{$H_{\ell-1}$},%
        minimum height=\heightof{$H_{\ell-1}$}]
        {x_{\ell-1} & x_{\ell-2} & \cdots & x_{1} & x_{0} \\};
\end{tikzpicture}

\end{document}

在此先感谢您的帮助!

答案1

感谢 Torbjørn T. 的编辑,他发现早期版本的 PGF/TiZ 可能允许\widthof等等。参见使用 TeX Live 2016 编译 tikz 的问题

如果该代码在 MikTeX 上编译成功,则你的 PGF/Ti 版本Z 可能已过时。您正在加载的任何内容都未定义\widthof\heightof和 TiZ 可能不喜欢在这里使用它们。即使你加载了包calc,TiZ 不喜欢它(尽管在这种情况下你确实会遇到不同的错误)。

我不确定 PGF/Ti 的早期版本是如何运作的Z,但\widthof等等似乎已经被定义以允许在这种情况下使用它们。

有多种方法可以实现这一点,例如\pgfmathwidth\pgfmathheight标准 TikZ 定义了这些方法。但是,由于calc包的宏会给出错误,因此不能直接以该形式使用这些方法。

因此,最简单的解决方案是隐式调用它们,因为这样可以正常工作并且旨在允许这种事情。

\documentclass[border=10pt,multi,tikz]{standalone}
\usepackage{amsmath,amssymb}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
  \matrix(MX)[matrix of math nodes, row sep=0pt, column sep=0pt,
  minimum width=width("$H_{\ell-1}$"),
  minimum height=height("$H_{\ell-1}$")]
  {x_{\ell-1} & x_{\ell-2} & \cdots & x_{1} & x_{0} \\};
\end{tikzpicture}
\end{document}

简单的

相关内容