问题是关于在智能图表中调整模块的大小(包:)smartdiagram
。以下代码
\smartdiagram[flow diagram:horizontal]{A,BB,CCC,DDDD}
生成水平流程图。但模块大小不适合内容。是否可以根据其内容调整模块大小(块大小)。例如,第一个模块的大小最小,最后一个模块的大小最大。
答案1
该smartdiagram
包不提供这样的选项。但是,由于模块只是 tikz 节点,因此您可以非常轻松地编辑包定义的样式,以实现可变的模块大小。这里相关的键是text width
,因为这会将节点的文本放在一个框中至少给定的宽度。
\documentclass{article}
\usepackage{smartdiagram}
\makeatletter % N.B.
\tikzset{module/.style={%
\pgfkeysvalueof{/smart diagram/module shape},
thick,
draw=\sm@core@bordercolor,
top color=white,
bottom color=\col,
text=\sm@core@textcolor,
% text width=\sm@core@moduletextwidth, % Only necessary change
minimum width=\sm@core@modulewidth,
minimum height=\sm@core@moduleheight,
font=\sm@core@modulefontsize,
\sm@core@borderdecoration
},
diagram arrow type/.style={%
\sm@core@arrowstyle,
>=\sm@core@arrowtip,
line width=\sm@core@arrowlinewidth,
\col
},%
}
\makeatother
\begin{document}
% Set minimums so module sizes are reasonable
\smartdiagramset{module minimum height=1cm,% initial: 1cm
module minimum width=0.8cm,% initial: 2cm
module x sep=2}% initial 2.75
\smartdiagram[flow diagram:horizontal]{A,BB,CCC,DDDD}
\end{document}
我只是注释掉了关键部分。进行此更改后,您可能需要设置模块的最小宽度和高度,这可以通过包提供的接口smartdiagram
以通常的方式完成(\smartdiagramset
)。我还减少了 module x sep
,以避免现在较小的模块之间出现不雅的间隙。
输出: