
Я пока не нашел хорошего решения для представления задач (полос) для ежедневного решения без чрезмерно загруженного заголовка диаграммы Ганта, т.е. ограничения ее ежемесячным решением.
Я хотел бы определить время начала и окончания для групп и задач/отрезков с помощью спецификатора даты в формате: гггг-мм-дд.
Вот пример:
\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 дней. Реализация этого тоже кажется выполнимой, но еще более утомительной.