advdate и пропускать даты в зависимости от праздников

advdate и пропускать даты в зависимости от праздников

Я продолжаю вопрос здесь. Моя главная цель — написать программу и расписание для класса, который собирается только в определенные дни недели, учитывая некоторые праздники. В этомвопрос, Я спрашивал о том, как пропустить будние дни, которые не являются понедельником или неделей недели.

Теперь я хочу перейти к следующему учебному дню, если текущий учебный день приходится на праздник. Допустим, у меня есть список праздников {13/1/2014, 22/1/2014}. Я хочу проверить, попадает ли mydate или today в следующем коде на какой-либо из этих дней, и перейти к следующему учебному дню (M или W) в зависимости от того, какой случай. Например, я хочу, чтобы третий класс пришелся на 15/1, а шестой класс — на 27/1. Я не против, если это не совсем обобщаемо (т. е. нет необходимости проверять год, и я могу убедиться, что праздники, перечисленные в массиве, являются M или W).

 \documentclass{article}
 \usepackage[ddmmyyyy]{datetime}% http://ctan.org/pkg/datetime
 \usepackage{advdate}% http://ctan.org/pkg/advdate

  \newdateformat{syldate}{\THEMONTH/\THEDAY/\THEYEAR}%(\shortdayofweekname%{\THEDAY}{\THEMONTH}  {\THEYEAR})}

  \newsavebox{\MONDAY}\savebox{\MONDAY}{Mon}% Mon

  \makeatletter
   \newcommand{\cleardate}[1]{%
    \expandafter\let\csname date@#1@d\endcsname\relax% Clear day
    \expandafter\let\csname date@#1@m\endcsname\relax% Clear month
    \expandafter\let\csname date@#1@y\endcsname\relax% Clear year
    }
  \makeatother

  \newcommand{\class}[1]{%
  \cleardate{mydate}% Clear date
  \newdate{mydate}{\the\day}{\the\month}{\the\year}% Store date
  \section*{\displaydate{mydate} \quad #1}% Set heading
  \setbox1=\hbox{\shortdayofweekname{\getdateday{mydate}}{\getdatemonth{mydate}}{\getdateyear{mydate}}}%
  \ifdim\wd1=\wd\MONDAY
  \AdvanceDate[2]
  \else
  \AdvanceDate[5]
  \fi%
  }

  \SetDate[06/01/2014]

  \begin{document}

  \class{First class}
  \class{Second class}
  \class{Third class}
  \class{Fourth class}
  \class{Fifth class}
  \class{Sixth class}
  \class{Seventh class}

  \end{document}

Я думал использовать \foreach, но это не работает, так как foreachбудет пропускать каждый элемент списка. Я думал, что это \AdvanceDate[0]сработает, но, похоже, это не сохраняет \todayпосле выхода из цикла. Любая помощь приветствуется.

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