Apuntes mientras aprendo sobre software y computadoras.

Computación

Guía casi definitiva para utilizar Neovim y LaTeX en la universidad

Este apunte le da forma a lo que voy a dar en llamar mi “Guía casi definitiva para utilizar Neovim y Latex en la universidad”.

Ya sea que necesites escribir un ensayo argumentativo, una tesis, una tesina o un sencillo informe, este apunte va a ayudarte en cualquier contexto o proyecto académico.

En realidad todo este texto puede ayudar a cualquier persona, dentro o fuera del contexto de la universidad. Pero el ángulo de la universidad vuelve al tema un poco más amable para el marketing de las redes y todo eso.

Antes de continuar recuerden que estoy escribiendo este material utilizando un sistema operativo Linux. Los detalles pueden ser diferentes en otros sistemas.

Dentro de todo lo posible voy a buscar las soluciones más sencillas a los problemas que encontramos. Dónde puede evitar agregar un plugin extra, voy a evitarlo. La idea es resolver nuestros problemas de la forma más directa posible.

Y otro detalle importante: mucho de lo que vamos a hacer ahora nos va a ayudar también a poder utilizar otros lenguajes además de LaTeX. Varias de las herramientas que vamos a instalar son compartidas por otros lenguajes de programación.

Ahora sin más introducción…

Lista de cosas por hacer antes de empezar

Antes de empezar a modificar cosas en Neovim que tengan que ver con LaTeX, necesitamos cubrir algunos puntos básicos para dejar todo listo.

Entre eso tenemos:

Instalar Neovim:

Sin tener esto en el equipo no podemos hacer nada. Tengo un apunte sobre cómo instalar Neovím desde el código fuente.

Instalar el programa de esa forma es una buena opción para tener siempre la versión más actualizada.

Intalar TexLive

Antes de empezar necesitamos instalar TexLive a nivel global en el sistema.

En ese apunte anterior van a encontrar cómo instalar la última versión directamente desde la fuente oficial.

Organizar el servidor de lenguaje con nvim-lspconfig y Texlab

Este momento de nuestro proyecto esta dividido en dos partes, cubierto en un único apunte.

Ahora vamos a necesitar instalar plugins, y para ayudarnos con eso tengo este apunte sobre cómo instalar plugins en Neovim de forma manual.

En un resumen muy rápido, Neovim va a actuar como un cliente para un servidor de lenguaje. En terminos prácticos esto va a darnos funcionalidades extra como revisión de errores en la sintaxis.

En este apunte tengo toda la información necesaria para instalar nvim-lspconfig y Texlab.

Otra vez en el espiritu de resumir esto lo más posible:

  1. Vamos a instalar el plugin nvim-lspconfig dentro del directorio indicado del programa nvim.
  2. Necesitamos instalar de forma global desde la terminal de Linux el servidor de lenguaje Texlab.

Primer punto de control

Si todo funciono correctamente hasta el momento, voy a tener que poder:

  1. Abrir Neovim en mi equipo.
  2. Crear un archivo llamado “ensayo.tex” para empezar a escribir.
  3. Utilizar dentro de Neovim el comando:
:checkhealth lsp

Con eso voy a saber si Neovim puede comunicarse correctamente con Texlab.

Si tengo todo organizado como hasta este punto de control, voy a encontrar que puedo:

  • Revisar que el texto se encuentra coloreado según la sintaxis.
  • Tengo la opción de auto completar texto en relación al código. Por ejemplo digamos que escribo:

Y luego presiono (estando en “insert mode”) “Ctrl + x Ctrl + o”.

Voy a ver que se despliega un nuevo menú oferciendome opciones para autocompletar.

  • Diagnóstico de errores: por ejemplo si escribo un ejemplo y me falta un corchete, Texlab va a avisarme del error con un mensaje en la pantalla.

¿Tenemos suficiente con esto para empezar a escribir nuestros trabajos universitarios? Posiblemente si.

Pero creo que todavía podemos mejorar algunas cosas.

Formas de compilar nuestro documento LaTex desde Neovim

Compilado desde Texlab

¿Recordás el documento “texlab.lua” que antes nvim-lspconfig puso en nuestro sistema?

Dentro de ese codigo vamos a encontrar una parte de commandos que podemos utilizar directamente en Neovim.

Por ejemplo tenemos:

TexlabBuild = { function() buf_build() end, 
description = ‘Build the current buffer’, },

Esto quiere decir que si utilizo el comando:

:TexlabBuild

Vamos a poder compilar el documento para empezar a revisarlo en PDF.

Vista previa con PDF para LaTeX en Neovim

No vamos a poder hacer mucho si no tenemos una opción para empezar a visualizar el estado actual de nuesro proyecto en PDF cada vez que lo necesitamos.

Para esto vamos a necesitar compilar el documento al momento de guardarlo.

La wiki de Texlab tiene un apartado que trata sobre previsualizar.

Muchas guías que estuve leyendo sobre el asunto recomiendan utilizar el visualizador de documentos llamado Zathura.

Otras de las opciones que tenemos es utilizar el programa el programa “Okular”, que cumple una función similar y es más completo.

Voy a revisar un poco más cada alternativa.

Opción 1: instalar “Okular”

Aunque no utilicé mucho este programa, quiero mencionarlo porque tiene dos grandes facilidades que facilitan bastante lo que estamos haciendo. Y estas ventajas son:

1- Es sencillo de instalar en un solo movimiento. Puede que no sea la version más actual, pero si estamos usando un sistema operativo en base a Debian, como Ubuntu o Mint, podemos hacer:

sudo apt install okular

Y ya vamos a tenerlo funcionando.

2- Utilizando el programa solo para abrir archivos PDF, se puede utilizar para remarcar texto sobre los documentos.

De las dos opciones que presento esta es la más “tradicional” por decirlo de alguna forma, rápido de instalar y con una interfaz amable para su utilización.

La forma de integrar Okular con Texlab se encuentra también en ese enlace que puse más arriba, y es muy similar a la forma de integrar Zathura que voy a describir a continuación.

Instalar Zathura

La forma más directa de instalar este programa, usando el sistema “apt”, es de esta forma:

sudo apt install zathura

Y con eso voy a tener una versión funcional pero algo anticuada del programa, en la mayoría de los casos.

Zathura se utiliza de una forma muy similar a Neovim. Es un programa que nos va a demandar algo más de práctica, porque todo se Hace por medios de comandos y atajos del teclado.

¿Y qué hacemos si queres la última versión?

En ese caso vas a tener que prepararte para pasar un par de horas revisando tener los paquetes y dependencias correctos.

Si realmente queremos usar Zathura en su versión más actualizada, para eso descargo la última versión de esta página.

Y luego sigo estas instrucciones..

Estas otras instruciones detallan un poco mejor las librerias extra que vamos a necesitar.

Por supuesto luego vamos a necesitar instalar el plugin zathura-pdf-poppler para poder abrir los archivos PDF

El asunto es que vamos a tener que consguir bastantes dependencias extra antes, y eso puede tomar un buen rato. Yo lo instalé de las dos formas para probarlo, pero al menos en un primer momento no encontré diferencias en la forma que interactuan con TexLaB y Neovim. En los dos casos se comunicaron de iday vuelta sin inconvenientes.

Configurar Texlab y Zathura

Entonces es seguro que antes tenía en esto en mi “init.lua”:

require’lspconfig’.texlab.setup{}

Pero ahora voy a reemplazarla por:

require('lspconfig').texlab.setup({
    settings = {
      texlab = {
        build = {
          onSave = true,
          forwardSearchAfter = true,
        },
        forwardSearch = {
          executable = "zathura",
          args = {"--synctex-forward", "%l:1:%f", "%p"},
        },
      },
    },
  })

Ahora cada vez que haga un guardado del documento, me va a aparecer un archivo dentro de Zathura mostrandome los cambios.

¿Cómo funciona esto en la práctica? La actualización en la visualización no se hace cada vez que se regenera el programa, en el sentido que tengo que cerrar el programa Zathura para que vuelva a abrirse con los cambios. Y lo mismo ocurre con Okular.

Puede ser que sea posible convertir esta visualización en algo “en vivo” por medio de un plugin. O puede ser que me falte algún detalle en mi propia configuración.

De esta forma cuando usamos el comando “:w” para guardar, Neovim regenera nuestro proyecto de LaTeX. pero la instancia de Zathura no se actualiza por si sola. Si cerramos Zathura, vuelve a abrirse ahora con el texto actualizado. No es una molestia realmente.

Entonces descontando eso de que el PDF no refleja lo que escribimos “en directo”, todo funciona muy bien y de momento es la mejor solución que tengo sin herramientas extra.

Navegar entre Neovim y el documento en preview

  • Búsqueda directa:

Antes escribimos este código:

{executable = "zathura",
args = {"--synctex-forward", "%l:1:%f", "%p"},

Lo que eso nos permite es, según en que parte se encuentre el cursor dentro de nuestro docuento en Neovin, esa parte se va a ver resaltada en el documento abierto en Zathura.

Según el programa visualizador estos detalles cambián, por ejemplo para Okular el cpodigo es ligeramente diferente y lo encontramos en la wiki de Texlab en la parte de previewing.

  • Búsqueda Indirecta:

Ahora digamos que queremos hacer lo contrario, mover el cursor dentro de Zathura y verlo reflejado dentro de Neovim.

Para eso buscamos (o creamos) el archivo “zathurarc” en este directorio, que también tenemos que crear de ser necesario:

~/.config/zathura/zathurarc

Ese es uno de los directorios dónde el programa busca sus configuraciones, por ejemplo podemos cambiar el tamaño de la pantalla y otras cosas más.

Dentro de ese documento escribimos:

set synctex true
set synctex-editor-command "texlab inverse-search -i %{input} -l %{line}"

Y listo, ahora si hacemos “Ctrl+Click” en alguna parte del documento de Zathura, el cursor dentro de Neovim se pone sobre la misma linea.

Conclusión

Con esto le doy un cierre a mi “Guía casi definitiva para utilizar Neovim y LaTeX en la universidad.”

Se trata de una guía “casi definitiva” porque todavía le estoy agregando información. Lo importante a mi entender es que con el material compartido en este texto podemos pasar de tener una configuración nueva de Neovim a una que puede producir textos con Latex en muy poco tiempo.

¿Encontraste algún error en el apunte? ¿Utilizás Neovim en conjunto con LaTeX? Me gustaría conocer tus opiniones.

La seguimos en el próximo apunte.

Leave a Reply