任务名称显示在 pgfgantt 图的右侧,可以吗?

任务名称显示在 pgfgantt 图的右侧,可以吗?

我想用 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}

结果:

在此处输入图片描述

相关内容