
Tengo problemas con la implementación de una declaración if. Quiero saber si hoy y dentro de cinco días pasan en el mismo mes. Obtengo los valores correctos del mes correspondiente para imprimir pero cuando quiero probar si ambos números son iguales no funciona. La prueba siempre es falsa. Probablemente tenga algo que ver con el \newcommand que no almacena el resultado esperado o algo así, pero no puedo encontrar una solución.
\documentclass{article}
\usepackage{advdate}
\makeatletter
\renewcommand\AdvanceDate[1][\@ne]{\global\advance\day#1 \FixDate}
\makeatother
\usepackage{ifthen}
\begin{document}
\SetDate[30/08/2020]
\newcommand{\dd}{{\AdvanceDate[0]\the\month}}
\newcommand{\ddo}{{\AdvanceDate[1]\the\month}}
\newcommand{\ddf}{{\AdvanceDate[5]\the\month}}
\today \quad is during month \dd \quad and tomorrow is during month \ddo \quad but we are still {\AdvanceDate[-1]\today}
\newline
\today \quad is during month \dd \quad and five days from now is during month \ddf \quad but we are still {\AdvanceDate[-5]\today}
\newline
"Today and tomorrow happen in the same month" is \ifthenelse{\equal{\dd}{\ddo}}{TRUE}{FALSE} and we are still \today
\newline
"Today and five days from now happen in the same month" is \ifthenelse{\equal{\dd}{\ddf}}{TRUE}{FALSE} but we are still {\AdvanceDate[-5]\today}
\end{document}
¡Gracias!
Respuesta1
La macro \dd
no entrega directamente \the\month
, pero realiza varias instrucciones de asignación para llegar a ella.
Tampoco desea realizar asignaciones globales a \day
.
\documentclass{article}
\usepackage{advdate}
\usepackage{ifthen}
\newcommand{\ifsamemonthTF}[4]{%
\begingroup % compute the first date's month
\AdvanceDate[#1]%
\edef\x{\endgroup\def\noexpand\firstincrementmonth{\the\month}}\x
\begingroup % compute the first date's month
\AdvanceDate[#2]%
\edef\x{\endgroup\def\noexpand\secondincrementmonth{\the\month}}\x
\ifthenelse{\firstincrementmonth=\secondincrementmonth}{#3}{#4}%
}
\newcommand{\dd}{{\AdvanceDate[0]\the\month}}
\newcommand{\ddo}{{\AdvanceDate[1]\the\month}}
\newcommand{\ddf}{{\AdvanceDate[5]\the\month}}
\begin{document}
\SetDate[30/08/2020]
\today\ is during month \dd\ and tomorrow is during
month \ddo\ but we are still \today
\today\ is during month \dd\ and five days from now is during
month \ddf\ but we are still \today
``Today and tomorrow happen in the same month'' is
\ifsamemonthTF{0}{1}{TRUE}{FALSE} and we are still \today
``Today and five days from now happen in the same month'' is
\ifsamemonthTF{0}{5}{TRUE}{FALSE} but we are still \today
\end{document}