pgfgantt 解像度; タイトルの月、バーの日付

pgfgantt 解像度; タイトルの月、バーの日付

過度に複雑なガント タイトルを使用せずに、つまり月単位の解像度に制限することなく、タスク (バー) を日単位の解像度で表すための適切なソリューションをまだ見つけていません。

グループとタスク/バーの開始時刻と終了時刻を、yyyy-mm-dd 形式の日付指定子を使用して定義したいと思います。

ここに mwe があります:

\NeedsTeXFormat{LaTeX2e}
\documentclass[10pt]{standalone}
\usepackage{pgfgantt}
\usepackage[scaled]{helvet}

\newcommand{\graphstart}{2019-01}   % start of graph (two months buffer)
\newcommand{\graphend}{2019-09} % end date  (two months buffer)

\renewcommand\familydefault{\sfdefault}

% create a new command for a ganttbar entry
\newcommand{\ganttbarentry}[4]{%
\ganttbar[bar/.append style={pattern color = #1}]{#2}{#3}{#4}%
}%

\begin{document}
\begin{ganttchart}[
vgrid,
hgrid,
x unit=0.47cm,
y unit chart=0.41cm,
time slot format=isodate-yearmonth,
time slot unit=month,
%compress calendar=true,
bar/.append style={pattern=north west lines, pattern color = cyan},%
]{\graphstart}{\graphend}
\gantttitlecalendar{year, month}\\
%

\ganttgroup{Group I}{2019-03}{2019-05} \\%
% March 4th - 6th
    \ganttbarentry{gray}{Task I}{2019-03}{2019-03} \\%
% March 15 - April 5th
    \ganttbarentry{gray}{Task II}{2019-03}{2019-03} \\%
\\

\ganttgroup{Group II}{2019-03}{2019-05} \\%
% March 4th - 6th
    \ganttbarentry{gray}{Task I}{2019-03}{2019-03} \\%
% March 4th - March 15th
    \ganttbarentry{gray}{Task II}{2019-04}{2019-04} \\%

\end{ganttchart}
\end{document}

出力はブロック状で、月単位の解像度に制限されます。

ここに画像の説明を入力してください

答え1

ここに提案があります。これは、 4つのパラメータではなく6つのパラメータを取ることを除いて、\Ganttbarentryあなたのコマンドと非常によく似たコマンドです\ganttbarentry。最後の2つのパラメータは開始日と終了日です。つまり、

\Ganttbarentry{gray}{Task I}{2019-03}{2019-03}{4}{6}

3 月 3 日に開始し、4 月 4 日に終了するバーが表示されます。

\NeedsTeXFormat{LaTeX2e}
\documentclass[10pt]{standalone}
\usepackage{pgfgantt}
\usepackage[scaled]{helvet}

\newcommand{\graphstart}{2019-01}   % start of graph (two months buffer)
\newcommand{\graphend}{2019-09} % end date  (two months buffer)

\renewcommand\familydefault{\sfdefault}

% create a new command for a ganttbar entry
\newcommand{\ganttbarentry}[4]{%
\ganttbar[bar/.append style={pattern color = #1}]{#2}{#3}{#4}%
}%
\newcommand{\Ganttbarentry}[6]{%
\ganttbar[/pgfgantt/bar left shift=#5/30,
    /pgfgantt/bar right shift=#6/30,bar/.append style={pattern color = #1}]{#2}{#3}{#4}%
}%



\begin{document}
\begin{ganttchart}[
vgrid,
hgrid,
x unit=0.47cm,
y unit chart=0.41cm,
time slot format=isodate-yearmonth,
time slot unit=month,
%compress calendar=true,
bar/.append style={pattern=north west lines, pattern color = cyan},%
]{\graphstart}{\graphend}
\gantttitlecalendar{year, month}\\
%

\ganttgroup{Group I}{2019-03}{2019-05} \\%
% March 4th - 6th
\Ganttbarentry{gray}{Task I}{2019-03}{2019-03}{4}{6} \\%
% March 15 - April 5th
\Ganttbarentry{gray}{Task II}{2019-03}{2019-03}{15}{5} \\%

\ganttgroup{Group II}{2019-03}{2019-05} \\%
% March 4th - 6th
\Ganttbarentry{gray}{Task I}{2019-03}{2019-03}{4}{6} \\%
% March 4th - March 15th
\Ganttbarentry{gray}{Task II}{2019-04}{2019-04}{4}{15} \\%

\end{ganttchart}
\end{document}

ここに画像の説明を入力してください

これは、さまざまな方法で改善できます。1 つの方法は、日付全体を解析するようにすることです (ユーザーが手動で分割するのではなく)。これは実行可能と思われますが、単純に予想するよりも手間がかかります。また、現在のバージョンでは、各月が 30 日であると想定されています。これを実装することも実行可能と思われますが、さらに面倒です。

関連情報