Я пытаюсь написать программу курса для класса, который встречается только в определенные дни недели (ПН, СР). Я хочу проверить день класса и перенести его на 2 дня или 5 дней в зависимости от дня. Следующий код, похоже, не работает (выдает ошибку в операторе \ifthenelse
)
\documentclass{article}
\usepackage{advdate}
\usepackage[ddmmyyyy]{datetime}
\usepackage{tikz}
\newdateformat{syldate}{\THEMONTH/\THEDAY%(\shortdayofweekname%{\THEDAY}{\THEMONTH}{\THEYEAR})}
\newcommand{\class}[1]{
\def \currday {\shortdayofweekname{\the\day}{\the\month}{\the\year}}
\ifthenelse{\equal{\currday}{Mon}}{\AdvanceDate[2]}{\AdvanceDate[5]}
\section* {\syldate{\today} \quad #1}
}
\SetDate[06/01/2014]
\begin{document}
\class{First Class}
\class{Second class}
\class{Class after holiday}
\end{document}
Причина, по которой я хочу сделать это, заключается в том, что я хочу проверить, \today
находится ли в списке праздников, и если да, то автоматически перейти к следующему учебному дню. Есть ли какие-нибудь советы, как это сделать? Более эффективный код также приветствуется.
решение1
Надеюсь, это то, что вам нужно:
\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}
Процесс сохраняет дату mydate
для присоединения к интерфейсамdatetime
иadvdate
. Сравнение с днем недели выполняется путем проверки ширины слова Mon
. Каждая трехбуквенная/короткая дата имеет разную длину: