我想用 Latex 制作甘特图,因此我正在学习http://ftp.math.purdue.edu/mirrors/ctan.org/graphics/pgf/contrib/pgfgantt/pgfgantt.pdf,我看到
可以将任务名称放在右侧吗?像这样:
并且将名称与左侧对齐会很好。
以下是生成第一个图表的代码:
\documentclass{article}
\usepackage{pgfgantt}
\begin{document}
\begin{ganttchart}{1}{12}
\gantttitle{2011}{12} \\
\gantttitlelist{1,...,12}{1} \\
\ganttgroup{Group 1}{1}{7} \\
\ganttbar{Task 1}{1}{2} \\
\ganttlinkedbar{Task 2}{3}{7} \ganttnewline
\ganttmilestone{Milestone}{7} \ganttnewline
\ganttbar{Final Task}{8}{12}
\ganttlink{elem2}{elem3}
\ganttlink{elem3}{elem4}
\end{ganttchart}
\end{document}
如果我\begin{ganttchart}[group label node/.append style={anchor=west}]{1}{12}
这样做,我就会得到(但我希望该文本一直在右侧):
答案1
将锚点设置为 是正确的west
。此外,节点的水平(x 轴)位置需要从 0 移动到 [图表宽度]。为此,您需要更改 的代码pgfgantt.sty
,您可以使用包即时完成此操作xpatch
。
借用\ganttnewline
命令中的代码(大约 400 行),图表的宽度定义为\gtt@chartwidth * \ganttvalueof{x unit}
。标签节点使用坐标绘制(大约 960 行)(0, \y@mid pt)
。修补此行时,标签的位置会发生变化。
请注意,pgfgantt
为条形标签、组标签和里程碑标签定义了不同的样式,因此所有这三个标签都需要明确定义(我找不到所有线标签的单一设置)。
梅威瑟:
\documentclass{article}
\usepackage{pgfgantt}
\usepackage{xpatch}
\makeatletter
\xpatchcmd{\gtt@chartelement}{\node at (0, \y@mid pt)}{\node at (\gtt@chartwidth * \ganttvalueof{x unit}, \y@mid pt)}{}{}
\makeatother
\begin{document}
\begin{ganttchart}[bar label node/.append style={anchor=west},group label node/.append style={anchor=west},milestone label node/.append style={anchor=west}]{1}{12}
\gantttitle{2011}{12} \\
\gantttitlelist{1,...,12}{1} \\
\ganttgroup{Group 1}{1}{7} \\
\ganttbar{Task 1}{1}{2} \\
\ganttlinkedbar{Task 2}{3}{7} \ganttnewline
\ganttmilestone{Milestone}{7} \ganttnewline
\ganttbar{Final Task}{8}{12}
\ganttlink{elem2}{elem3}
\ganttlink{elem3}{elem4}
\end{ganttchart}
\end{document}
结果: