разрешение pgfgantt; месяц для заголовка, день для полос

разрешение pgfgantt; месяц для заголовка, день для полос

Я пока не нашел хорошего решения для представления задач (полос) для ежедневного решения без чрезмерно загруженного заголовка диаграммы Ганта, т.е. ограничения ее ежемесячным решением.

Я хотел бы определить время начала и окончания для групп и задач/отрезков с помощью спецификатора даты в формате: гггг-мм-дд.

Вот пример:

\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

Вот предложение. Оно поставляется с командой \Ganttbarentry, которая работает очень похоже на вашу собственную команду, \ganttbarentryза исключением того, что она принимает шесть параметров вместо четырех. Последние два параметра — это начальный и конечный дни, например

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

вы получите полосу, которая начинается 3 марта и заканчивается 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}

введите описание изображения здесь

Это можно улучшить многими способами. Один из способов — заставить его анализировать полную дату (вместо того, чтобы пользователь разделял ее вручную). Это кажется выполнимым, но требует больше усилий, чем можно было бы наивно ожидать. И текущая версия предполагает, что в каждом месяце 30 дней. Реализация этого тоже кажется выполнимой, но еще более утомительной.

Связанный контент