LaTeX y compañía

Informacion sobre LaTeX y programas relacionados

17.3.09

FAQ de LaTeX Visual

La FAQ de LaTeX Visual (o más exactamente The Visual LaTeX FAQ, ya que el original está en inglés) es un documento que al parecer lleva ya más de tres años publicado, pero que yo acabo de descubrir. Nunca es tarde.

Se trata de un curioso documento PDF que contiene cantidad de ejemplos resueltos de situaciones que más de uno habrá vivido varias veces mientras componía documentos en LaTeX, tales como dos figuras en un mismo entorno que se quieren alinear por arriba, cambio de márgenes a mitad de documento, inicio de un párrafo con una "letra capital" (de mayor tamaño que las demás), texto a doble espacio, enumeraciones interrumpidas por un párrafo que se reanudan a continuación, y un largo etcétera.

Lo llamativo del documento es la forma en que presenta toda esta información. El texto visible realmente no es importante (no es más que texto de relleno en latín). Lo importante es que cada uno de estos "ejemplos" se pueden observar directamente resueltos en el PDF y rodeados de una caja verde, sin más explicaciones. Al poner el ratón encima de la caja verde, aparece un "popup" (sólo si lo estamos visualizando con Acrobat Reader) que explica un poco más de qué trata ese caso particular.

Por ejemplo (imagen inferior), al pie de la primera página, donde iría el número de página, vemos un rectángulo vacío con borde verde. Dejando el ratón encima, el popup nos dice "How to get rid of page numbers". Y si hacemos clic en ese punto, se abrirá el navegador Web y nos llevará directamente a la entrada de la FAQ donde se resuelve esa duda.

En algunos lugares los rectángulos son rojos en lugar de verdes, indicando en este caso que se ha obtenido un resultado inesperado o erróneo (por ejemplo: texto borroso en el pdf, palabras pegadas, o referencias a páginas incorrectas). En este caso el enlace nos lleva a la explicación y solución del problema.

Es difícil de explicar, y lo mejor es que lo veas por tí mismo. Me ha parecido una forma muy original y efectiva de resumir muchas dudas frecuentes, con enlaces a sus soluciones.

 
9.3.09

Aqui veo texto chino

Esta entrada puede parecer off-topic (lo es), pero no he podido resistirme a ponerla. Además, como veremos, no está tan alejada de tema como pueda parecer.

Haz lo siguiente: abre el bloc de notas de Windows. Escribe dentro el siguiente texto (sin pulsar retorno de carro al final de la línea):

Aqui veo texto chino

Guarda el documento con el nombre que quieras y sal del bloc de notas. Ahora abre de nuevo el documento y... ¡sorpresa! ¡Todo sale en chino! Compruebalo.

A pesar de que pueda parecer un huevo de pascua, es en realidad un bug del bloc de notas. El asunto está explicado en Wikipedia, y aquí es donde hay una pequeña relación con el tema del blog. El asunto de las diferentes codificaciones de un fichero (latin1, utf8, etc) es un tema que aparece frecuentemente al migrar documentos latex de una plataforma a otra.

El problema básicamente proviene de que un archivo de texto "plano" no contiene información acerca de qué codificación utilizó el editor que lo creó. Ante esta ausencia de información, al abrir el documento el editor puede tomar diferentes estrategias: asumir que está en una odificación ampliamente utilizada como pueda ser ISO-8859-1 o Windows-1512, intentar "adivinar" qué codificación puede estar usando el fichero haciendo un análisis de los códigos que contiene, o no intentar adivinar ni suponer nada, sino dejar que el usuario especifique cómo debe interpretarse el fichero (ya sea mediante opciones del editor o ya sea leyendo el valor de las variables de entorno que especifican el lenguaje nativo del usuario).

En el caso del bloc de notas de Windows, la opción elegida es la segunda, esto es, intentar adivinar la codificación del fichero. Como vemos, su algoritmo falla en algunos casos ya que el texto que yo he puesto más arriba, escrito en castellano y en codificación ASCII, es tomado por texto chino en Unicode. Según Wikipedia, bug se dispara por cualquier texto corto formados por secuencias de 4 códigos ASCII + espacio + 3 ASCII + espacio + 3 ASCII + espacio + 5 ASCII. Aunque, como puede comprobarse, el texto que yo he descubierto no sigue esta secuencia estrictamente y sin embargo también dispara el bug (parece que la clave es el inicio 4+3+3)

Ah, tampoco he podido resistirme a traducir con Google el texto chino resultante. Al parecer dice algo como "Brasero muy árido, torsión de retención-Ching Chao" :-D

 
20.12.08

Marcando "por hacer"

A menudo, mientras estamos escribiendo un documento largo, nos encontramos con que dejamos algunas partes meramente esbozadas (o incluso en blanco) con la intención de volver sobre ellas más adelante para completarlas o mejorarlas. Naturalmente, estas partes del documento deberían ser marcadas de alguna forma. Cada uno tenemos nuestros truquitos al respecto. Algunos de los más comunes son:

  • Poner un comentario dentro del código fuente LaTeX, con una cadena de texto especial tal como "A REVISAR", de modo que podamos hacer una búsqueda posterior en el fichero para encontrar rápidamente estos puntos. El inconveniente de este enfoque es que en la versión PDF o impresa, tales comentarios no aparecen, por lo que si estamos dando a leer la versión preliminar a otra persona, no tendrá una pista clara de qué partes están incompletas y cuáles no.
  • Introducir esas cadenas especiales en el propio texto, no en comentarios. Esto deja constancia tanto en la versión de código fuente como en la versión impresa. El problema es que quizás esas anotaciones "para uno mismo" no deberían estar en el texto principal, pues estorban un poco su lectura.
  • Utilizar notas al margen (esto es, el comando \marginpar), para introducir las anotaciones específicas. Esto soluciona los dos problemas anteriores, pero aún tiene un pequeño inconveniente. La nota al margen aparecerá "más o menos" a la altura de la línea en la que se utilizó \marginpar, pero no siempre exactamente donde uno querría. Además, si la nota se refiere a un punto concreto dentro de la línea (p.ej: un espacio entre dos palabras) no hay forma de especificar este dato.
  • Para solucionar lo anterior yo me había creado mi propio comando que insertaba en el texto principal una fea y visible caja negra, junto con una nota al margen que explicaba la razón de esa marca. La caja negra actuaba a modo de "llamada" para la nota al margen.

Pero desde hace unos días tenemos otra alternativa, que yo pienso utilizar la próxima vez que me vea en esta necesidad. Se trata del paquete Todonotes. La idea es similar a la que yo estaba usando, pero con muchas facilidades para configurar el aspecto final de la nota al margen y de su punto de inserción en el texto principal. Entre otras cosas, permite especificar el color del texto y del fondo de la nota, asi como del borde de la caja que la contiene, y une esta caja mediante una línea al texto principal, al punto donde se insertó la nota en el código fuente. También permite crear notas "en línea", esto es, que no van al margen. Finalmente, casi lo más importante, puede generar una "Lista de notas" que recoge todos los puntos del documento marcados con este tipo de anotaciones, con referencias a cada página y al color usado. Por si no me he explicado bien, creo que un vistazo al manual aclarará perfectamente lo que este paquete puede hacer.

 
20.12.07

Sutilezas para la división con guiones y el paquete spanish

A raíz de una consulta en la lista ES-TEX me entero de que la división de líneas de TeX no se comporta como debería ante ciertos signos que tienen forma de guión (o al menos no se comporta según las normas tipográficas españolas). Estos son sus comportamientos más chocantes:

  1. Cuando un guión (-) aparece en una expresión, la línea puede ser cortada en ese punto (comportamiento lógico), pero las palabras que van pegadas al guión no podrán ser divididas (comportamiento chocante). Así si ponemos supercalifraglístico-espialidoso, la línea podrá quedar cortada justo después del guión, dejando «espialidoso» para la línea siguiente, pero en cambio «supercalifragilístico» no será dividido. Como es una palabra muy larga, es muy posible que quede sobresaliendo del margen derecho. Si «supercalifragilístico-espilidoso» cabe completo en una línea, aún así el guión será visible, por lo que aparecerá como una palabra compuesta (un ejemplo más realista: «sistema lógico-matemático»).
  2. El comando \- inserta un guión opcional. Esto le dice a TeX que puede dividir la palabra por ese punto, si resulta conveniente. No obstante, al meter ese comando dentro de una palabra, se impide que la palabra pueda ser dividida por cualquier otro lugar. De nuevo el ejemplo podría ser supercalifragilístico\-espialidoso. Al usar \- en lugar de -, si la palabra cabe completa en una línea, el guión no aparece (no es palabra compuesta). Si no cabe, se cortará por el punto especificado en el guión y por ningún otro. El comando puede usarse varias veces dentro de la misma palabra, para especificar diferentes puntos de corte posibles. Es útil para reemplazar las reglas de guionado de TeX cuando está aplicando alguna mal.
  3. Los guiones largos, raya y semirraya, que se obtienen con los comandos TeX --- y -- se comportan igual que el guión corto - explicado más arriba. Esto es, se permite que la línea sea dividida después de ese guión, e impide la división de la palabra que va pegada a él. Este es un comportamiento ciertamente indeseado en castellano, puesto que es habitual usar el guión largo a modo de paréntesis para hacer incisos —como éste— y de acuerdo con las reglas de TeX cabe la posibilidad de que el guión que abre el inciso quede al final de una línea, mientras que la palabra que debería ir pegada a él pasa a la línea siguiente. Por la misma causa, si hay un signo de puntuación tras el guión de cierre, —como aquí—, ese signo podría quedar solo al principio de la línea siguiente.

Por suerte el paquete spanish de babel lo tiene todo previsto, como podemos leer en su documentación. En este paquete se definen una serie de atajos muy útiles para tratar con estos problemas, de forma que el comportamiento de TeX ante estos casos esté controlado por el autor.

Estos son los atajos que resuelven cada uno de los problemas anteriores:

  1. Atajo: "= Permite escribir una palabra compuesta, de modo que las palabras a los lados del guión también puedan ser cortadas. El manual de spanish desaconseja su uso (podrían generar un resultado antiestético), aunque creo que casos como supercalifragilístico"=espialidoso quedan justificados.
  2. Atajo: "- Permite añadir un punto de corte opcional a una palabra. Las palabras a la izquierda y derecha del "- aún podrán ser divididas usando las reglas que use TeX. Un ejemplo. La palabra «semiopaco» en principio podría ser dividida por TeX por diferentes puntos, según las reglas de los patrones de español: «se|mio|pa|co». Como vemos la división «semi|opaco» no aparece contemplada. Para corregir a TeX, podríamos poner semi\-opaco, pero entonces ése será el único punto de corte que TeX contemplará, como explicamos más arriba. Sin embargo, poniendo semi"-opaco, ahora TeX contemplará la posibilidad «semi|opaco» y también las que resulten de dividir «semi» y «opaco» por separado. Téngase en cuenta que «opaco» no permite la división «o|paco», porque dejaría una sola letra al final de la línea (en realidad depende de los valores de \lefthyphenmin y \righthyphenmin, que son configurables). En resumen, los posibles puntos de división contemplados por TeX ahora serían «se|mi|opa|co».
  3. Atajos: ~--- y ~-- Permiten insertar un guión largo (raya y semirraya) de modo que la línea no pueda ser cortada en ese punto si van pegados a otra palabra. No impide sin embargo que las palabras que van pegadas a ellos puedan ser cortadas. Así, si pongo ~---ejemplo~---, los puntos de corte considerados por TeX serán «—ejem|plo—,» Si en lugar de ~--- hubiera usado la forma estándar ---, los puntos de corte posibles habrían sido «—|ejem|plo—|,». Inadmisibles.
  4. Otros casos. Si queremos poner por ejemplo un rango de cifras como 45-60, pero impidiendo que TeX pueda dividir la línea por ese guión, spanish proporciona el atajo ~- para ese fin.
    Las palabras compuestas cuya segunda palabra empieza por «r» y la primera acaba en vocal (como «semi-raya»), si se escriben juntas sin el guión debería doblarse la «r» (y así dar lugar a «semirraya»). Aunque no hay acuerdo sobre esta norma (recomendada por la RAE), si queremos aplicarla, spanish proporciona el atajo "rr y así podríamos poner semi"rraya. Esto tiene el efecto de que si la palabra cabe junta en una línea, aparecerá como «semirraya» (con la «r» doble), pero si hay que partir tras «semi-», entonces en la siguiente línea aparecería «raya» (con la «r» sencilla).

Además de todo lo anterior, está el problema de la división de palabras acentuadas. Este problema aparece sólo si usamos fuentes con codificación OT1, ya que estas fuentes no tienen versiones acentuadas de las vocales, y entonces TeX «simula» estos caracteres por el método de insertar dos en el mismo punto (la vocal y su acento), pero esto confunde al mecanismo de guionado que deja de funcionar para esa palabra a partir del punto donde aparece el acento. El paquete spanish intenta también solucionar este problema, pero advierte de que la solución no es perfecta. En las fuentes T1 este problema ya no aparece puesto que estas fuentes sí tienen versiones acentuadas de cada vocal y no es necesario simularlas. Por tanto, si ves que LaTeX divide mal tus palabras acentuadas, asegurate de usar una fuente con codificación T1.

 
29.11.07

Un truquillo para Firefox

El tema de esta entrada no es sobre LaTeX, realmente, pero ya que muchos de los que usamos LaTeX nos dedicamos a escribir, a veces en otros idiomas, creo que este truquillo puede ser útil a más de uno. Se trata de un atajo rápido para, desde Firefox, traducir rápidamente una palabra o expresión entre diferentes idiomas, haciendo uso de los servicios de Google.

  1. Dirige tu navegador a la página del traductor de Google, donde verás una cajita donde escribir texto, precedida por el mensaje Escribe una palabra: (o Enter word: si accedes a la versión inglesa de la página) y una lista desplegable de posibles traducciones.
  2. Elige en la lista desplegable la opción «Inglés-español», si no estaba previamente elegida.
  3. Pon el ratón en la cajita de escribir texto y pulsa el botón derecho. En el menú contextual que aparece debe haber una opción que diga «Añadir una palabra clave a esta búsqueda...» (si usas la versión inglesa de Firefox dirá «Add a Keyword for this search...»). Elige esa opción. Esto introducirá un marcador en la lista de marcadores, y algo más.
  4. Saldrá un diálogo, pidiéndote:
    • Nombre: Es el nombre del marcador. Pon lo que quieras, por ejemplo Diccionario inglés-español de Google
    • Palabra clave: Esto es lo bueno, puedes poner aqui un «atajo» consistente en unas pocas letras para poder usar este diccionario en forma relámpago. Por ejemplo, yo aquí he puesto i2e, abreviatura sui-generis de «inglés to español»
    • Crear en: Es la carpeta donde guardará el marcador. Ponla a tu gusto, total, gracias a la palabra clave, nunca necesitarás usar tu menú de marcadores para acceder a ella
  5. ¿Ya está todo? Ya puedes cerrar el traductor de Google. Ahora pongamos que tienes una palabra en inglés que no sabes traducir, por ejemplo slick. Basta que crees una nueva pestaña en Firefox y vayas al lugar donde tecleas las URL (pulsa Ctrl-T para crear la pestaña y Ctrl+L para ir rápidamente a la entrada de URLs, sin usar el ratón). Escribe allí «i2e slick» (sin las comillas)
  6. La palabra clave «i2e» causa que Firefox visite la URL del traductor de google y que rellene el campo de búsqueda con las palabras que pongas detrás (en este caso «slick»), enviando todo a Google y mostrándote su respuesta. Traducción instantánea.
  7. Repite lo anterior pero con otros sentidos de traducción, por ejemplo Español->inglés (palabra clave «e2i»). El truco funciona con cualquier página que tenga un formulario de búsqueda. Por ejemplo, tengo definida la palabra clave «w» para búsquedas inmediatas en la wikipedia inglesa, y «we» para la wikipedia española.
Me resulta muy útil. Quería compartirlo.
 
27.11.07

Portadas con LaTeX

LaTeX incluye un comando (\maketitle) para generar el título del documento, con su lista de autores, etc. En las clases report y book esto crea una portadilla estándar. Si queremos personalizarla podemos hacer uso del entorno titlepage, el cual causa que todo lo que pongamos dentro de ese entorno salga en una página sola, sin número, y que la página siguiente a esa tenga el número 1. Hay total libertad para poner lo que se quiera dentro, y por tanto para hacerse una portada a medida. En la red podemos encontrar varios ejemplos

Por otro lado, si lo que queremos crear no es la portadilla interior, sino la portada exterior (incluyendo lomo y contraportada), en el número 1 del PracTeX Journal tenemos un excelente artículo que muestra como hacer cosas impresionantes con PSTricks.

 
26.11.07

He visto cosas...

He visto cosas en Word que vosotros no creeríais.
  • He visto listas de items formateadas a base de espacios en blanco.
  • He visto docenas de retornos de carro seguidos al final de una página, para forzar el cambio a la página siguiente.
  • He visto una tabla de contenidos de un documento de 300 páginas, generada totalmente a mano «para evitar problemas».
  • He visto documentos llenos de imágenes en formato bitmap, ocupando gigas y que tardan minutos en «repaginarse».
  • He visto menús desplegables de «Estilos» con centenares de estilos definidos, ninguno usado de forma consistente en el documento.
  • He visto siete tipos diferentes de «bullets» en el mismo documento, con niveles de indentación inconsistentes.
  • He visto documentos impresos llenos de «¡Error! Marcador no definido»
  • He visto intentos de crear documentos multi-archivo con Word. Nunca he visto uno que funcionara.
  • He visto horas de trabajo desaparecidas por un súbito cuelgue, y copias de respaldo irrecuperables.
  • He visto listas de enumerables cuya numeración, en lugar de comenzar en 1, continuaba de otras de capítulos anteriores, sin que el autor lo notara hasta después de imprimir.
  • He visto documentos impresos que no se parecen a lo que se veía en pantalla.
  • He visto documentos que, al cambiar de ordenador, cambian completamente su paginación debido a que se usa una impresora diferente.
  • He visto el mensaje «¿Desea guardar los cambios efectuados en el documento?» sin haber hecho ningún cambio.
  • He visto un documento que, al avanzar tras la última página, se copiaba y pegaba a sí mismo en ese punto, de forma recursiva, aumentando su tamaño hasta colapsar el sistema.
Todos esos momentos se perderán en el tiempo, como lágrimas de alegría en la lluvia. Es hora de LaTeX.
 
 

Powered by Blogger