我觉得我发现了一个错误智能图表包。“统一颜色列表”选项允许您为<n>
项目指定一种颜色。但是,当指定数字时<n>
,会在生成的流程图左侧插入一个水平空间。指定的数字越大<n>
,空间越大。
以下是 MWE:
\documentclass[border=10pt]{standalone}
\usepackage{smartdiagram}
\begin{document}
\smartdiagramset{
% remove this option or increase the value for <n> to compare the spacing
uniform color list=gray!40 for 5 items
}
\smartdiagram[flow diagram]{
One,
Two,
Three,
Four,
Five}
\end{document}
删除“统一颜色列表”选项后,左侧的空间消失。<n>
例如,当将数字增加到 100 时,问题变得非常明显。
以下是两个生成的文档的比较,其中在第一个文档中“统一颜色列表”选项指定为<n>
5,而在第二个文档中未指定。
我目前的解决方法是根本不使用“统一颜色列表”选项。相反,我重新定义所有预定义颜色并将它们设置为相同的所需值,如下所示:
\makeatletter
\@namedef{color@1}{gray!40}
\@namedef{color@2}{gray!40}
\@namedef{color@3}{gray!40}
\@namedef{color@4}{gray!40}
\@namedef{color@5}{gray!40}
\@namedef{color@6}{gray!40}
\@namedef{color@7}{gray!40}
\@namedef{color@8}{gray!40}
\@namedef{color@9}{gray!40}
\@namedef{color@10}{gray!40}
\makeatother
这不是一个理想的解决方案。我还能做什么?
答案1
更新
smartdiagram
此行为是由于版本中已修复的一个错误造成的2016/12/23 v0.3b
。如果可能,您应该更新你的 TeX 发行版安装当前版本。如果无法做到这一点,例如,如果您只想更改这一个包,或者您没有权限更新整个发行版,则需要在本地安装包。此选项应被视为最后的手段,因为对于更复杂的包,可能存在包依赖性,这会使本地安装更加复杂且容易出错。
原始答案(基于 0.3a 版本smartdiagram
)
未受保护的行尾:
\documentclass[border=10pt]{standalone}
\usepackage{smartdiagram}
\makeatletter
\pgfkeys{/smart diagram/.cd, uniform color list/.code args={#1 for #2 items}{%
\foreach \listitem [count=\i] in {1,...,#2}{%
\global\@namedef{color@\i\expandafter}\expandafter{#1}%
}%
}%
}
\makeatother
\begin{document}
\smartdiagramset{
% remove this option or increase the value for <n> to compare the spacing
uniform color list=gray!40 for 5 items
}
\smartdiagram[flow diagram]{
One,
Two,
Three,
Four,
Five}
\end{document}
原始代码在smartdiagramlibrarycore.definitions.code.tex
168 \pgfkeys{/smart diagram/.cd, uniform color list/.code args={#1 for #2 items}{
169 \foreach \listitem [count=\i] in {1,...,#2}{
170 \global\@namedef{color@\i\expandafter}\expandafter{#1}
171 }
172 }
173 }
use predefined color list
还应修复以下代码:
\pgfkeys{/smart diagram/.cd, use predefined color list/.code={%
\@namedef{color@1}{red!30}%
\@namedef{color@2}{cyan!30}%
\@namedef{color@3}{blue!30}%
\@namedef{color@4}{green!30}%
\@namedef{color@5}{orange!30}%
\@namedef{color@6}{yellow!30}%
\@namedef{color@7}{magenta!30}%
\@namedef{color@8}{brown!30}%
\@namedef{color@9}{violet!30}%
\@namedef{color@10}{teal!30}%
}%
}
总体而言,所有.code
部分都应获得类似的保护。