![Smartdiagram:块间距离相等(优先描述图)](https://linux22.com/image/413791/Smartdiagram%EF%BC%9A%E5%9D%97%E9%97%B4%E8%B7%9D%E7%A6%BB%E7%9B%B8%E7%AD%89%EF%BC%88%E4%BC%98%E5%85%88%E6%8F%8F%E8%BF%B0%E5%9B%BE%EF%BC%89.png)
我正在尝试使优先级描述图中的块之间实现相等的距离。
问题是并非所有节点都具有相同数量的线,但显然块的中心是等距的,与块大小无关。
我在文档中找到的唯一相关选项是descriptive items y sep
,但这只是一个比例因子,没有偏移。
\documentclass[tikz]{standalone}
\usepackage{tikz}
\usepackage{smartdiagram}
\begin{document}
\smartdiagramset{
uniform color list=blue!10 for all items,
% descriptive items y sep=2.5 -> only a factor, no absolute value :(
}
\smartdiagram[priority descriptive diagram]{
\textbf{Small node},
\textbf{Small node},
\textbf{Big node}\\Here\\are\\multiple\\lines,
\textbf{Small node}
}
\end{document}
答案1
是的,看起来这些节点的 y 坐标只是设置为某个给定长度的倍数,因此没有设置可以自动执行此操作。不过,手动创建类似的图表并不是一项艰巨的工作。在下面的代码中,我重用了 中的一些样式smartdiagram
。
\documentclass[tikz,border=5mm]{standalone}
\usepackage{tikz}
\usepackage{smartdiagram}
\usetikzlibrary{chains, backgrounds}
\begin{document}
\begin{tikzpicture}
% \col is used in the description style so needs to be defined
\newcommand{\col}{blue!10}
\begin{scope}[
% when naming the chain "c", the nodes in the chain are named c-1, c-2 etc.
start chain=c going above,
% set distance between nodes
node distance=2mm,
local bounding box=a
]
\foreach \t in {
\textbf{Small node},
\textbf{Small node},
\textbf{Big node}\\Here\\are\\multiple\\lines,
\textbf{Small node}}
\node [description, drop shadow, on chain, align=center] {\t};
\end{scope}
% \distancemodules is used in the priority arrow style, so needs to be defined
% sets length of big arrow
\newcommand{\distancemodules}{7cm}
% draw big arrow on side
\node [priority arrow, left=7mm, anchor=before tail] (f) at (a.south west) {};
% draw ticks on big arrow
\foreach \i in {1,...,4}
\draw [\col, line width=5pt] (c-\i -| f.south) -- (c-\i -| f.north);
\end{tikzpicture}
\end{document}