Pgfgantt:任务名称和额外信息的表格或格式

Pgfgantt:任务名称和额外信息的表格或格式

问题:我试图在使用 pgfgantt 制作的甘特图上包含更多有关任务名称的信息,格式为:ID、任务名称、持续时间以及可能的更多信息(例如开始/结束日期)。我计划制作特定时期的双周和摘要甘特图,因此我需要包含 ID,以便可以引用它们。

我现在的方法:我使用带有\parbox's 的自定义命令,以便可以正确包含和分隔信息,但我找不到在其上方包含标题以指定信息含义的方法,例如“ID”、“任务名称”、“持续时间”。我也无法找到包含边界等格式的方法,使其类似于表格。

我想要的是:最好的情况下,如果有一种方法可以将信息放在甘特图左侧的表格中,这将是理想的,但如果这不可能或困难(我不太了解 TikZ,我读到这是 pgfgantt 使用的),那么可以引入边界的方法(“1| 示例任务名称 | 3 天”)和/或第一个条目上方的标题会很好。我愿意使用其他方法,\parbox但如果需要的话,这是一种备用方法。我从 pgfgantt 手册中获得了 MWE 中的大部分代码,我认为这是一个例子。

梅威瑟:

\documentclass{article}
\usepackage{pgfgantt}
\usepackage[landscape]{geometry}

\newcommand\TEF[3]{\textbf{[#1]}\hspace{0.2cm}\parbox{3cm}{#2}\hspace{0.2cm}\parbox{1cm}{#3}}

\begin{document}
\begin{ganttchart}[ %
    vgrid, hgrid,
    y unit title=0.6cm,
    y unit chart=0.5cm,
    title label font=\tiny,
    bar label font=\tiny,
    group label font=\tiny,
    milestone label font=\tiny,
    today label font=\tiny,
    vrule label font=\tiny]{1}{24}
\gantttitle{2011}{24} \\
\gantttitlelist{1,...,24}{1} \\
\ganttgroup{\TEF{3}{Text to see if it puts it in right}{14 days}}{1}{7} \\
\ganttbar{\TEF{3}{Text to see if it puts it in right}{2 days}}{1}{2} \\
\ganttlinkedbar{\TEF{3}{Text to see if it puts it in right}{2 days}}{3}{7} \ganttnewline
\ganttmilestone{\TEF{3}{Text to see if it puts it in right}{2 days}}{7} \ganttnewline
\ganttbar{\TEF{3}{Text to see if it puts it in}{2 days}}{8}{12}
\ganttlink{elem2}{elem3}
\ganttlink{elem3}{elem4}

\end{ganttchart}
\end{document}

目前的情况:

在此处输入图片描述

任何帮助都将不胜感激,我也不确定为什么“#天”和图表之间会有这么大的差距。

答案1

一种可能性是使用 来设置bar-group-milestone- label node键的样式rectangle split,以制作 3 列。然后,您可以使用命令的修改版本\TEF将内容放置在每个 中nodepart。然后,可以将每个nodepart格式化为必要的宽度、对齐方式等。列标题只是一个 ,ganttbar不会绘制条形图。

% https://tex.stackexchange.com/q/612214/
\documentclass{article}
\usepackage{pgfgantt}
\usepackage[landscape]{geometry}
\usetikzlibrary{shapes.multipart}
\newcommand\TEF[3]{\nodepart[text width=0.75cm,align=center]{one}\textbf{[#1]} 
                   \nodepart[text width=3cm]{two}{#2} 
                   \nodepart[text width=1.0cm,align=right]{three}{#3}
                   }

\begin{document}

\begin{ganttchart}[ %
    vgrid, hgrid,
    y unit title=0.6cm,
    y unit chart=0.75cm,
    title label font=\tiny,
    bar label font=\tiny,
    bar label node/.append style={rectangle split, rectangle split parts=3,rectangle split horizontal,draw,},
    group label font=\tiny,
    group label node/.append style={rectangle split, rectangle split parts=3,rectangle split horizontal,draw},
    milestone label font=\tiny,
    milestone label node/.append style={rectangle split, rectangle split parts=3,rectangle split horizontal,draw},
    today label font=\tiny,
    vrule label font=\tiny]{1}{12}
\gantttitle{2011}{12} \\
\gantttitlelist{1,...,12}{1} \\
\ganttbar{\TEF {ID} {Task Name} {Duration}}{1} {0} \\
\ganttgroup{\TEF {1} {Text to see if it puts it in right} {14 days}} {1} {7} \\
\ganttbar{\TEF {2} {Text to see if it puts it in right} {2 days}} {1} {2} \\
\ganttlinkedbar{\TEF {3} {Text to see if it puts it in right} {2 days}} {3} {7} \ganttnewline
\ganttmilestone{\TEF {4} {Text to see if it puts it in right} {2 days}} {7} \ganttnewline
\ganttbar[bar/.append style={fill=green}]{\TEF {5} {Text to see if it puts it in} {2 days}} {8} {12}
\ganttlink{elem2}{elem3}
\ganttlink{elem3}{elem4}
\end{ganttchart}

\end{document}

由此得出: 在此处输入图片描述

相关内容