我在使用包绘制甘特图中的垂直线时遇到了一些问题pgfgantt
。方法是使用格式定义图表中的条形图dd-mm-yyyy
,但仅显示月份。
为了保持清晰,用垂直(虚线)线将月份分开会很有用。我还没有找到自动执行此操作的方法(vgrid 为每一天画一条线),所以我最终跳过了(month length - 1)
每个月的线。主要问题是,有没有更好的方法来获得正确的垂直线?
其次,下面的 MWE 在\documentclass[tikz]{standalone}
设置中有效,但在设置中使用时会导致错误\documentclass[a4paper,11pt]{article}
:
! Package pgfkeys Error: I do not know the key '/tikz/*{30}{draw=none}' and I am going to ignore it. Perhaps you misspelled it.
我正在使用 pgfgantt 版本2013/06/01 v4.0
。我需要添加其他软件包吗?发生了什么?
[编辑]事实证明这与软件包存在冲突amsmath
,请参阅下面的评论。现已修复。
平均能量损失
\documentclass[tikz]{standalone}
\usepackage{pgfgantt}
\begin{document}
\begin{ganttchart}[y unit title=7mm,title height=1,y unit chart=10mm,bar top shift=.2,bar height=.6,bar/.append style={fill=black!10},bar label node/.append style={align=right},progress label text=,hgrid={*1{black!10, dashed}},vgrid={*{29}{draw=none}, dashed, *{30}{draw=none}, dashed, *{30}{draw=none}, dashed, *{27}{draw=none}, dashed, *{30}{draw=none}, dashed, *{29}{draw=none}, dashed, *{30}{draw=none}},x unit=.4mm,time slot format=little-endian]{01-11-2014}{31-05-2015}
\gantttitlecalendar{month=shortname} \\
\ganttbar{Topic I}{16-11-2014}{22-12-2014}
\ganttbar{}{05-01-2015}{00-02-2015} \ganttnewline
\ganttbar{Topic II}{16-01-2015}{16-05-2015}
\end{ganttchart}
\end{document}
答案1
这是因为更改了用于读取样式定义amsmath
的宏的定义。您可以暂时恢复此宏的原始定义,但我尚未测试这是否会破坏其他地方的任何内容。不过似乎有效。此外,您可能需要执行相同操作才能\@ifstar
pgfgantt
hgrid
\documentclass[tikz]{standalone}
\usepackage{pgfgantt}
\makeatletter
\let\origifstar=\@ifstar
\ganttset{
vgrid/.code={%
\begingroup
\let\@ifstar=\origifstar
\def\@tempa{#1}%
\def\@tempb{false}%
\ifx\@tempa\@tempb%
\gtt@vgridfalse%
\else%
\gtt@vgridtrue%
\def\@tempb{true}%
\ifx\@tempa\@tempb%
\def\gtt@vgridstyle{dotted}%
\else%
\def\gtt@vgridstyle{#1}%
\fi%
\fi%
\endgroup
},%
vgrid/.default=dotted
}
\makeatother
\usepackage{amsmath}%<---- Delay the amsmath loading
\begin{document}
\begin{ganttchart}[
y unit title=7mm,
title height=1,
y unit chart=10mm,
bar top shift=.2,
bar height=.6,
bar/.append style={fill=black!10},
bar label node/.append style={align=right},
progress label text=,hgrid={*1{black!10, dashed}},
vgrid={ *{29}{draw=none}, dashed, *{30}{draw=none}, dashed, *{30}{draw=none}, dashed, *{27}{draw=none}, dashed, *{30}{draw=none}, dashed,*{29}{draw=none},dashed, *{30}{draw=none}},
x unit=.4mm,time slot format=little-endian]{01-11-2014}{31-05-2015}
\gantttitlecalendar{month=shortname} \\
\ganttbar{Topic I}{16-11-2014}{22-12-2014}
\ganttbar{}{05-01-2015}{00-02-2015} \ganttnewline
\ganttbar{Topic II}{16-01-2015}{16-05-2015}
\end{ganttchart}
\end{document}