
Tentei implementar um metanível para os comandos autor e título, porque a maioria dos arquivos de estilo deseja que eles sejam um pouco diferentes e quero poder alterar facilmente o arquivo de estilo.
Resumindo, observei que a amsart
classe se comporta de maneira estranha quando insiro uma macro no \title{}
. Não gera um erro, mas não coloca o título em maiúscula. No entanto, ainda estará escrito em negrito.
Portanto, não há nenhum efeito nem todos os efeitos. Também tentei colocar \expandafter
em todos os lugares que pude imaginar, mas aparentemente não entendi muito bem esse 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}
Outros arquivos de estilo, como article
não parecem compor o título de maneira diferente, se estiver aninhado em uma macro, pelo menos não consegui perceber a diferença. Portanto, talvez haja algo errado com a amsart
implementação de \title{}
or \maketitle
.
Existe uma maneira de corrigir isso ou pelo menos fazer uma macro aninhada funcionar?
Responder1
Você esqueceu um quefaztrabalho, nomeadamente
\expandafter\title\expandafter{\the\mytitleA}
Claro que nada evitar \the
na frente \mytitleA
pode funcionar, pois \the
é necessário para entregar o conteúdo do \toks
cadastro.
Qual é o problema? Por padrão, amsart
apenas usa \uppercase
(não deveria, mas isso é outro problema).
Você pode evitar o problema carregando textcase
que força amsart
o uso para que \MakeTextUppercase
a expansão completa (protegida) seja feita antes de \uppercase
fazer seu trabalho.
Com um \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}
Com um 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}