是否可以将两个现有的 TikZ 图片合并为一个?我有两张这种类型的图片,想在一个tikzpicture
环境中将它们放在彼此下方(并在两张图片之间添加一些箭头),而无需编辑所有坐标:
\begin{tikzpicture}[domain=0:2.1, smooth, scale=0.8]
\draw[->] (0,0) -- (4.2,0);
\draw[->] (0,0) -- (0,3.2);
\draw[] (1,0) -- (1,-0.15) node[below] {$\alpha_0$};
\draw[color=red,thick,samples=500] plot (\x,{3*exp(-5*(\x-1)^2});
\draw[color=blue,dashed,thick,samples=500] plot (\x,{3*exp(-5*(\x-1)^2});
\end{tikzpicture}
有没有简单的方法可以做到这一点?
答案1
您只需将两张 TikZ 图片放在另一张 TikZ 图片的节点内,即可将它们合并为一张。只要您不必担心编译时间,就可以编写类似下面的代码。
它还有助于处理中间的箭头。
\documentclass{article}
\usepackage{tikz}
\usepackage[graphics,tightpage,active]{preview}
\PreviewEnvironment{tikzpicture}
\begin{document}
\begin{tikzpicture}
\node (a) at (0,0)
{
\begin{tikzpicture}
\draw (0,0) circle (1cm);
\end{tikzpicture}
};
\node (b) at (a.south) [anchor=north,yshift=-1cm]
{
\tikz\fill[blue] (0,0) circle (0.7cm);
};
\draw [<->] (a)--(b);
\end{tikzpicture}
\end{document}
答案2
要移动图片的一部分,可以使用{scope}
和以下移动选项之一:
shift=<coordinate>
{}
(当参数包含逗号时,必须用括号括起来,
)xshift=<distance>
yshift=<distance>
在下面的例子中,我将使用shift
一个预定义坐标(shift)
(名称无关紧要),以便以后轻松访问移位。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
% Shifting coordinate (optional)
\coordinate (shift) at (0,-3);
% First image, without a scope
\draw (0,0) circle (1);
\fill (2,-1) rectangle ++(4,2);
%% named node
\node (A 1) at (8,0) {Node 1};
%% named coordinate
\coordinate (C 1) at (10,0);
\begin{scope}[shift=(shift)]
\draw (8,0) circle (1);
\fill (2,-1) rectangle ++(4,2);
\node (A 2) at (0,0) {Node 2};
\coordinate (C 2) at (10,0);
\end{scope}
% Connection line
%% A) use named coordinates nodes
\draw [red,->] (A 1) -- (A 2);
%% B) use named coordinates
\draw [blue, ->] (C 2) -- (C 1);
%% C) use calculation with (shift)
\draw [green, ->] (0,0) -- ($(8,0)+(shift)$);
%% D) shift a single coordinate
\draw [orange, ->] (2,-1) -- ([shift=(shift)] 4,1);
\end{tikzpicture}
\end{document}
要访问两个坐标系,我更喜欢使用命名节点或坐标,它们基本上是相同的(示例中的红色和蓝色箭头)。但也可以使用库calc
并通过使用(绿色箭头)手动添加移位($<coord>+(shift)$)
。正如 Qrrbrbirlbel 所说,也可以将该shift
选项应用于单个坐标(橙色箭头)。