![如何才能轻松地使水平流程图中的后退箭头位于元素下方而不是上方?](https://linux22.com/image/434724/%E5%A6%82%E4%BD%95%E6%89%8D%E8%83%BD%E8%BD%BB%E6%9D%BE%E5%9C%B0%E4%BD%BF%E6%B0%B4%E5%B9%B3%E6%B5%81%E7%A8%8B%E5%9B%BE%E4%B8%AD%E7%9A%84%E5%90%8E%E9%80%80%E7%AE%AD%E5%A4%B4%E4%BD%8D%E4%BA%8E%E5%85%83%E7%B4%A0%E4%B8%8B%E6%96%B9%E8%80%8C%E4%B8%8D%E6%98%AF%E4%B8%8A%E6%96%B9%EF%BC%9F.png)
考虑以下 MWE:
\documentclass[border=2mm]{standalone}
\usepackage{smartdiagram}
\begin{document}
\centering
\smartdiagram[flow diagram:horizontal]{
Apply shampoo,
Lather,
Rinse
}
\end{document}
有没有简单的使用 smartdiagram 的内置功能使箭头沿着图表底部移动的方法,还是我必须开始弄乱 TikZ 和 smartdiagram 内部结构?
(我知道这只是一种惯例,但作为一名工程师,我希望反馈图围绕底部循环。)
答案1
如果你只是想使用smartdiagram
,你不能原生地做到这一点,但你可以添加一个简单的 Ti钾standalone
带覆盖的 Z 图片。请注意,这在documentclass上不起作用,因此article
在这里使用。
\documentclass{article}
\usepackage{smartdiagram}
\usepackage{tikz}
\usesmartdiagramlibrary{additions}
\begin{document}
\smartdiagramset{module x sep=3, back arrow disabled,}
\smartdiagramadd[flow diagram:horizontal]{Apply shampoo, Lather, Rinse}{}
\begin{tikzpicture}[overlay]
\draw[additional item arrow type,color=red!50] (module3) -- ++(0,-1) -| (module1);
\end{tikzpicture}
\end{document}
答案2
这是我的解决方案。您需要节点阴影吗?
\documentclass[tikz,border=5mm]{standalone}
\begin{document}
\begin{tikzpicture}[n/.style={draw,rounded corners,top color=white,bottom color=#1,minimum height=12mm,minimum width=2cm}]
\def\a{2.8}
\path
(0,0) node[n=cyan!30] (L) {Lather}
(\a,0) node[n=blue!30] (R) {Rinse}
(-\a,0) node[n=red!30,align=center] (A) {Apply\\shampoo}
;
\begin{scope}[>=stealth,line width=3pt]
\draw[->,cyan!50] (A)--(L);
\draw[->,blue!50] (L)--(R);
\draw[->,red!50] (R.south)--+(-90:.8)-|(A.south);
\end{scope}
\end{tikzpicture}
\end{document}
更新:使用 shadowing node
s (也可以使用shadows
库来完成)
\documentclass[tikz,border=5mm]{standalone}
\usetikzlibrary{backgrounds}
\begin{document}
\begin{tikzpicture}[
myshadow/.style={rounded corners,minimum height=12mm,minimum width=2cm},
n/.style={myshadow,draw=gray,thick,font=\sffamily,top color=white,bottom color=#1},
m/.style={myshadow,fill=gray!50,shift={(-45:.15)}}]
\def\a{2.8}
\path
(0,0) node[m]{} node[n=cyan!30] (L) {Lather}
(\a,0) node[m]{} node[n=blue!30] (R) {Rinse}
(-\a,0) node[m]{} node[n=red!30,align=center] (A) {Apply\\shampoo}
;
\begin{scope}[>=stealth,line width=3pt]
\draw[->,cyan!50] (A)--(L);
\draw[->,blue!50] (L)--(R);
\draw[->,red!50] (R.south)--+(-90:.8)-|(A.south);
\end{scope}
\end{tikzpicture}
\end{document}