使用 smartdiagram 包适应智能图表模型中的内容

使用 smartdiagram 包适应智能图表模型中的内容

问题是关于在智能图表中调整模块的大小(包:)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,以避免现在较小的模块之间出现不雅的间隙。

输出:

在此处输入图片描述

相关内容