我曾经pgfgantt
为我的博士论文提案绘制过甘特图。除了菱形之外,还有其他方法可以插入其他符号来创建里程碑吗?
如果有字母、笑脸、软盘等符号就太好了。
答案1
如果你看一下pgfgantt
文档,就会发现 amilestone
不仅仅是一个符号,而是一个pgfshape
。因此,你需要用另一种形状替换它。
但幸运的是,Alain Matthes 写了一篇shapes.emoticon
图书馆在他的回答中\frownie 和 \smiley 之间的某个字符。将文件放入tikzlibraryshapes.emoticon.code.tex
工作文件夹后,您将能够执行以下操作:
\documentclass[tikz,border=2mm]{standalone}
\usepackage{pgfgantt}
\usetikzlibrary{shapes.emoticon}
\begin{document}
\begin{ganttchart}[
vgrid,
hgrid,
milestone/.append style={shape=emoticon happy,fill=yellow}
]{1}{12}
\gantttitle{Title}{12} \\
\ganttbar{Task 1}{1}{4} \\
\ganttlinkedbar{Task 2}{5}{6} \\
\ganttlinkedmilestone{M 1}{6} \\
\ganttlinkedbar{Task 3}{7}{11}
\end{ganttchart}
\end{document}
我可能是错的,但我发现使用其他符号的唯一方法是milestone
通过milestone labels
。使用选项,和inline
的所有标签都写在其对应元素上,而不是在左侧。ganttbars
milestones
on
这种解决方案不太灵活,因为它不仅影响所有标签,milestones
而且更糟糕的是,不同的符号具有不同的大小、基线、边距等。因此,您必须根据自己的喜好调整每个特定的符号。
接下来是一个例子\Letter
(来自 ifsym)。
\documentclass[tikz,border=2mm]{standalone}
\usepackage{pgfgantt}
\usepackage[misc]{ifsym}
\usetikzlibrary{shapes.emoticon}
\begin{document}
\begin{ganttchart}[
vgrid,
hgrid,
inline,
milestone/.append style={shape=rectangle,draw=none, fill=none},
milestone inline label anchor=south,
milestone label text={\Letter}
]{1}{12}
\gantttitle{Title \Letter}{12} \\
\ganttbar{Task 1}{1}{4} \\
\ganttlinkedbar{Task 2}{5}{6} \\
\ganttlinkedmilestone{M 1}{6} \\
\ganttlinkedbar{Task 3}{7}{11}
\end{ganttchart}
\end{document}