TiKz 链是一个很棒的工具,我正在阅读带标签边缘的链例子。
这个例子使用矩阵来放置节点,然后使用链将它们连接在一起。当然这是可以的,但我在想如果我们只放置节点然后链会自动连接它。
所以我只写一个简单的例子:
\documentclass[a4paper,10pt]{article}
\usepackage{tikz}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{5pt}%
\usetikzlibrary{arrows,chains,matrix,positioning,scopes}
\makeatletter
\tikzset{join/.code=\tikzset{after node path={%
\ifx\tikzchainprevious\pgfutil@empty\else(\tikzchainprevious)%
edge[every join]#1(\tikzchaincurrent)\fi}}}
\makeatother
\tikzset{>=stealth',every on chain/.append style={join},
every join/.style={->}}
\tikzstyle{labeled}=[execute at begin node=$\scriptstyle,
execute at end node=$]
\begin{document}
\begin{tikzpicture}
\node (A) {A};
\node [right=of A] (B) {B};
{ [start chain] \chainin (A);
\chainin (B) [join={node[above,labeled] {\eta_1}}];;
}
\end{tikzpicture}
\end{document}
现在它运行完美,但我想知道我们是否可以将节点语句与绘制语句结合在一起。可能看起来像下面(当然现在它不起作用)!
\begin{tikzpicture}
{ [start chain] \chainin \node (A) {A};;
\chainin \node [right=of A] (B) {B}; [join={node[above,labeled] {\eta_1}}];;
}
\end{tikzpicture}
有可能让它工作吗?
答案1
您可以简单地说on chain
将节点连接到链中。而且使用 TikZ v3.00 可以更轻松地向边添加标签。
\documentclass[tikz]{standalone}
\usetikzlibrary{arrows,chains,positioning,scopes,quotes}
\begin{document}
\begin{tikzpicture}[>=stealth']
{[start chain]
\node[on chain] (A) {A};
\node[on chain,join=by {->,"$\eta_1$"},right=of A] (B) {B};
\node[on chain,join=by {<-,"$\eta_2$"},right=of B] (C) {C};
\node[on chain,join=by {bend left,->,"$\int dx$"},right=of C] (D) {D};
}
\end{tikzpicture}
\end{document}