![Tikz 中两个节点之间的绘图](https://linux22.com/image/405317/Tikz%20%E4%B8%AD%E4%B8%A4%E4%B8%AA%E8%8A%82%E7%82%B9%E4%B9%8B%E9%97%B4%E7%9A%84%E7%BB%98%E5%9B%BE.png)
我想弄清楚为什么我无法在节点之间画一条水平实心蓝线???
\documentclass{article}
\usepackage{tikz,amsmath}
\usetikzlibrary{positioning}
\begin{document}
\begin{center}
\begin{tikzpicture}
\node(X)[draw,rectangle, rounded corners,draw=black,
fill=white,align=center,xshift=-6cm]
{\large Input \textcolor{red}{$2$}};%
\node(Y)[draw,rectangle, rounded corners,draw=black,
fill=white,align=center,xshift=-.5cm]
{\large $\begin{aligned}[t] g(\textcolor{red}
{2})&=\textcolor{red}{2}^{2}+1\\ &=5\end{aligned}$\\
\large The output of $g$, \textcolor{blue}{$5$},is\\
\large the input to $f$};%
\node (Z)[draw,rectangle, rounded corners,draw=black,
fill=white,align=center,xshift=6cm]
{\large $\begin{aligned}[t] f(\textcolor{blue}
{5})&=4(\textcolor{blue}{5})-3\\ &=17\end{aligned}$};%
\end{tikzpicture}
\end{center}
\begin{tikzpicture}
\draw[blue,thick,-latex] (X.east) to ( Y.west);
\end{tikzpicture}
\end{document}
答案1
假设您想要两个单独的tikzpicture
s ,则需要分别添加remember picture
和overlay,remember picture
。
\documentclass{article}
\usepackage{tikz,amsmath}
\usetikzlibrary{positioning}
\begin{document}
\begin{center}
\begin{tikzpicture}[remember picture]
\node(X)[draw,rectangle, rounded corners,draw=black,
fill=white,align=center,xshift=-6cm]
{\large Input \textcolor{red}{$2$}};%
\node(Y)[draw,rectangle, rounded corners,draw=black,
fill=white,align=center,xshift=-.5cm]
{\large $\begin{aligned}[t] g(\textcolor{red}
{2})&=\textcolor{red}{2}^{2}+1\\ &=5\end{aligned}$\\
\large The output of $g$, \textcolor{blue}{$5$},is\\
\large the input to $f$};%
\node (Z)[draw,rectangle, rounded corners,draw=black,
fill=white,align=center,xshift=6cm]
{\large $\begin{aligned}[t] f(\textcolor{blue}
{5})&=4(\textcolor{blue}{5})-3\\ &=17\end{aligned}$};%
\end{tikzpicture}
\end{center}
\begin{tikzpicture}[overlay,remember picture]
\draw[blue,thick,-latex] (X.east) to ( Y.west);
\end{tikzpicture}
\end{document}
当然,你也可以只使用一个tikzpicture
。
\documentclass{article}
\usepackage{tikz,amsmath}
\usetikzlibrary{positioning}
\begin{document}
\begin{center}
\begin{tikzpicture}
\node(X)[draw,rectangle, rounded corners,draw=black,
fill=white,align=center,xshift=-6cm]
{\large Input \textcolor{red}{$2$}};%
\node(Y)[draw,rectangle, rounded corners,draw=black,
fill=white,align=center,xshift=-.5cm]
{\large $\begin{aligned}[t] g(\textcolor{red}
{2})&=\textcolor{red}{2}^{2}+1\\ &=5\end{aligned}$\\
\large The output of $g$, \textcolor{blue}{$5$},is\\
\large the input to $f$};%
\node (Z)[draw,rectangle, rounded corners,draw=black,
fill=white,align=center,xshift=6cm]
{\large $\begin{aligned}[t] f(\textcolor{blue}
{5})&=4(\textcolor{blue}{5})-3\\ &=17\end{aligned}$};%
\draw[blue,thick,-latex] (X.east) to ( Y.west);
\end{tikzpicture}
\end{center}
\end{document}
两个代码的输出都是
答案2
受到薛定谔猫答案中第二个例子的启发。使用库chains
和他的宏join
,定位并定义所有节点的通用样式:
\documentclass{article}
\usepackage{tikz,amsmath}
\usetikzlibrary{chains,
positioning}
\begin{document}
\begin{center}
\begin{tikzpicture}[
node distance = 22mm,
start chain = going right,
box/.style = {draw, rounded corners, font=\large,
align=center, on chain},
every join/.style = {blue,thick,-latex}
]
\node (X) [box] {Input \textcolor{red}{$2$}};%
\node (Y) [box, join]
{$\begin{aligned}[t]
g(\textcolor{red}{2}) & = \textcolor{red}{2}^{2}+1\\
& = 5
\end{aligned}$\\
The output of $g$, \textcolor{blue}{$5$}, \\
is the input to $f$};
\node (Z) [box] {$\begin{aligned}[t]
f(\textcolor{blue}{5}) & = 4(\textcolor{blue}{5})-3\\
& = 17
\end{aligned}$};%
\end{tikzpicture}
\end{center}
\end{document}