B.I.D.K.L.E
(El Cómo de la Búsqueda Inversa y Directa en Kdvi para esrcitos en LaTeX con Emacs)

HERRAMIENTAS
        Kdvi es un conector para el programa KViewshell que permite a este mostrar archivos con formato DVI (.dvi), generados por el sistema de procesamiento de textos TeX. kdvi soporta muchas de las extensiones del estándar DVI, como por ejemplo la inclusión de gráficos PostScript® o hiperenlances.

Extraido del manual de kdvi: http://docs.kde.org/es/HEAD/kdegraphics/kdvi/
Más información en http://devel-home.kde.org/~kdvi/
        TeX, creado por Donald E. Knuth de la Universidad de Stanford, es uno de los procesadores de textos más potentes a la hora de elaborar complicadas fórmulas matemáticas y tiene una gran calidad de impresión final. Para utilizarlo se necesita escribir un archivo fuente que luego será procesado. Para que sea más simple de usar, Leslie Lamport confeccionó un conjunto de macros a partir de TeX a los que denominó: LaTeX.

Extraido y reeditado del libro "Iniciación a LaTeX,  un sistema para preparar documentos", por Javier Sanguino Botella
Más información en http://www.latex-project.org
  • ¿Qué es Emacs?
       GNU Emacs es en principio un editor de textos en tiempo real, avanzado, extendible y muy documentado. No se necesita saber más que eso para entender su papel en lo que se explica a continuanción.

Extraido de la 13º edición del GNU Emacs Manual, por Richard M. Stallman
Más información en http://www.gnu.org/software/emacs/emacs.html
MANOS A LA OBRA

Tanto la búsqueda inversa como la búsqueda directa son features de Kdvi que permiten saltar desde una posición asociada del archivo (.dvi) visualizado con Kdvi a una posición asocidada del archivo (.tex) tratado con el editor que usemos (Emacs en este caso) y viseversa respectivamente.

Búsqueda Inversa

Cuando hagamos click con el botón del medio sobre el documento abierto con Kdvi, se abrirá en el editor predefinido los fuentes (.tex) en el párrafo correspondiente a donde hallamos clickeado:

1) En la cabecera de nuestro .tex incluir la línea:

\usepackage[active]{srcltx}

Esto es para que dentro del archivo .dvi halla información que se pueda interpretar para nuestro propósito, el manual de Kdvi recomienda remover esta información antes de enviar el documento a otra persona.

2) En kdvi, dentro de Preferencias/Opciones DVI/Especiales de DVI:

Especiales de DVI

definimos el editor que usamos, yo utilizo la opción 'editor definido por el usuario' para poder pasarle algunos parámetros extras a emacs:

emacsclient --no-wait +%l %f || emacs -font lucidasanstypewriter-bold-14 +%l %f


Bien, creo que hasta aca se puede llegar con el manual de kdvi, pero con esta configuración, lo único que conseguimos es que cada vez que hacemos
click con el boton del medio en un documento abierto con kdvi se abra una nueva/distinta ventana de emacs, esto es muy incomodo.

3) En la sección del manual de emacs "Using Emacs as a Server", se explica que algunos programas como 'mail' pueden usar a emacs como editor de una porción de texto, como puede ser un mensaje a enviar, el problema es que por cada vez que se solicite al editor se abrirá una nueva ventana, y peor aún, esta no compartirá el buffer con la original, por lo que no podemos tener continuidad en lo escrito. Esto se soluciona utilizando emacsclient, este programa no abrirá una nueva ventana cada vez que se lo solicita, sinó que trabajará siempre sobre el mismo buffer, exactamente lo que necesitamos, pero hay algo que tenemos que saber, emacsclient no se ejecutará si emacs no está ejecutandose como servidor. Podemos hacer que emacs levante el servidor cada vez que lo ejecutamos de una manera muy simple, creando en nuetra home el archivo .emacs con el siguiente contenido:

(server-start)

4) Una explicación final: la línea "emacscliente || emacs", a la que Kdvi acude cada vez que hacemos click con el botón del medio, dice: ejecutar emacsclient, si no se puede ejecutar emacs. La primera vez que hagamos click, se ejecutará emasc, y con esto se levantará el servidor, por lo que la próccima vez que clickiemos se ejecutará emacsclient y podremos seguir trabajando sobre el mismo buffer, sin descontinuar nuestro trabajo.

5) La línea "-font lucidasanstypewriter-bold-14" es para definir con que tipografía mostrará emacs el archivo .tex, como ejecuto emacs sobre X-windows con una definición de 1024x768 píxeles, la tipografía por defecto de emacs es muy pequeña.

Búsqueda Directa


Luego de una convinación de telas (C-x C-j) en emacs se abrirá Kdvi en la página correspondiente al texto sobre el que esta el cursor en el archivo fuente:

1) En el directorio emacs-scripts (si no existe crearlo) de nuestra home guardar el script kdvi-search.el (http://www.lugcos.org.ar/deposito/docs/BIDKLE/kdvi-search.el)

2) Agregar al archivo ~/.emacs las líneas:
(add-to-list 'load-path (expand-file-name "~/emacs-scripts/"))
(require 'kdvi-search)
(add-hook 'LaTeX-mode-hook (lambda () (local-set-key "\C-x\C-j" 'kdvi-jump-to-line)))
(add-hook 'tex-mode-hook (lambda () (local-set-key "\C-x\C-j" 'kdvi-jump-to-line)))


3) Mantener en el archivo .tex donde querramos lograr el efecto la línea:

\usepackage[active]{srcltx}

4) La primer vez que hagamos C-x C-j emacs nos hará algunas simples preguntas de rutina, eso es todo, ya puede ser felíz :-)

SOBRE ESTE DOCUMENTO

Fue terminado de escribir el Jueves 6 de febreo de 2003 a las 2:45 am por Juan José Conti <jjconti@gnu.org> en la localidad de Carlos Pellegrini, Santa Fe, Argentina; y es una prueba más de que el imsomnio es saludable! ;-)
Puedes reproducirlo en cualquier medio, modificado y redistribuido, siempre y cuando se mantenga esta última nota.