是否可以减少 pgfgantt 中条之间的默认垂直空间?手册指定了“最后一行高度”,但似乎没有“行高”选项。
\documentclass[a4paper,11pt]{article}
\usepackage{pgfgantt}
\begin{document}
\section{}
\begin{tikzpicture}[x=3cm, y=0.75cm]
\begin{ganttchart}[bar={fill=red!50}]{5}
\gantttitle{2012--2017}{5} \\
\gantttitlelist{1,...,5}{1} \\
\ganttbar{PhD1}{1}{3.5} \\
\ganttbar{PhD2}{2.5}{5} \\
\end{ganttchart}
\end{tikzpicture}
\end{document}
答案1
我刚刚将 pgfgantt v2.0 提交给 CTAN。除了其他几个新功能外,此版本还引入了三个键x unit
、y unit title
和y unit chart
。这些键应允许您在标题和图表的其余部分使用不同的行高。
答案2
我能做的最好的就是将 y 比例调整为y=0.50cm
,并添加bar top shift=-0.1, bar height=0.6
以使水平条达到原始高度。这也需要调整标题设置,所以我想一定有更好的方法,但希望这能有所帮助:
\documentclass[a4paper,11pt]{article}
\usepackage{pgfgantt}
\begin{document}
\section{}
\begin{tikzpicture}[y=0.75cm]
\begin{ganttchart}[bar={fill=red!50},vgrid, hgrid]{5}
\gantttitle{2012--2017}{5} \\
\gantttitlelist{1,...,5}{1} \\
\ganttbar{PhD1}{1}{3.5} \\
\ganttbar{PhD2}{2.5}{5} \\
\end{ganttchart}
\end{tikzpicture}
%
\begin{tikzpicture}[y=0.50cm]
\begin{ganttchart}[bar={fill=red!50},vgrid, hgrid,
title height=.75, title top shift=0,
title label anchor={below=-1.5ex},
bar top shift=-0.1, bar height=0.6]{5}
\gantttitle{2012--2017}{5} \\
\gantttitlelist{1,...,5}{1} \\
\ganttbar{PhD1}{1}{3.5} \\
\ganttbar{PhD2}{2.5}{5} \\
\end{ganttchart}
\end{tikzpicture}
\end{document}
删除x=3cm
只是为了能够显示前后情况。
答案3
在 2013/06/01 版的 v4.0 中,你可以使用类似以下命令:
\begin{ganttchart}[y unit chart=2cm]{0}{10}
\ganttbar{magic}{3}{8}\\
\ganttbar{magic2}{2}{8}\\
\end{ganttchart}
参见第 7 页官方文档
答案4
嗯,看起来似乎没有任何方法可以直接在包中执行此操作。不过,实现它相对容易。它确实需要修改包,老实说,我还没有测试过它对链接、分组、进度等的影响。尽管如果有问题,它们可以以类似的方式修复。首先,我们需要添加一个选项键来影响行距。在 sty 文件的开头,您将看到很多 keydef,我们在这里添加我们的。让我们将键称为行距。
\@gtt@keydef{linespacing}
然后我们将其添加到ganttset
以确保其默认设置为 1。只需添加linespacing=1,
到列表中即可。现在,对于实际的修改,我们转到命令ganttbar
。这里我们有定义y@upper
,y@lower
这些定义决定了条的尺寸。我们对其进行如下修改:
\def\y@upper{\@gtt@get{linespacing}*\value{gtt@currentline}%
+\value{gtt@lasttitleline}-\@gtt@get{linespacing}*\value{gtt@lasttitleline}%
-\@gtt@get{bar top shift}}%
\def\y@lower{\@gtt@get{linespacing}*\value{gtt@currentline}%
+\value{gtt@lasttitleline}-\@gtt@get{linespacing}*\value{gtt@lasttitleline}%
-\@gtt@get{bar top shift}-\@gtt@get{bar height}}%
我们所做的就是根据我们指定的因子缩放标题中没有的换行符linespacing
。
您应该注意,不建议以这种方式更改包,尤其是没有像我在这里所做的那样检查所有选项。但它可以为您提供一种快速获得所需内容的方法。您永远不应该修改原始包,复制一份,将其放在本地 tex 树中并进行修改,将其命名为 mypgfgantt.sty 并包含它。
现在,您可以按照如下方式创建行距较少的图片:
\documentclass[a4paper,11pt]{article}
\usepackage{mypgfgantt}
\begin{document}
\begin{tikzpicture}
\begin{ganttchart}[bar={fill=red!50}]{5}
\gantttitle{2012--2017}{5} \\
\gantttitlelist{1,...,5}{1} \\
\ganttbar{PhD1}{1}{3.5} \\
\ganttbar{PhD2}{2.5}{5} \\
\end{ganttchart}
\end{tikzpicture}
%
\begin{tikzpicture}
\begin{ganttchart}[bar={fill=red!50},linespacing=0.5]{5}
\gantttitle{2012--2017}{5} \\
\gantttitlelist{1,...,5}{1} \\
\ganttbar{PhD1}{1}{3.5} \\
\ganttbar{PhD2}{2.5}{5} \\
\end{ganttchart}
\end{tikzpicture}
\end{document}
这是我第一次在这里发表帖子,希望它符合标准并且可以(某种程度上)解决你的问题。