나는 여기의 질문에 대해 후속 조치를 취하고 있습니다. 나의 주요 목적은 일부 공휴일을 고려하여 특정 요일에만 열리는 수업의 강의 계획서와 일정을 작성하는 것입니다. 이에질문, M, W가 아닌 평일을 건너 뛰는 방법에 대해 문의하셨습니다.
이제 현재 수업일이 공휴일인 경우 다음 수업일로 건너뛰고 싶습니다. {13/1/2014, 22/1/2014} 공휴일 목록이 있다고 가정해 보겠습니다. 다음 코드의 mydate 또는 today가 해당 날짜 중 하나에 속하는지 확인하고 경우에 따라 다음 수업일(M 또는 W)로 건너뛰고 싶습니다. 예를 들어, 나는 3학년이 15월 1일에, 6학년이 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
도움을 주시면 감사하겠습니다.