![Pgfgantt:任务名称和额外信息的表格或格式](https://linux22.com/image/438602/Pgfgantt%EF%BC%9A%E4%BB%BB%E5%8A%A1%E5%90%8D%E7%A7%B0%E5%92%8C%E9%A2%9D%E5%A4%96%E4%BF%A1%E6%81%AF%E7%9A%84%E8%A1%A8%E6%A0%BC%E6%88%96%E6%A0%BC%E5%BC%8F.png)
问题:我试图在使用 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}