使用坐标时 TikZ 的拟合库出现错误

使用坐标时 TikZ 的拟合库出现错误

我尝试使用带有坐标的 TikZ 拟合库,但它无法编译。

在 TikZ 手册中我们得到

必须将此选项提供给节点路径命令。坐标或节点应为 Tik Z 坐标或节点名称的序列,一个接一个,没有逗号(与绘图坐标路径操作类似)。示例为 (1,0) (2,2) 或 (a) (1,0) (b),其中 a 和 b 是节点。

所以我尝试

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{fit}
\begin{document}
\begin{tikzpicture}
    \node (foo) at (0,0) {foo};
    \node (bar) at (2,0) {bar};
    \node[draw, fit=(0,0) (2,0)] {};
\end{tikzpicture}
\end{document}

并收到以下错误:

! Undefined control sequence.
\pgfmathsetlength ...\pgfmath@onquick #2\pgfmath@ 
                                              {\begingroup \pgfmath@sele...
l.9         \node[draw, fit=(0,0) (2,0)]
                                     {};

如果我使用节点标签而不是坐标,如下所示,则不会出现任何错误。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{fit}
\begin{document}
\begin{tikzpicture}
    \node (foo) at (0,0) {foo};
    \node (bar) at (2,0) {bar};
    \node[draw, fit=(foo) (bar)] {};
\end{tikzpicture}
\end{document}

我在用着

$ pdflatex --version
pdfTeX 3.1415926-2.4-1.40.13 (TeX Live 2012)
kpathsea version 6.1.0
...

$ tlmgr info pgf 
package:     pgf
...
installed:   Yes
revision:    22614
cat-version: 2.10
cat-date:    2010-10-27 12:56:09 +0200
cat-license: lppl1.3
collection:  collection-pictures
...

答案1

使用括号括住坐标 - fit={(0,0) (2,0)}

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{fit}
\begin{document}
\begin{tikzpicture}
    \node  (foo) at (0,0) {foo};
    \node (bar) at (2,0) {bar};
    \node[draw, fit={(0,0) (2,0)}] {};
\end{tikzpicture}
\end{document}

在此处输入图片描述

由于节点会延伸到坐标之外以容纳文本,因此图片很难看。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{fit}
\begin{document}
\begin{tikzpicture}
    \node [draw=red,inner sep=0pt] (foo) at (0,0) {foo};
    \node [draw=red,inner sep=0pt] (bar) at (2,0) {bar};
    \node[draw=blue, fit={(0,0) (2,0)}] {};
\end{tikzpicture}
\end{document}

在此处输入图片描述

更好的方法是使用标签:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{fit}
\begin{document}
\begin{tikzpicture}
    \node [draw=red] (foo) at (0,0) {foo};
    \node [draw=red] (bar) at (2,0) {bar};
    \node[draw=blue, fit=(foo) (bar)] {};
\end{tikzpicture}
\end{document}

在此处输入图片描述

node这里,与坐标不同,整个s 被封闭了。

相关内容