# pgfgantt: How to display week numbers according to ISO 8601 counting scheme?

Since the 53-week year happens only occasionally and never in quick succession, I think in this case, it is easier to hardwire 53 weeks for the particular case when \ifnum\startyear=2020 rather than develop an ISO 8601-compliant version. It is the former course which I have done in the MWE.

\documentclass{standalone}
\usepackage{pgfgantt}

\newcounter{resetWeekNum}
\stepcounter{resetWeekNum}
\newcommand{\resetWeek}{ %
\theresetWeekNum
\stepcounter{resetWeekNum}
\ifnum\startyear=2020
\ifnum\theresetWeekNum=54
\setcounter{resetWeekNum}{1}
\else\fi
\else
\ifnum\theresetWeekNum=53
\setcounter{resetWeekNum}{1}
\else\fi
\fi
}

\begin{document}

\setcounter{resetWeekNum}{27}
\ganttset{calendar week text=\scriptsize{\resetWeek{}}}

\begin{ganttchart}
[   time slot format    =   isodate,
x unit              =   2mm,
vgrid               =   true,
]   {2019-07-01}{2021-05-16}

\gantttitlecalendar{year, month=name,week=1 day} \\ % weekday=letter
\ganttbar{WP1}{2019-04-01}{2020-12-27} \\
\ganttbar{WP2}{2019-04-01}{2020-12-31} \\
\ganttbar{WP2}{2019-04-01}{2021-01-03} \\

\end{ganttchart}

\end{document}


I agree with Steven that this may be some sort of an overkill. On the other hand the calendar library has the nice \pgfcalendarifdate built in, so...

\documentclass{standalone}
\usepackage{pgfgantt}
\newif\ifspecialweek
\newcounter{resetWeekNum}
\stepcounter{resetWeekNum}
\newcommand{\resetWeek}{ %
\theresetWeekNum
\stepcounter{resetWeekNum}
\specialweekfalse
\pgfcalendarifdate{31-12-\startyear}{Thursday}{\global\specialweektrue}{}
\pgfcalendarifdate{31-12-\startyear}{Friday}{\global\specialweektrue}{}
\pgfcalendarifdate{31-12-\startyear}{Saturday}{\global\specialweektrue}{}
\pgfcalendarifdate{31-12-\startyear}{Sunday}{\global\specialweektrue}{}
\ifspecialweek
\ifnum\theresetWeekNum=54
\setcounter{resetWeekNum}{1}
\fi
\else
\ifnum\theresetWeekNum=53
\setcounter{resetWeekNum}{1}
\fi
\fi
}

\begin{document}

\setcounter{resetWeekNum}{27}
\ganttset{calendar week text=\scriptsize{\resetWeek}}

\begin{ganttchart}
[   time slot format    =   isodate,
x unit              =   2mm,
vgrid               =   true,
]   {2019-07-01}{2021-05-16}

\gantttitlecalendar{year, month=name,week=1 day} \\ % weekday=letter
\ganttbar{WP1}{2019-04-01}{2020-12-27} \\
\ganttbar{WP2}{2019-04-01}{2020-12-31} \\
\ganttbar{WP2}{2019-04-01}{2021-01-03} \\

\end{ganttchart}

\end{document}