miércoles, 23 de enero de 2013

Encabezados y pies de página en LaTeX

En esta entrada mostraré cómo editar los encabezados y pies de página de nuestro documento de LaTeX. Antes una cosa importante, los comandos que aquí uso, funcionan bien con el formato {book}, pero pueden fallar cuando se usan otros formatos...

Los encabezados y pies de página, hay que editarlos para tres tipos de páginas:
  • Páginas inicial de un capítulo.
  • Páginas pares.
  • Páginas impares.
Para ello, se puede utilizar el paquete {fancyhdr} y el siguiente código:

\documentclass[a4paper,openright,12pt]{book}
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc}
\usepackage{fancyhdr}

% aqui definimos el encabezado de las paginas pares e impares.
\lhead[x1]{x2}
\chead[y1]{y2}
\rhead[z1]{z2}
\renewcommand{\headrulewidth}{0.5pt}

% aqui definimos el pie de pagina de las paginas pares e impares.
\lfoot[a1]{b2}
\cfoot[c1]{d2}
\rfoot[e1]{f2}
\renewcommand{\footrulewidth}{0.5pt}

% aqui definimos el encabezado y pie de pagina de la pagina inicial de un capitulo.
\fancypagestyle{plain}{
\fancyhead[L]{K1}
\fancyhead[C]{K2}
\fancyhead[R]{K3}
\fancyfoot[L]{L1}
\fancyfoot[C]{L2}
\fancyfoot[R]{L3}
\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0.5pt}
}

\pagestyle{fancy}


Explico un poco qué significan estas líneas.

\lhead[x1]{x2} define el texto a la izquierda (l = left, c = center, r = right) de los encabezados. Primero, entre corchetes, se pone el texto de las páginas pares. Y después, entre llaves, se indica el texto de las páginas pares.

\renewcommand{\headrulewidth}{0.5pt} define el grosor de la línea. Si no queremos línea, ponemos {0pt}.

\fancyhead[L]{K1} define el texto de los encabezados de la primera página de un capítulo. Entre corchetes, se pone la posición que queremos editar (L = left), y entre llaves, el texto que queremos poner.



Ahora, ya podemos hacer un ejemplo bien bonito. Por ejemplo, queremos lo siguiente:
  • Página inicial de un capítulo. Número de página arriba a la derecha.
  • Encabezado de las páginas pares. Con línea, número de página a la izquierda y CAPÍTULO 1. TÍTULO DEL CAPÍTULO, a la derecha.
  • Encabezado de las páginas impares. Con línea, número de página a la derecha y 1.1 Título de la sección a la izquierda.
  • Pie de página de las páginas pares. Nombre del autor a la derecha.
  • Pie de página de las páginas impares. Fecha a la izquierda.
Para hacer esto, son útiles los siguientes comandos:
  • "\markboth{}{}" indica el encabezado a la derecha y a la izquierda. Lo indicamos después de cada sección.
  • "\rightmark" y "\leftmark" seleccionan el encabezado a la derecha o a la izquierda, que había sido fijado con "\markboth{}{}".
  • "\thechapter" y "\thesection" dan el número del capítulo y la sección correspondiente.
  • "\today" genera la fecha actual.

A continuación el código de ejemplo. En este caso, al inicio de cada capítulo, utilizo "\markboth" para definir el nombre del capítulo, que aparecerá en los encabezados. Y al inicio de cada sección, redefino los encabezados con "\lhead", para editar el nombre de cada sección. 

\documentclass[a4paper,openright,12pt]{book}
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc}
\usepackage{fancyhdr}

% encabezados
\lhead[\thepage]{CAPÍTULO \thechapter. \rightmark}
\chead[]{}
\rhead[CAPÍTULO \thechapter. \leftmark]{\thepage}
\renewcommand{\headrulewidth}{0.5pt}

% pie de pagina
\lfoot[]{\today}
\cfoot[]{}
\rfoot[Arenita Mejillas]{}
\renewcommand{\footrulewidth}{0pt}

% primera pagina de un capitulo
\fancypagestyle{plain}{
\fancyhead[L]{}
\fancyhead[C]{}
\fancyhead[R]{\thepage}
\fancyfoot[L]{}
\fancyfoot[C]{}
\fancyfoot[R]{}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
}

\pagestyle{fancy}

\begin{document}

\lhead[\thepage]{CAPÍTULO \thechapter. \rightmark}
\rhead[CAPÍTULO \thechapter. \leftmark]{\thepage}


\chapter{Introducción}\label{cap.intro}
\markboth{INTRODUCCIÓN}{INTRODUCCIÓN}

Bla bla bla...

\section{Estado del Arte}

\lhead[\thepage]{\thesection. Estado del Arte}

Bla bla bla...

\section{Objetivos de la Tesis}
\lhead[\thepage]{\thesection. Objetivos de la Tesis}

Bla bla bla...

\chapter{Nudo}\label{cap.nudo}
\markboth{NUDO}{NUDO}

Bla bla bla...

\section{Situación Mundial}
\lhead[\thepage]{\thesection. Situación Mundial}

Bla bla bla...

\end{document}




Hay veces que queremos que nuestro documento tenga varios formatos distintos de encabezados. Por ejemplo, un primer capítulo resumen sin ningún encabezado. Y el resto de capítulos con el nombre del capítulo y número de página. En este caso, bastaría con copiar dos veces las funciones aquí descritas. Estas aplican desde el capítulo donde están, hacia delante.
Las funciones aquí descritas funcionan desde donde están, hacia delante. Si quNo hay ningún problema. Lo único que tenemos que hacer es editarlos utiliza.

Por ejemplo, si quiero tener un primer capítulo

\documentclass[a4paper,openright,12pt]{book}
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc}
\usepackage{fancyhdr}

% editamos los encabezados del primer capítulo
\lhead[]{}
\chead[]{}
\rhead[]{}
\renewcommand{\headrulewidth}{0pt}

\lfoot[]{}
\cfoot[]{}
\rfoot[]{}
\renewcommand{\footrulewidth}{0pt}

\fancypagestyle{plain}{
\fancyhead[L]{}
\fancyhead[C]{}
\fancyhead[R]{}
\fancyfoot[L]{}
\fancyfoot[C]{}
\fancyfoot[R]{}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
}


\pagestyle{fancy}

\begin{document}

\chapter*{Resumen}

Bla bla bla...

\chapter{Introducción}\label{cap.intro}
\markboth{INTRODUCCIÓN}{INTRODUCCIÓN}

% editamos los encabezados para el resto de capítulos
\lhead[\thepage]{CAPÍTULO \thechapter. \rightmark}
\chead[]{}
\rhead[CAPÍTULO \thechapter. \leftmark]{\thepage}
\renewcommand{\headrulewidth}{0.5pt}

\lfoot[]{\today}
\cfoot[]{}
\rfoot[Arenita Mejillas]{}
\renewcommand{\footrulewidth}{0.5pt}

\fancypagestyle{plain}{
\fancyhead[L]{\thechapter. \leftmark}
\fancyhead[C]{}
\fancyhead[R]{\thepage}
\fancyfoot[L]{}
\fancyfoot[C]{}
\fancyfoot[R]{}
\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0.5pt}
}


Bla bla bla....

\end{document} 




Un par de cosas más:

1) Si usas el paquete fancyhdr, es muy posible que te salga el siguiente error: "Package Fancyhdr Warning: \headheight is too small (12.0pt)". Para solucionarlo, puedes añadir la siguiente instrucción antes de \begin{document}:

\setlength{\headheight}{15pt}


2) Si quieres que en las páginas en blanco no haya ni encabezados ni pies de página, puedes usar el paquete "emptypage".

\usepackage{emptypage}

miércoles, 9 de enero de 2013

Cómo poner "y" en vez de "and" en la bibliografía, cuando estamos escribiendo en español

Cuando una cita bibliográfica tiene varios autores, LaTeX los separa con la conjunción "and". Independientemente de si estamos escribiendo nuestro documento en inglés o en otro idiomañ lo que creo que es un fallo grave en LaTeX. Si por ejemplo, estamos escribiendo en español, los autores deberían separarse por la conjunción "y" (y a veces "e").

Lo mejor sería usar un estilo bibliográfico ya preparado para trabajar en español. Por ejemplo, "apalike-es.bst", que es una traducción al español del estilo "apalike.bst" (click aquí). Este estilo es muy inteligente y automáticamente te pondrá "y" o "e" dependiendo de si la siguiente palabra empieza o no por i. También te pone correctamente "Tesis de máster", "Tesis doctoral", etc.

Si queremos usar otro estilo distinto bst, y no tenemos su adaptación al español, siempre podemos tratar de editarlo nosotros mismo. En el resto de la entrada,  explico cómo hacerlo.



Para empezar, supongamos que nuestro documento de .tex es el siguiente:

\documentclass[a4paper,openright,12pt]{report}
\usepackage[spanish]{babel}
\usepackage[latin1]{inputenc}
\usepackage[sort&compress]{natbib}

\begin{document}

Como dicen \cite{Beatriz2010} puedes...

\bibliographystyle{apalike}
\bibliography{biblio}

\end{document}

En este caso, para que sirva de ejemplo, uso el formato de bibliografía "apalike.bst" (pero los pasos son similares con otros estilos bst). Este archivo lo habremos descargado de la web y salvado en la misma carpeta que nuestro archivo tex (click aquí).

Además, "biblio.bib" es un archivo donde tenemos salvado nuestra bibliografía. En este caso, el siguiente arículo:

@ARTICLE{Beatriz2010,
  author = {B. Beatriz and C. Carla},
  title = {Historias interesantes},
  journal = {Cuentos},
  year = {2010},
  volume = {66},
  pages = {203-212},
}

El resultado es el siguiente:


Para que aparezca "y" en vez de "and", tenemos que editar el fichero ".bst"

Como este fichero es medianamente grande, lo podemos abrir con Wordpad o Notepad++ o el editor de texto que quieras. Creo que es demasiado grande para abrirlo con Notepad.

A continuación, buscamos el texto «" and "» y lo sustituimos por «" y "».  En este caso, solo está en dos sitios, en las funciones siguientes. (Aunque esto depende de cada archivo .bst)

FUNCTION {format.names}
FUNCTION {format.lab.names}




Y ya está. Con esto ya debería de funcionar.




Este método tiene un problema. Y es que si el apellido del último autor empieza por I, nos va a poner "y", cuando lo correcto sería poner "e".

Por ejemplo, si añadimos el siguiente artículo: 

@ARTICLE{Guerrero2013,
  author = {A. Guerrero and M. Iguala},
  title = {Robots},
  journal = {robótica aplicada},
  year = {2013},
  volume = {55},
  pages = {400-409},
  owner = {lgomezpa},
  timestamp = {2014.07.01}
}

El resultado sería:

Como dicen \cite{Beatriz2010}, \cite{Guerrero2013} puedes...


Este no es un problema que nos vaya a pasar muchas veces, pero tenemos que resolverlo. Un método rápido (aunque poco elegante) de hacerlo, es añadir la referencia correspondiente a mano.

Primero, en el fichero .bib, escribimos entre {}, el nombre de los autores, como queremos que se vea en la lista de la bibliografía.

@ARTICLE{Guerrero2013,
  author = {{Guerrero, A. e Iguala, M.}},
  title = {Robots},
  journal = {Robótica aplicada},
  year = {2013},
  volume = {55},
  pages = {400-409},
  owner = {lgomezpa},
  timestamp = {2014.07.01}
}

Segundo, en el fichero .tex, escribimos a mano la referencia. Y para que aparezca en el bibliografía, la añadimos con \nocite.

Como dicen \cite{Beatriz2010}, Guerrero e Iguala (2013) puedes...
\nocite{Guerrero2013}




De la misma forma, podemos cambiar otras palabras que en la bibliografia aparezcan en inglés. Por ejemplo:
  • En una tesis de maestría.
    Buscamos la función "FUNCTION {mastersthesis}", y sustituimos:
    «"Master's thesis"»  por «"Tesis de Maestría"». O lo que más te guste a ti.


  • En una tesis de doctorado.
    Buscamos la función "FUNCTION {phdthesis}", y sustituimos:
    «"PhD thesis"»  por «"Tesis de Doctorado"». O lo que más te guste a ti.
  

  • En un informe técnico.
    Buscamos la función "FUNCTION {format.tr.number}", y sustituimos:
    «"Technical Report"»  por «"Informe Técnico"». O lo que más te guste a ti.

Nota: Si quieres que una letra esté siempre en mayúsculas, métela entre llaves. Por ejemplo «"Informe {T}écnico"»

lunes, 7 de enero de 2013

Cómo poner correctamente las preposiciones de los apellidos en la bibliografía

En muchas ocasiones, el apellido de un autor tiene una o varias preposiciones. Por ejemplo, Ramón del Valle-Inclán. Desconozco en otros idiomas, pero en español, la lista bibliográfica debería ordenarse por el apellido sin las preposiciones, y estas ponerse detrás del nombre. Es decir:
  • Valle-Inclán, Ramón del
Mientras que en el texto, cuando nos referimos al autor solo por el apellido, quitamos las preposiciones. Es decir:

El autor de "Luces de bohemia" es Valle-Inclán.



No conozco una forma elegante de resolver esto con LaTeX. Pero, para salir del paso, se me ocurre lo siguiente.

Primero, en nuestro archivo ".bib", escribo entre llaves el nombre y apellidos del autor, tal como quiero que aparezca en la bibliografía.

@ARTICLE{Valle2012,
author = {{Valle-Inclán, R. del} and {Vega, L. de}}
...

Mientras que en mi archivo .tex escribo la cita a mano, sin el comando "\cite{}". Pero para que la cita aparezca en la bibliografía, la añado con el comando "\nocite{}".

Como dicen Valle-Inclán y Vega (2012)...
\nocite{Valle2012}

Cuyo resultado es:


Si sabes una forma más elegante de hacerlo, te animo a que me la digas. :-)