TikZ 缩放:无法缩放 tikzpicture

TikZ 缩放:无法缩放 tikzpicture

请看下面的图片。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用于node2tikzpic,然后由于箭头是根据这些节点定义的,因此它也不会受到影响。

要强制非平移变换对节点产生影响,您可以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 内部时,出现覆盖问题,并且还有大量相关问题可以查看其他内容。)

相关内容