
Intenté implementar un metanivel para los comandos de autor y título, porque la mayoría de los archivos de estilo quieren que sean un poco diferentes y quiero poder cambiar fácilmente el archivo de estilo.
En pocas palabras, observé que la amsart
clase se comporta de manera extraña cuando inserto una macro en \title{}
. No arroja error, pero no escribe en mayúscula el título. Sin embargo, seguirá estando escrito en negrita.
Entonces no hay ningún efecto ni todos los efectos. También intenté colocarlo \expandafter
en todos los lugares que se me ocurrieron, pero aparentemente no entiendo realmente este comando.
\documentclass[a4paper,reqno]{amsart}
\usepackage[utf8]{inputenc}
\begin{document}
\newtoks\mytitleA
\mytitleA={This is a title}
\newcommand{\mytitle}{This is a title}
\newcommand{\myauthor}{This is me}
% toggle the following commands to see that only the last version
% produceses the correct layout
%\title{\the\mytitleA}
%\title{\mytitle}
\title{This is a title}
% for the author I cannot spot a difference
\author{\myauthor}
\author{This is me}
\maketitle
\end{document}
Otros archivos de estilo como article
no parecen escribir el título de manera diferente; si está anidado en una macro, al menos no pude notar la diferencia. Por lo tanto, tal vez haya algún problema con la amsart
implementación de \title{}
o \maketitle
.
¿Hay alguna forma de solucionar este problema o al menos hacer que funcione una macro anidada?
Respuesta1
Olvidaste uno quehacetrabajo, es decir
\expandafter\title\expandafter{\the\mytitleA}
Por supuesto, nada que pueda evitarse \the
puede \mytitleA
funcionar, ya que \the
es necesario para entregar el contenido del \toks
registro.
¿Cuál es el problema? Por defecto amsart
solo usa \uppercase
(no debería, pero ese es otro problema).
Puede evitar el problema cargando textcase
eso que obliga amsart
a usar \MakeTextUppercase
de modo que la expansión completa (protegida) se realice antes de que \uppercase
haga su trabajo.
con un \toks
registro
\documentclass[a4paper,reqno]{amsart}
\usepackage{textcase}
\newtoks\mytitleA
\mytitleA={This is a title}
\newcommand{\myauthor}{This is me}
\begin{document}
\title{\the\mytitleA}
\author{\myauthor}
\maketitle
\end{document}
con un comando
\documentclass[a4paper,reqno]{amsart}
\usepackage{textcase}
\newcommand{\mytitle}{This is a title}
\newcommand{\myauthor}{This is me}
\begin{document}
\title{\mytitle}
\author{\myauthor}
\maketitle
\end{document}