lunes, 23 de marzo de 2009

HAL y las marcas (LaTeX - VI)

El día pasado acudimos excepcionalmente a una orden de estilo para poder integrar los resultados habituales del paquete listings en nuestro texto. Ya puestos, y como la veda se ha levantado parcialmente, vamos a tolerar otra excepción y sustituir la marca que establecimos para nombres de programas.

Es una convención frecuente presentar estos nombres con una familia de fuente diferente. Puesto que la familia por defecto en LaTeX es Serif y, puesto que la familia Typewritter (Monospace) es la elegida para el código, la opción recomendable es reservar la familia restante de la típica triada, Sans Serif, para nuestros nombres de programas.

Podríamos etiquetarlos directamente con la marca que define justo esa familia:

\textsf{nombre_programa}

Pero, dado que esta marca no dice nada sobre la función estructural del texto marcado y ante la posibilidad, además, de que cambiemos en el futuro de idea al definir las características de presentación de los nombres de programas, es mucho mejor crear una marca propia, llamémosla \Prog, que permita envolver la citada definición de fuente u otras definiciones futuras.

Para crear marcas propias, lo que en terminología de LaTeX se llamarían órdenes propias, se usa la orden de LaTeX \newcommand. Esta orden tendría, en el caso que nos ocupa el siguiente aspecto:

\newcommand{\Prog}[1]{\textsf{#1}}

La sintaxis indica que, en el lugar en el que nosotros pongamos la marca \Prog{texto}, donde texto es el argumento único (argumento 1 de \Prog), el sistema de procesamiento del documento pondrá \textsf{texto}. El texto en \textsf es el mismo texto de \Prog, que se pasa como valor al primer y único contenedor, #1, que nuestra orden \newcommand ha establecido para \textsf.

Lo único que hay que tener en cuenta a la hora de crear estas marcas propias es que el nombre de la marca elegida no exista ya entre las marcas de LaTeX o entre las de sus paquetes. Si albergamos dudas al respecto, podemos utilizar, en lugar de \newcommand, la orden \providecommand, que tendrá el mismo resultado que \newcommand cuando \Prog no sea una marca de LaTeX o sus paquetes y que no producirá efecto alguno, cuando la marca ya exista:

\providecommand{\Prog}[1]{\textsf{#1}}

Finalmente, para que las órdenes \newcommand o \providecommand sean tenidas en cuenta, se deben incluir en el preámbulo del documento después de las solicitudes de carga de paquetes.

Con este último refinamiento podríamos considerar acabado nuestro trabajo con las marcas de LaTeX, pero aún podemos introducir unas pocas mejoras más.

En primer lugar, vamos a utilizar un tipo de fuente distinta de la que por defecto utiliza LaTeX. La razón es que, aunque la fuente por defecto de LaTeX (Computer Modern) es estupenda para texto impreso, cabe la posibilidad de que nuestro documento se visualice más frecuentemente en pantalla. Una fuente más legible en pantalla puede ser beneficiosa. Seleccionaremos la fuente Bera, que viene incluida en TeX Live y que se activa mediante la carga de un paquete:

\usepackage{bera}

Y ya que asumimos que nuestro documento se verá en pantalla, podríamos también beneficiarnos del uso de colores, especialmente para resaltar los fragmentos de código.

Para disponer de soporte de colores en un documento LaTeX podemos usar el paquete xcolor.

\usepackage{xcolor}

El color para todo el código se puede establecer con la etiqueta \color{nombre_color} en la configuración inicial de listings:

\lstset{basicstyle=\color{teal}\small\ttfamily}

También añadiremos una sección previa con el título del documento, el autor y la fecha (la fecha la introduce por defecto LaTeX). Se debe solicitar explícitamente la generación del título mediante la orden \maketitle. El grupo de marcas adecuadas puede ir todo él justo después de \begin{document}, aunque hay quien prefiere situar \title y \author en el preámbulo.

\title{Un ejemplo juguete de \LaTeX}
\author{átopos}
\maketitle

(Cuando la palabra 'LaTeX' aparece precedida por la barra invertida, tal como acabamos de hacer, el tipógrafo producirá un versión embellecida de esa palabra. Es el ejemplo típico que se espeta a los usuarios de sistemas de preparación de documentos no profesionales: "¡Aficionados, a ver cómo os las apañáis para producir estos nuestros hermosos tipos!".)

Finalmente, estableceremos el tamaño de la página a A4, que es el modelo de página habitual en Europa. Basta para ello una opción en la declaración inicial de la clase de documento:

\documentclass[a4paper]{article}

Hemos terminado de etiquetar con LaTeX nuestro documento. Proponemos como ejercicio para el lector la modificación de los ficheros txt2latex.sed y generar_latex que corresponda a las transformaciones y añadidos que hemos introducido en estos dos últimos capítulos. El fichero txt2latex.tex resultante debería ser el siguiente:

\documentclass[a4paper]{article}
\usepackage[spanish]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{bera}
\usepackage{xcolor}
\usepackage{listings}
\lstset{basicstyle=\color{teal}\small\ttfamily}

\newcommand{\Prog}[1]{\textsf{#1}}

\title{Un ejemplo juguete de \LaTeX}
\author{átopos}

\begin{document}
\maketitle


\section{Navegación gráfica}
Si hubiésemos estado visitando la página con un buen navegador gráfico que disponga de la opción de guardar las páginas web como texto, tendríamos que realizar al menos dos acciones, ambas independientes:

\begin{enumerate}
\item Ir al menú <<Archivo>> del navegador y guardar como texto la página web. (Lo que además implica seleccionar un nombre de fichero y un directorio).
\item Crear en \Prog{Vim} una nueva ventana para editar en ella el documento que acabamos de guardar, mediante la orden \lstinline!:new ruta_fichero!.
\end{enumerate}

\section{Navegación desde consola}
Si navegamos con \Prog{w3m}, y gracias a la interacción entre las aplicaciones de consola, bastaría ejecutar una única acción desde el propio \Prog{Vim}, que, además, podríamos abreviar para reproducirla en situaciones semejantes. Veamos cómo.

Con \Prog{w3m} el proceso de convertir una página web en texto es absolutamente elemental: añadir la opción \lstinline!-dump!. Por ejemplo:
\begin{lstlisting}
w3m -dump http://www.w3.org/TR/html401/struct/lists.html
\end{lstlisting}
nos devuelve la página dada como argumento, tal cual se presenta en el navegador, pero como puro texto.
\end{document}

Tras procesar este fichero con pdflatex, se obtiene texto_etiquetado.pdf, que podrá verse con cualquier lector de PDFs:



Resumen

  • LaTeX permite crear marcas personalizadas con la orden \newcommand o con la orden \providecommand

  • El paquete xcolor proporciona soporte de colores en documentos LaTeX.

  • La creación de una sección previa con el título del documento y de su autor o fecha de escritura es trivial con LaTeX.

No hay comentarios:

Publicar un comentario