Problema con marcar ambos

Problema con marcar ambos

Estoy usando isodateel paquete desde

  1. Un usuario debe insertar la fecha como título del capítulo en el formato como en el ejemplo:31/12/1987
  2. 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 \markbothporque, si elimino \blindtextel 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 isodateporque 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 newcommandconDeclareRobustCommand

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):

ingrese la descripción de la imagen aquí

Tenga en cuenta el hecho de que eliminé algunos {mensajes adicionales (en la newcommanddefinició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.

información relacionada