而「新甘特图」长这样 (by Google Doc 电子表格):简单来说,就是把进度表「压缩」成一列。(如果进度之间有重迭,再画成 2 列) 老实说,当我第一次看到朋友努力的用 Google 电子表格画这样的图时,差点晕倒。因为电子表格根本不是拿来这样用的!而且他们不仅是只有3种进度,而是有12种进度,每种进度还要赋予不同的颜色, 光选正确的颜色就可以让你花掉一些时间了。而且一个人手上也不仅只有 1 个案件,可能会多达 5~6 个案件。而且几乎是2~3天就会修订一次进度。我很难想象光是在那边改颜色、调整表格大小,要花掉多少的时间?(而且重点是:新图会比甘特图易懂吗?) 后来,我想到了是否可以用 LaTeX 来绘制这种 非正规甘特图?(我不敢称为「新甘特图」,因为这种图看起来并没有比甘特图更好) 当然,首先要先看看能否画出正规的甘特图。搜寻了一下 TeX 的套件库,果然找到了一个套件: pgfgantt . 这个套件可以支持画出正规的甘特图。我尝试的照着说明文件的范例在 LyX 里执行,果然可以。而且是只用 pdflatex 编译方式就可以了! (还有另外一个套件 pst-gantt 的套件也是可以画甘特图, 但是我稍微比较一下效果,感觉 pgfgantt 比较好用,所以就选择 pgfgantt 了) 为了推广给朋友用,我改为撰写纯文本的 .tex 档案,这样以后也比较好教他如何修改纯文本文件就好了。而不用再安装 LyX 了。 先按照说明文件的范例,画出正规的甘特图。
%% 此程序为范例测试程序 %% 作者: Mingyi Wu %% 日期: 2013/8/23 \documentclass[a4paper,landscape]{article} \usepackage{CJKutf8} \usepackage{clock} \usepackage{pgfgantt} \begin{document} \begin{CJK}{UTF8}{bsmi}% \begin{ganttchart}[ time slot format=isodate, %使用 yyyy-m-d 的格式 x unit = 6.5mm ]% {2013-8-20}{2013-9-7} % 整个图的 起始日期, 结束日期 % 产生 Gantt 图的日历表头 \gantttitlecalendar{year, month=name, day, weekday=shortname} \\ \ganttgroup{A案件}{2013-8-23}{2013-9-5} \\ \ganttbar{进度1}{2013-8-23}{2013-8-27} \\ \ganttlinkedbar{进度2}{2013-8-28}{2013-8-30} \ganttnewline \ganttbar{进度3}{2013-9-2}{2013-9-5} \ganttlink{elem2}{elem3} \end{ganttchart} \end{CJK} \end{document}
输出结果如下图。很简单的一张图,该有的元素都有了。要画出非正规的甘特图,需要修改3个地方: 首先,先移除掉联机,而且将 3 个进度排在同一列。这步骤很简单,只需要使用一般的 \ganttbar 命令就好,不要用带有链接线线功能的 \ganttlinkedbar 或 \ganttlink 命令。 画完一个进度,不需要换行,因此「进度2」就会排在「进度1」的右侧。换行的指令是两个反斜杠「\\」或是 \ganttnewline 指令,不需要换行的地方就删掉。 「进度n」的标示,要标示在框线内,因此要加入 inline 的选项: \ganttbar[inline] 。 也因此主要绘制的命令修改为:
\ganttgroup{A案件}{2013-8-23}{2013-9-5} \\ \ganttbar[inline]{进度1}{2013-8-23}{2013-8-27} \ganttbar[inline]{进度2}{2013-8-28}{2013-8-30} \ganttbar[inline]{进度3}{2013-9-2}{2013-9-5}
再排版一次,结果果然出现我所希望的非正规甘特图的模样了。剩下的,就只是调整美化的工作了,例如把 title bar, gantt bar 加高,画出直线,周末直线变红色,设定不同进度有不同的颜色,把一些英文的叙述变中文等等。 这部份太琐碎,而且说明文件中也已经写的很清楚,我就不详述了。 总之,奋战了一阵子微调程序代码之后,终于出现了稍微好看一点的结果。我将程序代码 copy 到 Windows 上,在 Windows 上安装最简易版的 MikTeX (不足的套件设定为自动下载安装),编译,一样成功输出 PDF 文件。 不过呢,最后朋友觉得改程序代码很麻烦,所以还是回去用 Google Doc 的电子表格了。 Orz... 但我还是学到了如何使用 pgfgantt 这个套件,在此做个纪录,以后有需要用 LaTeX 画甘特图的时候,就可以马上拿出来用了!
发表评论 取消回复