![编辑](https://linux22.com/image/335156/%E7%BC%96%E8%BE%91.png)
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{}
只能在浮点数中使用。但是,caption
或capt-of
包可用于提供\captionof{<float type>}{<caption>}
外部浮点数。
添加
\usepackage{caption}
在序言中,我们可以修改图表以替换figure
,center
删除\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
或使用增加行距的类,或者手动增加了行距(从来不是一个好主意)或者改变了表格中行的默认高度或类似内容,那么这可能是造成该问题的原因。