2010-05-14 21 views
14

Estoy escribiendo una clase de documento para LaTeX y quiero que sea genérica. En esta clase de documento, redefino el comando \maketitle para mostrar una página de título personalizada, y aquí quiero mostrar cierta información, como el título, autor, etc., pero también algunas otras informaciones. Así es como puedo mostrar el título:¿Cómo creo un comando como title en LaTeX?

{\LARGE{\bf \@title}}\\ 

Me gustaría crear un nuevo comando que funciona de manera similar a \title o \author, ¿cómo puedo hacer eso?

Respuesta

14

Si nos fijamos en latex.ltx se puede ver que \title se define de la siguiente manera:

\def\title#1{\gdef\@title{#1}} 
\def\@title{\@[email protected]{No \noexpand\title given}\@ehc} 

Esos son los comandos TeX de bajo nivel. \title es un comando que redefine \@title para expandir al argumento dado a \title. En LaTeX más moderna ordena su propia definición podría tener este aspecto:

\newcommand\foo[1]{\renewcommand\@foo{#1}} 
\newcommand\@foo{\@[email protected]{No \noexpand\foo given}\@ehc} 

Es mejor utilizar \PackageError o \ClassError para mostrar el mensaje de error. O, si quieres \foo a ser opcional y estar vacía por defecto:

\newcommand\foo[1]{\renewcommand\@foo{#1}} 
\newcommand\@foo{} 

Si esto no está dentro de un paquete, que tendrá que poner entre \makeatletter y \makeatother@ debido a las señales.

7

Aquí hay un comando de muestra que utilicé en mi clase thesis.cls. Define un nuevo comando \university que funciona como los comandos \title o \author con un valor predeterminado igual a "sin universidad". Si no uso el comando \university en mi preámbulo, se usará el valor predeterminado en su lugar.

\def\@university{no university} 
\newcommand{\university}[1]{ 
    \def\@university{#1} 
} 

A continuación, en el comando \maketitle puede tener algo como:

Cuestiones relacionadas