TeXShop apareció en internet el 23 de julio de 2000, ocho meses antes de que Mac OS X 10.0 saliera a la venta. Richard Koch, matemático de la Universidad de Oregón, había escrito una interfaz de LaTeX para un sistema operativo que todavía no existía oficialmente, y la apuesta salió bien: veintiséis años después, el editor que MacTeX deja en /Applications/TeX/ sigue siendo TeXShop, sigue siendo gratuito, sigue bajo GPLv2 y sigue siendo solo para macOS. Esta página trata de lo que esa historia dejó atrás —un menú de motores que no es más que una carpeta de scripts de shell, las líneas % !TEX que fijan los ajustes archivo por archivo, el SyncTeX con ⌘-clic— y del punto en que TeXShop deja de ser la herramienta adecuada.
Por qué TeXShop muestra un PDF y nunca un DVI
Porque macOS dibuja en PDF. Cuando Apple compró NeXT a finales de 1996 abandonó el modelo Display PostScript de NeXTSTEP y reconstruyó Quartz, la capa gráfica del Mac, sobre PDF, lo que —en palabras del propio Koch— convirtió el PDF en algo fundamental para el sistema, fácil de crear y trivial de mostrar. Escribir un visor de DVI habría costado meses; un visor de PDF salía casi gratis. Además acababa de encontrar pdfTeX, entonces en la versión 0.14, que convertía .tex directamente en .pdf sin pasar por dvips. Así que la forma entera de TeXShop —una ventana de código, una ventana de vista previa al lado y pdflatex en medio— se desprende de una decisión que Apple tomó sobre cómo dibujar rectángulos en una pantalla.
Las primeras versiones públicas salieron en julio de 2000, cuando Mac OS X todavía era una beta pública, y arrastraban un fallo espectacular que no era culpa de Koch. El código PDF de Apple aún no sabía leer fuentes incrustadas: un documento TeX compuesto en Times se veía impecable, pero cada fórmula aparecía como un rectángulo en blanco. Justo lo que un matemático necesitaba. En la conferencia de desarrolladores de 2000, Koch volvió corriendo a su motel con la beta más reciente, la instaló, ejecutó TeXShop y las fuentes seguían sin aparecer; Apple lo arregló a tiempo para la primera versión no beta, en marzo de 2001. En 2002 TeXShop 1.19 ganó un Apple Design Award, en una categoría dedicada a adaptaciones de código abierto, lo que desconcertó a la lista de correo de TeX en Mac: TeXShop nunca había sido una adaptación de nada. Y cuando Jonathan Kew, autor de XeTeX, quiso que TeX resultara igual de accesible en Windows y Linux, tomó como modelo explícito lo que llamó «el premiado TeXShop de Dick Koch»: así nació TeXworks.
Instalar TeXShop: viene dentro de MacTeX
No hay que buscar un instalador aparte de TeXShop: lo trae MacTeX. MacTeX-2026 incluye TeX Live 2026, coloca la distribución en /usr/local/texlive/2026/ y deja cinco aplicaciones gráficas —TeXShop, TeX Live Utility, LaTeXiT, BibDesk y hintView— en /Applications/TeX/. Requiere macOS 11 Big Sur o posterior y funciona de forma nativa tanto en Intel como en Apple silicon. Lo que importa para todo lo que sigue es que TeXShop no contiene TeX alguno: es una interfaz, y cada composición se limita a ejecutar pdflatex, lualatex o latexmk desde /Library/TeX/texbin. Borre TeXShop y su TeX seguirá funcionando desde el Terminal; borre /usr/local/texlive/ y TeXShop no compondrá ni una línea.
Las dos mitades se actualizan con relojes distintos, y ahí es donde mucha gente tropieza. Las actualizaciones de paquetes llegan por TeX Live Utility, la segunda aplicación de esa carpeta: al abrirla ofrece todo lo que CTAN ha cambiado desde la última vez. TeXShop se actualiza por su cuenta desde la página de Koch en la Universidad de Oregón. La versión 5.57 (octubre de 2025) exige macOS 10.13 High Sierra o posterior y llega hasta Tahoe. Para macOS 26 Tahoe, TUG publica un instalador adicional que añade TeXShop 5.58 junto a 5.57 en lugar de sustituirlo; 5.58 es el mismo programa recompilado en Tahoe, que es justamente lo que da a una aplicación el aspecto Liquid Glass de Apple. Bajo /usr/local/texlive/ pueden convivir varios años de TeX Live, y el menú Configure de TeX Live Utility es donde se elige cuál está activo.
El botón Typeset, ⌘T y el menú de motores
⌘T guarda el archivo y lo compone; lo que realmente se ejecuta lo decide el menú desplegable junto al botón Typeset, llamado Program en la barra de herramientas. Esas entradas no están grabadas en la aplicación. TeXShop lee la carpeta ~/Library/TeXShop/Engines/ y muestra un elemento por cada archivo .engine que encuentra allí, y un archivo .engine no es más que un breve script de shell que recibe el nombre del archivo en $1. El que se distribuye como LuaLaTeX.engine tiene cuatro líneas. Este es el dato más útil sobre TeXShop: todo lo que pueda escribirse en el Terminal puede ponerse en ese menú. El menú TeXShop → Open ~/Library/TeXShop lleva directamente a la carpeta.
#!/bin/tcsh
set path= ($path /Library/TeX/texbin /usr/texbin /usr/local/bin)
lualatex -file-line-error -synctex=1 "$1"Las dos opciones de ese script están ahí por un motivo y deben figurar en cualquier motor escrito a mano. -synctex=1 produce el archivo .synctex.gz sin el cual no funciona el ⌘-clic que se describe más abajo. -file-line-error cambia la forma de cada mensaje de error: en lugar del tradicional l.42 de TeX aparece ./main.tex:42: Undefined control sequence., un nombre de archivo y un número de línea a los que se puede saltar. El comando LaTeX interno de TeXShop ya pasa ambas (pdflatex --file-line-error --synctex=1), así que los valores por defecto son razonables; son los motores caseros los que pierden en silencio la sincronización. Qué motor recibe a un documento nuevo se recuerda de la última elección, y Preferencias → Typeset → Default Command decide la ruta subyacente —pdfTeX, TeX + DVI o un script personal— cuando no se nombra ningún motor.
| Entrada del menú | Lo que ejecuta | Cuándo elegirla |
|---|---|---|
LaTeX | pdflatex --file-line-error --synctex=1 (integrado) | La opción por defecto; basta para documentos en alfabeto latino |
XeLaTeX | xelatex -file-line-error -synctex=1 | Fuentes del sistema con fontspec, escrituras mezcladas |
LuaLaTeX | lualatex -file-line-error -synctex=1 | Fuentes del sistema y Lua; primera opción para trabajo japonés nuevo |
pdflatexmk | latexmk -pdf (con pdfLaTeX) | Documentos con bibliografía, índice o referencias cruzadas; basta una pulsación |
lualatexmk / xelatexmk | latexmk -pdf (con LuaLaTeX / XeLaTeX) | Las mismas reejecuciones automáticas por la ruta Lua o Xe |
latexmk | latex → dvips → ps2pdf | Manuscritos antiguos que dependen de figuras EPS o PSTricks |
Por qué una sola composición no basta: pdflatexmk y el aviso de reejecución
Si la consola termina con LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right., el PDF en pantalla lleva una compilación de retraso. LaTeX escribe etiquetas, números de página e índice general en .aux y .toc en una pasada y los relee en la siguiente, de modo que un documento con referencias cruzadas necesita realmente dos pasadas, y uno con bibliografía exige bibtex o biber en medio. Pulsar ⌘T tres veces funciona. Pero contar pasadas no es tarea de una persona: latexmk compara los archivos auxiliares y repite exactamente las veces necesarias, incluidas las pasadas de índice y bibliografía.
TeXShop trae esos motores, pero los deja desactivados: es una configuración de dos minutos que se hace una sola vez. Abra ~/Library/TeXShop/Engines/Inactive/Latexmk/ y mueva pdflatexmk.engine —o lualatexmk.engine, o xelatexmk.engine— dos carpetas más arriba, a ~/Library/TeXShop/Engines/, y reinicie TeXShop; el nombre aparecerá en el menú Program. Para probarlo antes hay un atajo: el elemento de menú Typeset with Alternate Engine ejecuta lo que figure en Preferencias → Engine → Alternate Engine, y ese campo ya dice pdflatexmk de fábrica. Cuando una compilación se tuerce —un .aux viejo, una etiqueta que no acaba de resolverse—, mantener pulsada la tecla Option convierte Typeset en Trash Aux & Typeset (⌥⌘T), que tira primero los archivos intermedios.
Las líneas % !TEX: root, TS-program y encoding
Un archivo puede llevar consigo sus propios ajustes, y en un proyecto compartido debería hacerlo. Una línea % !TEX colocada entre las primeras veinte líneas del documento es leída por TeXShop; LaTeX la ignora, porque todo lo que sigue a % es un comentario. Esa asimetría es todo el truco: el propio archivo le dice al editor cómo compilarlo y se lleva la instrucción hasta el ordenador del coautor. Tres directivas hacen casi todo el trabajo.
| Directiva | Ejemplo | Efecto |
|---|---|---|
% !TEX root | % !TEX root = ../thesis.tex | Nombra el archivo maestro. Al principio de cada capítulo, ⌘T dentro de un capítulo compone la tesis entera y SyncTeX encuentra el camino de vuelta |
% !TEX TS-program | % !TEX TS-program = lualatexmk | Nombra el motor con el nombre del archivo de Engines/ sin .engine. % !TEX program es sinónimo. Tiene prioridad sobre el menú Program |
% !TEX encoding | % !TEX encoding = UTF-8 Unicode | Nombra la codificación de este documento y anula, solo para ese archivo, el valor por defecto de Preferencias |
% !TEX root = ../thesis.tex
% !TEX TS-program = lualatexmk
% !TEX encoding = UTF-8 Unicode
% This chapter has no preamble of its own.
% Pressing Typeset here builds ../thesis.tex instead.
\chapter{Method}
\label{chap:method}De las tres, root es la que salva una tarde. Divida una tesis en capítulos, pulse ⌘T dentro de chapter3.tex sin esa línea y TeX empezará a leer un archivo sin \documentclass, que se detiene en el primer texto con ! LaTeX Error: Missing \begin{document}. La ruta es relativa al archivo del capítulo, así que un capítulo guardado en chapters/ apunta con ../thesis.tex. Esa misma línea le dice a SyncTeX a qué capítulo y a qué línea corresponde un ⌘-clic en el PDF. Se añade en el momento de dividir el documento, no la primera vez que algo se rompe.
Codificación: por qué un archivo .tex se abre ilegible o no se abre
Desde TeXShop 4.00 el valor de fábrica es Unicode (UTF-8), y esa es la respuesta correcta para todo lo que se escriba hoy; el ajuste está en Preferencias → Source → Encoding. Los archivos de texto no llevan ninguna cabecera que declare su codificación, así que TeXShop no puede adivinarla y deliberadamente no lo intenta. Cuando un archivo no es UTF-8 válido —una coautora de Europa occidental escribiendo diéresis en IsoLatin9, un manuscrito viejo salido del archivo del laboratorio—, la descodificación falla y TeXShop ofrece reabrirlo en una codificación de reserva, IsoLatin9, que es fija y no configurable. Acepte el ofrecimiento, lea la línea \usepackage[...]{inputenc} para averiguar qué es en realidad el archivo, ciérrelo sin guardar, vuelva a abrirlo con la codificación correcta desde el diálogo Abrir y solo entonces añada una línea % !TEX encoding, para que nadie tenga que repetirlo.
El soporte de japonés en TeXShop llegó exactamente por este camino, y es la mejor historia de su pasado. En Mac OS 9, las fuentes japonesas dibujaban la barra invertida como un signo de yen, y la tecla de yen de un teclado japonés emitía un byte de barra invertida: \section y ¥section eran los mismos bytes y TeX no notaba nada. Luego Unicode separó los dos caracteres, los teclados empezaron a producir un yen de verdad y el TeX japonés respondió aceptando ¥ como carácter de escape de TeX, con lo que TeXShop pasó a estropear los archivos. Koch estuvo oyendo cerca de un año que los usuarios japoneses tenían problemas, hasta que Seiji Zenitani le envió a la vez la explicación y el código; suya es también la localización japonesa. Zenitani lo puso después en contacto con Mitsuhiro Shishikura, matemático, que aportó una corrección más limpia del problema del yen y, casi de pasada, la lupa de la ventana de vista previa y el editor de macros. Ambos nombres siguen figurando en los agradecimientos de la página de TeXShop, junto a Yusuke Terada e Isao Sonobe.
Japonés y CJK: LuaLaTeX, o upLaTeX con dvipdfmx
Para un documento empezado hoy desde cero, elegir LuaLaTeX en el menú Program zanja la cuestión. Lee UTF-8 de forma nativa y accede a las fuentes ya instaladas en el Mac, de modo que con el paquete luatexja o una clase como ltjsarticle compone japonés sin maquinaria adicional. Para chino y coreano, XeLaTeX con xeCJK o ctex ocupa el mismo lugar. La única ruta que conviene evitar aquí es pdflatex: pdfTeX es anterior al acceso cómodo a fuentes Unicode, y forzar CJK a través de él lleva de vuelta al viejo paquete CJK y a fuentes preconvertidas, un camino que hoy nadie toma a propósito.
La otra ruta es upLaTeX con dvipdfmx, la combinación que la edición japonesa lleva décadas usando y la que suele dar por supuesta una plantilla heredada del departamento. TeXShop tiene una casilla para ello: Preferencias → Engine → pTeX support (for Japan) cambia los comandos internos a la familia pTeX, y ~/Library/TeXShop/Engines/Inactive/Latexmk/ también contiene dvipdfmxmk.engine para conducir esa ruta con latexmk. Un motor escrito a mano cabe en una línea, y esa línea muestra cómo encajan las piezas: ptex2pdf es el script que viene con TeX Live y que ejecuta TeX y después el paso de DVI a PDF, -l elige LaTeX en lugar de plain, -u elige el upTeX capaz de Unicode y -ot reenvía opciones al motor mismo.
#!/bin/sh
# a hand-written engine: upLaTeX, then dvipdfmx, with SyncTeX enabled
ptex2pdf -u -l -ot "-synctex=1 -file-line-error" "$1"La elección pesa más de lo que parece, porque deshacerla no sale barato. Una clase escrita para upLaTeX (jsarticle, ujarticle) no compila con LuaLaTeX, ni al revés, y tampoco lo hará la mitad de las macros de una plantilla de tesis departamental. Decida una vez, al principio; y si hereda una plantilla que nombra su motor, sígala en lugar de migrar una semana antes de la entrega. La línea que hace sobrevivir esa decisión en el Mac de otra persona es % !TEX TS-program al principio del archivo maestro.
SyncTeX: saltar entre fuente y PDF con ⌘-clic
⌘-clic, y esa es toda la interfaz. ⌘-clic en una palabra de la vista previa y la ventana de código salta a la línea que la produjo (búsqueda inversa); ⌘-clic en una línea del código y la vista previa se desplaza al punto correspondiente (búsqueda directa). TeXShop admite SyncTeX desde la versión 2.18, y todos los motores estándar pasan -synctex=1, así que funciona sin tocar nada: el archivo .synctex.gz que aparece junto al PDF en cada composición es la prueba. Si alguna vez deja de funcionar, compruebe tres cosas: que el archivo se haya compuesto al menos una vez desde la última edición, que un motor casero no haya perdido -synctex=1, y que Preferencias → Typeset → Sync Method esté en el ajuste SyncTeX y no en el antiguo pdfsync.
Es en la corrección donde esto cambia la forma de trabajar. El ciclo de leer el PDF, detectar una frase mal hecha y luego buscarla a ojo entre trescientas líneas de código desaparece por completo: se hace ⌘-clic en la frase y se escribe. En un proyecto de varios archivos, eso sí, el salto solo aterriza bien si cada archivo hijo lleva su línea % !TEX root; sin ella TeXShop no sabe qué maestro produjo la página y el clic no va a ninguna parte. Es la misma línea que hace funcionar ⌘T desde dentro de un capítulo, y por eso conviene añadirla en cuanto se divide un documento.
TeXShop, TeXworks, TeXstudio o VS Code: cuál usar
TeXShop gana en lo que un principiante necesita de verdad: no hay nada que configurar. Se instala MacTeX, se abre un archivo, se pulsa ⌘T. Además resulta poco común de agradable una vez superado eso —autocompletado de comandos con la tecla Esc, macros que pueden ser AppleScript, temas editables— y la carpeta de motores hace que nunca se niegue a ejecutar un comando que no conocía. Sus límites son igual de claros: no hay barra lateral de proyecto, ni control de versiones integrado, ni compilación mientras se escribe, y nada en absoluto en una máquina que no sea un Mac.
- En Mac, trabajando solo, sin ganas de perder tiempo en configuración: TeXShop es la opción por defecto correcta; el menú Program y las líneas
% !TEXcubren casi todo. - Hace falta la misma sensación en Windows o Linux: TeXworks, modelado sobre TeXShop, se traslada casi sin cambios.
- Se quiere un explorador de estructura, paneles de símbolos y gestión bibliográfica en una sola ventana: TeXstudio o Texmaker.
- Ya se escribe en un editor con Git, LSP y terminal: VS Code con LaTeX Workshop, dejando MacTeX debajo.
- Hay coautores que no instalarán nada: Overleaf como lugar compartido y TeXShop como copia local para la pasada final.