Estoy usando isodate
el paquete desde
- Un usuario debe insertar la fecha como título del capítulo en el formato como en el ejemplo:
31/12/1987
- El capítulo debe tener como título
31st Dec 1987
,
siguiendo alguna publicación aquí llegué a:
\documentclass{book}
\usepackage[orig,british]{isodate}
\usepackage{blindtext}
\makeatletter
\def\short@month@english{\ifcase\month\or
Jan\or Feb\or Mar\or Apr\or May\or Jun\or
Jul\or Aug\or Sep\or Oct\or Nov\or Dec\fi}
\newcommand{\printshortdate}[1]{{%
\let\month@english\short@month@english% Update English month lookup (locally)
\printdate{#1}}}% Call traditional \printdate
\newcommand{\printsupdate}[1]{{
\let\day@english\supday@english
\printdate{#1}
}}
\makeatother
\newcommand{\chaplab}[1]{\label{chap:#1}}
\begin{document}
\chapter{\printshortdate{31/12/1987}}
\blindtext
\blindtext
\blindtext
\blindtext
\blindtext
\blindtext
\end{document}
Sin embargo, hay algo mal \markboth
porque, si elimino \blindtext
el comando y el documento tiene solo una página, todo está bien, mientras agrego texto, obtengo errores y el nombre del capítulo en el encabezado es un desastre. Me gustaría tener como encabezado exactamente31st Dec 1987
Nota agregada
Lo estoy usando isodate
porque en un mismo documento necesito la misma fecha pero en otro formato y, como usuario, quiero insertarla solo una vez.
Respuesta1
Su comando debe ser sólido para poder acceder a argumentos móviles.
El truco es reemplazar newcommand
conDeclareRobustCommand
Aquí está el código:
\documentclass{book}
\usepackage[orig,british]{isodate}
\usepackage{lipsum}
\makeatletter
\def\short@month@english{\ifcase\month\or
Jan\or Feb\or Mar\or Apr\or May\or Jun\or
Jul\or Aug\or Sep\or Oct\or Nov\or Dec\fi}
\DeclareRobustCommand{\printshortdate}[1]{%
\let\month@english\short@month@english% Update English month lookup (locally)
\printdate{#1}%
}% Call traditional \printdate
\makeatother
\begin{document}
\chapter{\printshortdate{31/12/1987}}
\lipsum[4-12]
\end{document}
Con salida (en la página 2):
Tenga en cuenta el hecho de que eliminé algunos {
mensajes adicionales (en la newcommand
definición)
Respuesta2
Si lo necesita solo para un capítulo, úselo.
\chapter*{\printshortdate{31/12/1987}}
si no debería aparecer en el TOC, o
\chapter{\protect\printshortdate{31/12/1987}}
que es, por supuesto, la misma solución de la otra respuesta.