合并 Tikz 图片

合并 Tikz 图片

是否可以合并使用不同环境创建的两个 tikz 图片?

基本上我有一个宏创建一个我经常使用的背景,但我想在它上面创建一个层,每次使用它时它都会改变,所以

\backdrop
\begin{tikzpicture}

\end {tikzpicture}

但让 tikzpicture 使用与背景中创建的相同的坐标轴、比例等和位置

(背景只是标题中提到的另一张 tikz 图片)

或者我可以嵌套图片吗?

\begin{tikzpicture}
\backdrop
\end {tikzpicture}

(我还没有尝试过看看它是否有效)

答案1

类似这样的事?

\documentclass[border=1cm]{standalone}

\usepackage{tikz}

\newcommand{\backdrop}{
   \draw (0,0) grid (5,5);
   % more TikZ code
}

\begin{document}
\begin{tikzpicture}
   \backdrop
   \draw [thick, green] (1,1) -- (4,4);
\end{tikzpicture}\quad
\begin{tikzpicture}[xscale=2]
   \backdrop
   \draw [thick, red] (1,1) -- (4,4);
\end{tikzpicture}
\end{document}

结果

当使用层时,调用的位置甚至都不重要\backdrop

\pgfdeclarelayer{backdrop}
\pgfsetlayers{backdrop,main}

\newcommand{\backdrop}{
      \begin{pgfonlayer}{backdrop}
         \fill [yellow] (2,2) rectangle (3,3);
         \draw (0,0) grid (5,5);
         % more TikZ code
      \end{pgfonlayer}
}

答案2

很难帮助你,因为你没有提供太多的信息,也没有最小工作示例(MWE),至少可以显示你的背景是什么样子。

这是我的新建议。

使用以下类创建背景图像standalone

% backdrop.tex
\documentclass[border=0cm]{standalone}

\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
   \draw [blue] (0,0) grid (5,5);
\end{tikzpicture}
\end{document}

backdrop.pdf给出我们现在可以包含在主文档中的图像文件。为此,我们创建一个\backdrop包含三个命令的命令选修的参数:

\backdrop(coordiate)[node options][graphic options]

第一个 on 接受 TikZ 坐标,如0,0,第二个将选项传递给node,后者将选项传递给\includegraphics。由于所有都是可选的,因此如果您只想使用第三个参数,则必须给出一个空的第二个参数(参见下面的示例)。如果您\backdrop在文本模式下调用,它肯定会忽略前两个参数。注意:您只能更改节点包含图像,但不是图像本身,因为它是 PDF……

\documentclass{scrartcl}

\usepackage{tikz}
\usepackage{graphicx}
\usepackage{xparse}

% define a default style for the backdrop node
\tikzset{
   backdrop node/.style={%
      inner sep=0pt,
      outer sep=0pt,
      anchor=south west,
   },
}

% define the layers
\pgfdeclarelayer{backdrop}
\pgfsetlayers{backdrop,main}

% defin the command to print the backdrop image
\NewDocumentCommand{\backdrop}{D(){0,0} O{} O{}}{%
   \tikzifinpicture{% inside a TikZ-Picture
      \begin{pgfonlayer}{backdrop}
         \node at (#1) [backdrop node,#2]
               {\includegraphics[#3]{backdrop}};
      \end{pgfonlayer}
   }{% in normal Text
      \includegraphics[#3]{backdrop}
   }%
}

\begin{document}
\section*{outside}
\backdrop
\section*{inside}
\begin{tikzpicture}
   \backdrop
   \fill [yellow] (1,1) rectangle (2,2);
   \draw [red, ultra thick] (1,1) -- (4,4);
   \backdrop(6,0)
   \backdrop[rotate=30]
   \backdrop[][width=1cm]
   \backdrop(8.5,2.5)[anchor=center][width=3cm]
\end{tikzpicture}
\end{document}

这就是结果:
结果

相关内容