由於主管與部屬分屬不同兩地,因此該主管便希望能利用 Google Doc 裡面的功能,建立甘特圖。因此該主管開始嘗試著使用 Gantter for Google Driver 這個 web 界面的應用程式,並且推廣給部屬們使用。
原本這是美事一樁,善用現成的資源,提高生產力。但後來,事情開始轉變了。
不知道是該主管的主管看不懂,還是其他管理單位的人員看不懂甘特圖,他們後來決定放棄現成的甘特圖不用,要自己發明一套「新甘特圖」。而且因為 Google Doc 上沒有其他現成軟體可以支援這種「新甘特圖」,因此主管便要求部屬們「腦力激盪」,用 Google Doc 裡面的試算表畫出「新甘特圖」。
什麼叫做「新甘特圖」呢?
原本的甘特圖長這樣 (by Gantter for Google Driver):
而「新甘特圖」長這樣 (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 畫甘特圖的時候,就可以馬上拿出來用了!
下載原始碼 Gantt.zip
沒有留言:
張貼留言