请看下面的图片。scale
pgfkey
对内部有用tikzpicture
,但对外部无效。
梅威瑟:
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\node[draw](node2){Node 2};
\node[below=of node2](tikzpic){%
\begin{tikzpicture}[scale=2]
\draw [step=0.25cm,lightgray,very thin] (0,0) grid (2.5,1.5);
\end{tikzpicture}
};
\draw[->,ultra thick] (node2) -- (tikzpic);
\end{tikzpicture}
%
\begin{tikzpicture}[scale=2]
\node[rectangle,draw](node2){Node 2};
\node[below=of node2](tikzpic){%
\begin{tikzpicture}
\draw [step=0.25cm,lightgray,very thin] (0,0) grid (2.5,1.5);
\end{tikzpicture}
};
\draw[->,ultra thick] (node2) -- (tikzpic);
\end{tikzpicture}
\end{document}
答案1
如果你保证在之前和之后洗手并消化 Andrew 的回答,那就这样做吧。我对这个问题不太敏感,但他告诉你正确的(和规定的)方法。
嵌套的样式不会继承样式,因为没有设置every picture
样式。但您可以强制执行。您还需要包含transform shape
键以让节点吸收当前的变换。但这会使嵌套的样式缩放 4 倍。因为它首先在外部缩放两次,然后在内部缩放两次。
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\tikzset{for this and nested ones/.style={#1,every picture/.style={#1}}}
\begin{document}
\begin{tikzpicture}
\node[draw](node2){Node 2};
\node[below=of node2](tikzpic){%
\begin{tikzpicture}[scale=2]
\draw [step=0.25cm,lightgray,very thin] (0,0) grid (2.5,1.5);
\end{tikzpicture}
};
\draw[->,ultra thick] (node2) -- (tikzpic);
\end{tikzpicture}
%
\begin{tikzpicture}[for this and nested ones={scale=2,transform shape}]
\node[rectangle,draw](node2){Node 2};
\node[below=of node2](tikzpic){%
\begin{tikzpicture}
\draw [step=0.25cm,lightgray,very thin] (0,0) grid (2.5,1.5);
\end{tikzpicture}
};
\draw[->,ultra thick] (node2) -- (tikzpic);
\end{tikzpicture}
\end{document}
答案2
它对外部有效,但在外部没有任何东西受其影响。图片中的所有内容都是根据节点定义的,节点通常不受非平移变换的影响。因此不适scale=2
用于node2
或tikzpic
,然后由于箭头是根据这些节点定义的,因此它也不会受到影响。
要强制非平移变换对节点产生影响,您可以transform shape
在该节点上使用键。要强制所有节点都产生影响,请使用“every node/.append style={transform shape}”:
\documentclass{article}
%\url{https://tex.stackexchange.com/q/86730/86}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\node[draw](node2){Node 2};
\node[below=of node2](tikzpic){%
\begin{tikzpicture}[scale=2]
\draw [step=0.25cm,lightgray,very thin] (0,0) grid (2.5,1.5);
\end{tikzpicture}
};
\draw[->,ultra thick] (node2) -- (tikzpic);
\end{tikzpicture}
%
\begin{tikzpicture}[scale=2]
\node[rectangle,draw](node2){Node 2};
\node[transform shape,below=of node2](tikzpic){%
\begin{tikzpicture}
\draw [step=0.25cm,lightgray,very thin] (0,0) grid (2.5,1.5);
\end{tikzpicture}
};
\draw[->,ultra thick] (node2) -- (tikzpic);
\end{tikzpicture}
\end{document}
生成:
嵌套图片通常不是一个好主意 - TikZ 并未设定 tikzpictures 是嵌套的,因此无法特别控制从一张图片到另一张图片的设置“泄漏”(从内到外或从外到内)。最好将您的图片形成为单张图片,使用范围来分离内容,使用矩阵来定位内容。在这种特殊情况下,将其重新创建为单个图表非常简单 - 这让我怀疑这是一个精心设计的示例,用于展示您遇到的问题(这是一件非常好的事情!)。因此,虽然我很乐意尝试为您将其重新创建为单个图片,但您的真实示例可能更复杂,这样做不会那么有启发性。如果您需要帮助将嵌套图片重新表述为单个图片(假设我已经说服了您!),请随时提出新问题。
(这里有相当多不同的帖子处理嵌套 tikz 图片的问题。它是只要您知道自己在做什么,并且知道可能出现什么问题,这都是可能的。可能出现问题的一个例子是当一个 tikzpicture 位于另一个 tikzpicture 内部时,出现覆盖问题,并且还有大量相关问题可以查看其他内容。)