![advancedate y ifthenelse en látex](https://rvso.com/image/281565/advancedate%20y%20ifthenelse%20en%20l%C3%A1tex.png)
Estoy intentando escribir el programa de estudios de un curso para una clase que se reúne solo ciertos días de la semana (lunes, miércoles). Quiero consultar el día de la clase y adelantarlo 2 días o 5 días dependiendo el día. El siguiente código no parece funcionar (falla en la \ifthenelse
declaración)
\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}
La razón por la que quiero hacerlo de esta manera es porque quiero verificar si \today
está en una lista de días festivos y, de ser así, avanzar automáticamente al siguiente día de clase. ¿Algún consejo sobre cómo hacer esto? También se agradece un código más eficiente.
Respuesta1
Con suerte, esto es lo que buscas:
\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}
El proceso almacena la fecha mydate
para unir las interfaces dedatetime
yadvdate
. La comparación con el día de la semana se realiza probando el ancho de la palabra Mon
. Cada cita corta/de tres letras tiene una longitud diferente: