TeXstudio

Desplace hasta el final un registro de cambios de TeXstudio y encontrará entradas que ni siquiera son de TeXstudio: pertenecen a Texmaker. TeXstudio empezó como un conjunto de extensiones para Texmaker con el nombre «TexMakerX», se rebautizó en la versión 2.2 y todavía arrastra la historia de su antecesor. Esa ascendencia explica bastante bien el carácter del editor: no incluye ni un solo ejecutable propio y, aun así, todo lo que necesita quien escribe cabe en una sola ventana: editor, cadena de compilación, visor de PDF, revisión ortográfica y gramatical, un mapa del documento. Todo salvo LaTeX mismo. Esta página trata la configuración de compilación en la que muchos se atascan, la finalización que hacen posible los archivos .cwl, la vista de estructura y SyncTeX.

Un entorno LaTeX que no trae LaTeX

TeXstudio es un editor de código abierto bajo GPL v2 que funciona en Windows, macOS, Linux y BSD, y compila lanzando comandos externos como pdflatex o latexmk. Eso fija el orden de instalación: primero una distribución de TeX —TeX Live o MiKTeX— y después TeXstudio. Al revés se llega al estado desconcertante en que el programa arranca sin problemas pero nada compila. Las funciones que el propio proyecto destaca son paletas de «más de 1000 símbolos matemáticos», un corrector ortográfico y otro gramatical interactivos, plegado de código, una vista de estructura y un visor de PDF integrado con sincronización «(casi) a nivel de palabra», lo que lleva directamente a la sección de SyncTeX más abajo.

La pestaña Build y la pestaña Commands: leer txs:///

Todo está en Options → Configure TeXstudio, y dos pestañas gobiernan la compilación. La pestaña Commands es donde se dice qué es realmente cada comando externo: la ruta del ejecutable y sus argumentos. La pestaña Build es donde se definen los «metacomandos» que los combinan. Mientras no marque Show Advanced Options abajo a la izquierda, la mayor parte de la segunda permanece oculta. Ahí es donde la gente se atasca: mirando la pestaña Build cuando lo que quiere es cambiar un argumento de pdflatex, o al revés.

En el día a día solo toca cuatro acciones. Build & View (F5) compila y luego abre el PDF; Compile (F6) se limita a producirlo; View (F7) abre el que ya existe; y Clean barre los archivos intermedios —.aux, .toc y parientes— sin tocar el PDF terminado.

Un metacomando no es más que una lista de nombres que empiezan por txs:///, unidos por la barra |. «Build & View» es, en el fondo, una expresión de dos palabras: «el compilador predeterminado y luego el visor predeterminado». Cualquier comando registrado en la pestaña Commands se referencia igual, de modo que puede intercalar su propio paso de conversión en la cadena.

NombreQué esDónde aparece
txs:///quickla cadena compilar y previsualizarBuild & View (F5)
txs:///compileel compilador predeterminado (pdfLaTeX de fábrica)Compile (F6)
txs:///viewel visor predeterminadoView (F7)
txs:///pdflatexla propia línea pdflatex de la pestaña Commandspuede designarse como compilador predeterminado
txs:///latexla línea latex, que produce un DVIla usan las cadenas que pasan por DVI
txs:///view-pdfla línea que abre un PDF, visor interno o externodéjelo interno si quiere SyncTeX

De fábrica el compilador predeterminado es pdfLaTeX, pero cambiarlo a latexmk es el movimiento habitual. latexmk inspecciona las dependencias y repite la pasada exactamente tantas veces como exijan la bibliografía, el índice y las referencias cruzadas, así que nadie tiene que contar pasadas. En la pestaña Commands se escribe así. Ojo: % se sustituye por la ruta absoluta del documento raíz (maestro) sin su extensión —la raíz, no el archivo que esté editando—. Ese único detalle es lo que hace funcionar los proyectos de varios archivos.

terminal
latexmk -pdf -synctex=1 -interaction=nonstopmode -file-line-error %.tex

Para cambiar de motor documento a documento, basta un comentario mágico en la primera línea. TeXstudio lee, entre otros, % !TeX program, % !TeX root, % !TeX encoding y % !TeX spellcheck. Con la línea de abajo, solo ese documento compila con LuaLaTeX, sin tocar el cuadro de ajustes. La sintaxis exacta de la familia % !TEX se detalla en la página de TeXShop.

latex
% !TeX program = lualatex
% !TeX root = ../thesis.tex
% !TeX spellcheck = en_GB

Solo tres ajustes hay que fijar primero

Hay muchísimos ajustes, así que lo realista es zanjar solo tres al principio: el compilador predeterminado, la cadena Build & View y si SyncTeX está activo. Fijados esos tres, pulsar F5 recorre siempre el mismo camino, y cuando algo falla solo hay un hilo del que tirar.

  • Para documentos mayoritariamente occidentales, deje que latexmk produzca el PDF directamente; para una plantilla japonesa heredada, elija upLaTeX + dvipdfmx.
  • Defina Build & View como «lo que hace realmente el F5 que pulso todo el día», compilación y apertura en el visor interno incluidas.
  • Ponga siempre -synctex=1 y -file-line-error en el comando: el primero para volver del PDF a la fuente, el segundo para que los errores lleguen con nombre de archivo y número de línea.
  • Pruebe la configuración en un .tex de diez líneas antes de abrir el manuscrito real, y lea tanto el registro como el PDF para confirmar que el motor que se ejecutó es el que esperaba.

Configurar la compilación para el japonés

Se usan mucho dos rutas. Una es LuaLaTeX: en la pestaña Build, ponga Build & View en «Compile & View» y el compilador predeterminado en «LuaLaTeX»; una sola pulsación de F5 lleva al PDF. Para empezar de cero es la opción directa. La otra es upLaTeX + dvipdfmx, durante mucho tiempo el estándar japonés; como intercala un DVI antes del PDF, hay que poner Build & View en la «DVI->PDF chain» y el compilador predeterminado en «LaTeX».

La disposición más clara es describir la combinación de motores en un .latexmkrc y dejar que TeXstudio se limite a llamar a latexmk. Ponga el siguiente archivo junto a su .tex y latexmk se ocupa del flujo upLaTeX → dvipdfmx, de la bibliografía (upbibtex), del índice (upmendex) y del número de repeticiones. Como $latex lleva -synctex=1, SyncTeX sigue funcionando.

latex
$latex = 'uplatex %O -synctex=1 -interaction=nonstopmode %S';
$bibtex = 'upbibtex %O %B';
$makeindex = 'upmendex %O -o %D %S';
$dvipdf = 'dvipdfmx %O -o %D %S';
$pdf_mode = 3;

$pdf_mode = 3 selecciona el modo «hacer un DVI y luego convertirlo en PDF con $dvipdf». Los tokens %O (opciones extra), %S (el archivo fuente), %B (el nombre base sin extensión) y %D (el destino de salida) son marcadores de latexmk, y no son lo mismo que el % de TeXstudio. Configurado así, se obtiene el mismo resultado tanto si la compilación parte de TeXstudio, de la línea de comandos o de otro editor por completo, porque la configuración vive en un solo sitio.

Lea el registro desde el primer error

Antes de cambiar ajustes al azar, mire dos cosas: qué comando se lanzó y cuál es el primer error del registro. Los errores de LaTeX se encadenan: la primera línea roja suele haber engendrado todas las siguientes. El panel de registro de TeXstudio está hecho justo para ese orden de lectura: puede alternar entre el registro en bruto y una tabla que clasifica los mensajes en errores (rojo), avisos (amarillo) y cajas desbordadas (azul). Entre errores se mueve con Ctrl+Shift+↑ y Ctrl+Shift+↓; entre avisos y cajas, con Alt+Shift+↑ y Alt+Shift+↓.

  • Si aparece Could not start the command, los sospechosos son el PATH y el estado de la instalación de TeX Live / MiKTeX, no TeXstudio. Compruebe la ruta del ejecutable en la pestaña Commands.
  • File not found significa una de tres cosas: el archivo raíz, una ruta relativa o el nombre de un archivo de figura; y mire si la extensión está escrita.
  • Cuando falta un paquete, instálelo con tlmgr install en TeX Live o con MiKTeX Console en MiKTeX. Eso el editor no lo arregla.
  • Haga clic en el número de línea del registro, corrija solo el primer error, recompile y siga leyendo después. Leer primero el final de una cascada suele ser tiempo perdido.

Por qué la finalización conoce sus \label: los archivos .cwl

TeXstudio no interpreta LaTeX. Lee archivos .cwl, listas de palabras de finalización. El formato viene originalmente de otro editor de LaTeX, Kile, y TeXstudio lo amplió con información semántica: este argumento es una etiqueta, ese punto es donde debe caer el cursor. Por eso teclear \ref{ ofrece las etiquetas del documento y \cite{ ofrece las claves (bibIDs) de la bibliografía. Cuando hace \usepackage, se carga la cwl correspondiente si existe; si no, TeXstudio genera una a partir del .sty automáticamente, lo que da nombres de comandos pero ningún sentido de lo que significan los argumentos. Para un paquete propio, escribir \usepackage{./myPackage} con ruta relativa hace que se busque ./myPackage.cwl.

Vale la pena aprender otros tres ahorros de teclas. Cuando los candidatos comparten un comienzo común, pulsar Tab rellena esa parte común de una vez. Empiece un entorno —teclee \begin{itemize}— y el \end{itemize} correspondiente se inserta solo. Y dejar el cursor un momento sobre un nombre de entorno hace aparecer un cursor espejo, que permite reescribir a la vez los nombres de \begin y \end: convertir itemize en enumerate de un solo movimiento. Para cerrar el entorno o la llave que sigan abiertos, Alt+Return. Olvidar cerrar algo es uno de los accidentes más frecuentes en LaTeX, así que ese atajo merece memorizarse.

La vista de estructura y la revisión ortográfica y gramatical mientras escribe

La vista de estructura de la izquierda se convierte en el mapa del documento. Enumera los títulos (\section y su familia), las etiquetas (\label), los archivos traídos por \input e \include, los bloques de beamer y los TODO: se recogen tanto el comando \todo{} como los comentarios % TODO / %todo. Pulse una entrada y aterriza allí. En un manuscrito largo o un proyecto de varios archivos, esta lista es lo que impide perder de vista dónde está uno.

La revisión ortográfica corre mientras escribe, y hacer clic derecho en una palabra sospechosa ofrece correcciones. Los diccionarios están en formato hunspell, la misma maquinaria que usan LibreOffice y Firefox, de modo que se pueden tomar prestados diccionarios de allí. Para fijar el idioma a un archivo, escriba % !TeX spellcheck = de_DE en la primera línea y ese archivo cambiará de idioma automáticamente cada vez que se abra. Resulta muy útil al editar un volumen multilingüe.

La revisión gramatical, en cambio, no es un juicio propio de TeXstudio. El motor de corrección de código abierto LanguageTool se ejecuta localmente como servidor, TeXstudio se conecta a él al arrancar, y cada párrafo terminado se le envía y las observaciones vuelven (la URL del servidor y la ruta del jar se indican en Options → Configure TeXstudio → Language Checking). Gracias a ese montaje su prosa nunca sale de la máquina, lo que tranquiliza mientras el manuscrito siga inédito.

SyncTeX: ctrl-clic, hacia delante y hacia atrás

Solo hay dos condiciones. Primera, pasar -synctex=1 al comando de compilación. SyncTeX es una función del motor de TeX y no del editor, y es ese interruptor el que le hace escribir el archivo de sincronización .synctex.gz (la línea de latexmk y el .latexmkrc de arriba ya lo llevan; si se olvida, TeXstudio se ofrece a corregir el comando). Segunda, abrir el PDF en el visor interno. Es el soporte de SyncTeX de ese visor lo que hace posibles los saltos en ambos sentidos.

Los gestos son fáciles de recordar, porque ambos sentidos son Ctrl + clic izquierdo. Hágalo en la fuente y aterriza en el lugar correspondiente del PDF (búsqueda directa); hágalo en el PDF y aterriza en la línea fuente correspondiente (búsqueda inversa). El menú contextual ofrece lo mismo en «Go To PDF» y «jump to source». La búsqueda directa se ejecuta además automáticamente hacia la posición actual del cursor cada vez que se abre el visor. Active «scrolling follows cursor» y «cursor follows scrolling» y ambos quedan enlazados de forma continua mientras escribe, con lo que la pregunta de corrección «¿qué línea produjo este párrafo?» sencillamente desaparece.