使用 pgfgantt 自定义垂直线(pgf 乘数问题)

使用 pgfgantt 自定义垂直线(pgf 乘数问题)

我在使用包绘制甘特图中的垂直线时遇到了一些问题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的宏的定义。您可以暂时恢复此宏的原始定义,但我尚未测试这是否会破坏其他地方的任何内容。不过似乎有效。此外,您可能需要执行相同操作才能\@ifstarpgfgantthgrid

\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} 

相关内容