编辑

编辑

smartdiagram我有四个与在环境中创建图表相关的问题,LaTex我无法找到互联网资源或自己解决这些问题:

1)如何标注图表?

2)如何让帧足够长,这样它们就不会打断单词?(使用较长的单词进行说明)

3) 如何将步骤描述放置在不紧跟在“步骤 X”字样之后而是使用间断的方式?

4) 目前,我的图表太长了,似乎唯一的改进方法是包含一个中断,该中断将在下一行开始下半部分。如何创建连接第一行的最后一个对象与第二行的第一个对象的箭头?像这样:

在此处输入图片描述

这就是我现在所拥有的:

在此处输入图片描述

\documentclass[12pt]{article}
\usepackage{smartdiagram}
\usesmartdiagramlibrary{additions}
\begin{document} 
\begin{center}
\smartdiagramset{uniform color list=white!60!black for 6 items,
    back arrow disabled=true, module minimum width=2cm,
    module minimum height=2cm,
    module x sep=3cm,
    text width=2cm,
    additions={
        additional item offset=0.5cm,
        additional item width=2cm,
        additional item height=2cm,
        additional item text width=3cm
      }
    }
    \smartdiagram[flow diagram:horizontal]{Step 1 refrigeration, Step 2 presidentially, Step 3 constitution, Step 4 etc, Step 5 etc, Step 6 etc} 
\end{center}


\end{document}

我对提供的解决方案有些疑问。请参阅随附的屏幕截图在此处输入图片描述

最后一张截图的代码:

\begin{center}
    \smartdiagramset{
        uniform color list=white!60!black for 6 items,
        back arrow disabled=true,
        module minimum width=2cm,
        module minimum height=2cm,
        module x sep=4cm,
        text width=3cm,
        additions={
            additional item offset=20mm,
            additional item width=2cm,
            additional item height=2cm,
            additional item text width=3cm,
            additional item shadow=drop shadow,
            additional item bottom color=white!60!black,
            additional item border color=gray,
            additional arrow color=gray,
        }}
        \smartdiagramadd[flow diagram:horizontal]{
            Step 1\\ I have soe issues with the solution, Step 2\\ Can the boxes get wider to include moe words per line?, Step 3\\
        }{
        below of module1/Step 4 Not sure why the arrows are now curvy,below of module2/Step 5 In the second half couldn't start with a new line,below of module3/Step 6
    }
    \smartdiagramconnect{->}{additional-module1/additional-module2,additional-module2/additional-module3}
    \begin{tikzpicture}[remember picture,overlay]% modified from p. 47 of manual
    \draw[additional item arrow type] (module3) |- ([yshift=-10mm]module1.south) -- (additional-module1);
    \end{tikzpicture}
    \vspace{40mm}\par

\end{center}

答案1

总的来说,我认为smartdiagram这是一个非常好的软件包,如果你想要一个它专门用来生成的图表,它很有用。然而,易用性有一个明显的缺点:它不可避免地比直接使用 TikZ 更不灵活。它不像使用库,比如说,你可以将附加功能与常规 TikZ 代码集成在一起。

但是,可以通过滥用模块的想法来修改图表以满足您的一些需求,而无需太多黑客行为additional(正如手册本身在第 20 页所展示的,针对不同类型的图表)。

  \smartdiagramadd[flow diagram:horizontal]{
    Step 1 refrigeration, Step 2 presidentially, Step 3 constitution
  }{
    below of module1/Step 4 etc.,below of module2/Step 5 etc.,below of module3/Step 6 etc.
  }
  \smartdiagramconnect{->}{additional-module1/additional-module2,additional-module2/additional-module3}

这样我们就得到了顶行中的 3 个模块和底行中的 3 个“附加”模块,并且箭头连接底行中的模块。

对于顶行和底行之间的箭头,我们需要 - 或者,至少,这看起来是最简单的 - 直接使用修改版本的命令来求助于 TikZ \smaartdiagramconnect

  \begin{tikzpicture}[remember picture,overlay]% modified from p. 47 of manual
    \draw[additional item arrow type] (module3) |- ([yshift=-10mm]module1.south) -- (additional-module1);
  \end{tikzpicture}

这个结果回答了你的第四个问题。

黑客行为

模块的宽度可以增加,例如

    module x sep=4cm,
    text width=3cm,

附加模块的匹配设置

       additional item text width=3cm,

主要模块可以按照以下方式Step No.直接分解

          Step 1\\refrigeration, Step 2\\presidentially, Step 3\\constitution

但请注意,这对附加模块不起作用,并且尝试在那里断线会导致错误。

结果解决了您的第二和第三个问题(第三个问题部分是由于解决第四个问题导致的复杂性)。

黑客技术 + 定制

正如我所说,如果你想要更细粒度的控制,那么不把自己限制在smartdiagram的范围内会更容易。它并不是为所有用户而设计的 - 已经有 TikZ 可以满足这一要求!

标记图表的技巧在于了解必须手动补偿附加模块所占用的空间,因为这些模块正式上不占用任何空间。

\begin{figure}
  \centering
   ...
  \vspace{40mm}\par
  \caption{My diagram}\label{fig:diag}
\end{figure}

这解决了第一个问题,累积结果如下所示。

最后结果

完整代码:

\documentclass[12pt]{article}
\usepackage{smartdiagram}
\usesmartdiagramlibrary{additions}
\begin{document}
\begin{figure}
  \centering
  \smartdiagramset{
    uniform color list=white!60!black for 6 items,
    back arrow disabled=true,
    module minimum width=2cm,
    module minimum height=2cm,
    module x sep=4cm,
    text width=3cm,
    additions={
      additional item offset=20mm,
      additional item width=2cm,
      additional item height=2cm,
      additional item text width=3cm,
      additional item shadow=drop shadow,
      additional item bottom color=white!60!black,
      additional item border color=gray,
      additional arrow color=gray,
    }}
  \smartdiagramadd[flow diagram:horizontal]{
    Step 1\\refrigeration, Step 2\\presidentially, Step 3\\constitution
  }{
    below of module1/Step 4 etc.,below of module2/Step 5 etc.,below of module3/Step 6 etc.
  }
  \smartdiagramconnect{->}{additional-module1/additional-module2,additional-module2/additional-module3}
  \begin{tikzpicture}[remember picture,overlay]% modified from p. 47 of manual
    \draw[additional item arrow type] (module3) |- ([yshift=-10mm]module1.south) -- (additional-module1);
  \end{tikzpicture}
  \vspace{40mm}\par
  \caption{My diagram}\label{fig:diag}
\end{figure}
\end{document}

编辑

回答评论中的问题...

\caption{}只能在浮点数中使用。但是,captioncapt-of包可用于提供\captionof{<float type>}{<caption>}外部浮点数。

添加

\usepackage{caption}

在序言中,我们可以修改图表以替换figurecenter删除\centering然后写入

\captionof{figure}{My diagram}\label{fig:diag}

而不是\caption{My diagram}...上面的那行。

非浮动图表

编辑 编辑

关于新发布的代码的问题,必须增加标准模块和附加模块的最小高度以适应文本的额外高度。否则,模块将无法正确对齐。

我发现使用

module minimum height=25mm,

additional item height=25mm,

当我编译代码时,比原来的大小2cm足够了。但是,我无法重现屏幕截图中显示的额外间距结果。

这是我使用的代码

\documentclass[12pt]{article}
\usepackage{smartdiagram,caption}
\usesmartdiagramlibrary{additions}
\begin{document}
\begin{center}
    \smartdiagramset{
        uniform color list=white!60!black for 6 items,
        back arrow disabled=true,
        module minimum width=2cm,
        module minimum height=25mm,
        module x sep=4cm,
        text width=3cm,
        additions={
            additional item offset=20mm,
            additional item width=2cm,
            additional item height=25mm,
            additional item text width=3cm,
            additional item shadow=drop shadow,
            additional item bottom color=white!60!black,
            additional item border color=gray,
            additional arrow color=gray,
        }}
        \smartdiagramadd[flow diagram:horizontal]{
            Step 1\\ I have soe issues with the solution, Step 2\\ Can the boxes get wider to include moe words per line?, Step 3\\
        }{
        below of module1/Step 4 Not sure why the arrows are now curvy,below of module2/Step 5 In the second half couldn't start with a new line,below of module3/Step 6
    }
    \smartdiagramconnect{->}{additional-module1/additional-module2,additional-module2/additional-module3}
    \begin{tikzpicture}[remember picture,overlay]% modified from p. 47 of manual
    \draw[additional item arrow type] (module3) |- ([yshift=-10mm]module1.south) -- (additional-module1);
    \end{tikzpicture}
    \vspace{45mm}\par
    \captionof{figure}{My other diagram}\label{fig:otherdiag}
\end{center}
\end{document}

结果如下

增加对准高度

正如您所建议的,另一个选择是修改节点的宽度而不是高度。

使用

    ...
    module minimum height=20mm,
    module x sep=4.75cm,
    text width=38mm,
    additions={
        additional item width=2cm,
        additional item height=20mm,
        additional item text width=38mm,
        ...

完成这项工作。除了增加节点的宽度以避免它们重叠之外,还需要增加节点之间的距离。

在这种情况下,当然,图表下方的额外垂直空间可以保持原样。

...
\vspace{40mm}\par
\captionof{figure}{Another version of my other diagram}\label{fig:anotherdiag}
...

更宽的节点

正如所见,无论增加高度还是宽度,我的结果中的行距都比您的结果中的行距近得多。大概您省略了示例中导致行距增加的代码。这就是为什么包含完全的最小示例,在编译时实际重现问题。当人们不得不猜测如何完成您的代码时,他们并不总是以正确或错误的方式完成它以重现问题。

也就是说,如果您正在使用setspace或使用增加行距的类,或者手动增加了行距(从来不是一个好主意)或者改变了表格中行的默认高度或类似内容,那么这可能是造成该问题的原因。

相关内容