我尝试使用带有坐标的 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 被封闭了。