Soporte SyncTeX en GNOME

José Aliste: “La idea de este artículo es mostrar cómo se puede lograr la integración de diferentes aplicaciones en el escritorio GNOME de una manera sencilla mediante el uso de D-Bus. Me concentraré en el soporte SyncTeX incluido en Evince desde GNOME 2.32.”

La idea de este artículo es mostrar cómo se puede lograr la integración de diferentes aplicaciones en el escritorio GNOME de una manera sencilla mediante el uso de D-Bus. Me concentraré en el soporte SyncTeX incluido en Evince desde GNOME 2.32.

En primer lugar, explicaremos brevemente qué es SyncTeX, ya que muchos de ustedes probablemente nunca han oído hablar de esta tecnología. En el mundo académico, existe una herramienta llamada LaTeX que nos permite diseñar documentos de calidad profesional. LaTeX destaca particularmente por su facilidad y potencia para agregar fórmulas matemáticas frente a otras aplicaciones similares. Por desgracia, trabajar con LaTeX es un poco tedioso ya que se necesita componer un archivo fuente mezclando texto y comandos (similar en espíritu a un archivo html) y luego se utiliza LaTeX para transformar este archivo fuente en un documento (por lo general un archivo pdf). Esto provoca que la detección y corrección de errores pueda ser muy engorrosa en el caso de documentos de gran tamaño. Ahí es donde entra en juego SyncTeX. Los motores modernos de TeX permiten generar, además del documento PDF, un archivo synctex, que contiene información que ayuda a la sincronización entre el archivo de origen y el documento de salida. Editores y visores de archivos synctex pueden utilizar esta información para llevar a cabo búsquedas “hacia adelante” y “hacia atrás”, respectivamente, entre el archivo fuente y el documento de salida.

La búsqueda “hacia adelante” se refiere a la sincronización Editor->Visor, en la cual uno se encuentra editando una linea particular del texto fuente en Gedit y desea visualizar la salida que corresponde a dicha línea de texto en el documento de salida. Para esto, basta hacer Ctrl-Click sobre la línea de texto en Gedit para realizar una búsqueda hacia adelante.

Alternativamente, Ctrl-Click en Evince permite realizar una búsqueda “hacia atrás’’ que le permitirá ubicar rapidamente en Gedit la línea del archivo fuente que genera la parte del documento que nos interesa.

Entonces, ¿cómo funciona esta integración?

El principio básico es el uso de D-Bus, una tecnología que permite la comunicación entre procesos (IPC). D-Bus es bastante utilizado en el escritorio GNOME. Por ejemplo, D-Bus es parte fundamental de Telepathy (el protocolo de mensajería usado en el escritorio GNOME). La idea básica es que hay un proceso ‘deamon’, el D-Bus-daemon, al cual cada aplicación le envía mensajes. El D-Bus-daemon es el responsable de reenviar los mensajes a las aplicaciones correspondientes. La buena noticia es que GLib tiene soporte nativo para D-Bus, llamado GD-Bus, por lo que su uso en aplicaciones en GNOME es bastante simple.

Veamos más en detalle la forma en que Evince utiliza D-Bus. En primer lugar, Evince lanza un proceso por cada Documento. La razón de esto es que en el caso de que se produzca un problema en uno de los documentos abiertos por Evince, todos los restantes documentos estarán a salvo. El responsable de esto es una pequeña aplicación, ev-daemon, que se registra en D-Bus con el nombre ‘org.gnome.evince.Daemon.

Así, podemos enviar mensajes al ev-daemon a través de D-Bus para saber si un determinado documento PDF está actualmente abierto por Evince, e incluso, se puede pedir a ev-daemon que abra un nuevo documento. Además, se puede controlar remotamente las ventanas de Evince mediante D-Bus, llamando a los métodos D-Bus exportados por Evince y se puede hacer que reaccione ante los eventos de una ventana Evince, escuchando a las señales exportadas también por Evince.

Esto es un resumen muy condensado de como funciona el soporte SyncTeX en GNOME. Cada ventana Evince exporta vía D-Bus un método “SyncView” y una señal “SyncSource”. Así, cuando un usuario Ctrl-Click en Gedit (con el complemento gedit-synctex activado), el complemento llamará al método SyncView través de D-Bus, y los resultados de la búsqueda hacia adelante serán resaltados en Evince. Alternativamente, Evince emite una señal SyncSource cada vez que se hace Ctrl-Click en un documento que ha sido compilado con Synctex. Si uno se encuentra editando el archivo fuente con Gedit, entonces el complemento gedit-synctex, recibe la señal y destaca el resultado de la búsqueda hacia atrás en el archivo fuente.

Por el momento, las capacidades de control remoto de Evince se reducen sólo al soporte Synctex. Sin embargo, existen planes para introducir nuevas formas de controlar Evince a través de D-Bus. El más importante consiste en integrar Evince con Telepathy para así transformar el escritorio de GNOME para una alternativa gratuita a muchos sistemas de seminarios.

José Aliste es un desarrollador de GNOME.

Discuss this story with other readers on the GNOME forums.

Advertisements

Posted on March 15, 2011, in March 2011. Bookmark the permalink. Leave a comment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: