TeXShop (Mac)

TeXShop erschien am 23. Juli 2000 im Internet – acht Monate bevor Mac OS X 10.0 überhaupt verkauft wurde. Richard Koch, Mathematiker an der University of Oregon, hatte ein LaTeX-Frontend für ein Betriebssystem geschrieben, das es offiziell noch gar nicht gab, und die Wette ging auf: 26 Jahre später ist TeXShop immer noch der Editor, den MacTeX in /Applications/TeX/ ablegt – kostenlos, GPLv2, ausschließlich für macOS. Diese Seite handelt von dem, was aus dieser Geschichte geblieben ist: ein Engine-Menü, das in Wahrheit ein Ordner voller Shell-Skripte ist, die % !TEX-Zeilen, die Einstellungen pro Datei festhalten, SyncTeX per ⌘-Klick – und von dem Punkt, an dem TeXShop nicht mehr das richtige Werkzeug ist.

Warum TeXShop ein PDF anzeigt und nie ein DVI

Weil macOS selbst in PDF zeichnet. Als Apple Ende 1996 NeXT kaufte, wurde das Display-PostScript-Modell von NeXTSTEP fallen gelassen und die Grafikschicht des Mac, Quartz, auf PDF neu aufgebaut – womit PDF, wie Koch es formulierte, zur Grundlage des Systems wurde: leicht zu erzeugen und mühelos anzuzeigen. Ein DVI-Betrachter wäre Monate an Arbeit gewesen, ein PDF-Betrachter war praktisch geschenkt. Dazu kam pdfTeX, damals in Version 0.14, das .tex ohne den Umweg über dvips direkt in .pdf verwandelte. Die gesamte Gestalt von TeXShop – ein Quellfenster, daneben ein Vorschaufenster, dazwischen pdflatex – ergibt sich also aus einer Entscheidung, die Apple über das Zeichnen von Rechtecken auf einem Bildschirm getroffen hat.

Die ersten öffentlichen Versionen erschienen im Juli 2000, als Mac OS X noch eine Public Beta war, und sie trugen einen spektakulären Fehler, für den Koch nichts konnte. Apples PDF-Code konnte eingebettete Schriften noch nicht lesen: Ein in Times gesetztes TeX-Dokument erschien makellos – jede Formel darin aber als leeres Rechteck. Genau das war das eine, was ein Mathematiker brauchte. Auf der Entwicklerkonferenz 2000 eilte Koch mit der neuesten Beta ins Motel zurück, installierte sie, startete TeXShop – und die Schriften fehlten weiterhin. Behoben war es erst zur ersten Nicht-Beta-Fassung im März 2001. 2002 erhielt TeXShop 1.19 einen Apple Design Award, und zwar in einer Kategorie für Open-Source-Portierungen, was auf der Mac-TeX-Mailingliste für Stirnrunzeln sorgte: TeXShop war nie eine Portierung von irgendetwas. Als Jonathan Kew, der Autor von XeTeX, TeX auch unter Windows und Linux so zugänglich machen wollte, nahm er ausdrücklich „Dick Kochs preisgekröntes TeXShop" zum Vorbild – daraus wurde TeXworks.

TeXShop installieren: Es steckt in MacTeX

Ein eigener TeXShop-Download ist nicht nötig – MacTeX bringt ihn mit. MacTeX-2026 enthält TeX Live 2026, legt die Distribution unter /usr/local/texlive/2026/ ab und installiert fünf GUI-Programme – TeXShop, TeX Live Utility, LaTeXiT, BibDesk und hintView – in /Applications/TeX/. Vorausgesetzt wird macOS 11 Big Sur oder neuer; die Programme laufen nativ auf Intel wie auf Apple Silicon. Entscheidend für alles Weitere: TeXShop enthält selbst kein TeX. Es ist ein Frontend, und jeder Satzlauf startet lediglich pdflatex, lualatex oder latexmk aus /Library/TeX/texbin. Ohne TeXShop funktioniert TeX im Terminal weiterhin; ohne /usr/local/texlive/ kann TeXShop keine einzige Zeile setzen.

Beide Hälften werden nach unterschiedlichen Uhren aktualisiert – daran scheitern viele. Paketaktualisierungen kommen über TeX Live Utility, die zweite Anwendung in jenem Ordner: Beim Öffnen bietet sie alles an, was sich auf CTAN seit dem letzten Aufruf geändert hat. TeXShop selbst wird getrennt davon über Kochs Seite an der University of Oregon aktualisiert. Version 5.57 (Oktober 2025) setzt macOS 10.13 High Sierra oder neuer voraus und läuft bis Tahoe. Für macOS 26 Tahoe liefert TUG einen zusätzlichen Installer, der TeXShop 5.58 neben 5.57 stellt, statt es zu ersetzen; 5.58 ist dasselbe Programm, auf Tahoe neu kompiliert – nur so erhält eine Anwendung Apples Liquid Glass-Erscheinung. Unter /usr/local/texlive/ können mehrere TeX-Live-Jahrgänge nebeneinander liegen; welcher aktiv ist, legt das Configure-Menü von TeX Live Utility fest.

Der Typeset-Knopf, ⌘T und das Engine-Menü

⌘T sichert die Datei und setzt sie; was dabei tatsächlich läuft, bestimmt das Aufklappmenü neben dem Typeset-Knopf, in der Werkzeugleiste Program genannt. Seine Einträge sind nicht im Programm einkodiert. TeXShop liest den Ordner ~/Library/TeXShop/Engines/ und zeigt pro gefundener .engine-Datei einen Menüpunkt an – und eine .engine-Datei ist nichts weiter als ein kurzes Shell-Skript, das den Dateinamen als $1 erhält. Das mitgelieferte LuaLaTeX.engine umfasst vier Zeilen. Das ist die nützlichste Tatsache über TeXShop überhaupt: Was sich im Terminal tippen lässt, lässt sich in dieses Menü stellen. Der Menüpunkt TeXShop → Open ~/Library/TeXShop führt direkt in den Ordner.

terminal
#!/bin/tcsh

set path= ($path /Library/TeX/texbin /usr/texbin /usr/local/bin)
lualatex -file-line-error -synctex=1 "$1"

Die beiden Optionen in diesem Skript stehen nicht zufällig dort und gehören in jede selbst geschriebene Engine. -synctex=1 erzeugt die Datei .synctex.gz, ohne die der weiter unten beschriebene ⌘-Klick nicht funktioniert. -file-line-error ändert die Gestalt jeder Fehlermeldung: statt des traditionellen l.42 erscheint ./main.tex:42: Undefined control sequence. – Dateiname und Zeilennummer, zu denen sich springen lässt. Der eingebaute LaTeX-Befehl von TeXShop übergibt beides ohnehin (pdflatex --file-line-error --synctex=1), die Voreinstellungen sind also vernünftig; verlieren kann die Synchronisation nur eine selbstgebaute Engine. Welche Engine ein neues Dokument empfängt, merkt sich das Programm von der letzten Wahl, und Einstellungen → Typeset → Default Command legt den zugrunde liegenden Weg fest – pdfTeX, TeX + DVI oder ein eigenes Skript –, wenn keine Engine benannt ist.

MenüeintragWas ausgeführt wirdWann sinnvoll
LaTeXpdflatex --file-line-error --synctex=1 (eingebaut)Voreinstellung; genügt für Dokumente in lateinischer Schrift
XeLaTeXxelatex -file-line-error -synctex=1Systemschriften über fontspec, gemischte Schriftsysteme
LuaLaTeXlualatex -file-line-error -synctex=1Systemschriften plus Lua; erste Wahl für neue japanische Arbeiten
pdflatexmklatexmk -pdf (treibt pdfLaTeX)Dokumente mit Literaturverzeichnis, Index oder Querverweisen; ein Durchgang genügt
lualatexmk / xelatexmklatexmk -pdf (treibt LuaLaTeX / XeLaTeX)Dieselben automatischen Wiederholungen auf dem Lua- oder Xe-Weg
latexmklatexdvipsps2pdfÄltere Manuskripte mit EPS-Abbildungen oder PSTricks

Warum ein Satzlauf nicht reicht: pdflatexmk und die Rerun-Warnung

Endet die Konsole mit LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right., ist das PDF auf dem Bildschirm einen Durchgang alt. LaTeX schreibt Labels, Seitenzahlen und Inhaltsverzeichnis im ersten Lauf in .aux und .toc und liest sie im nächsten wieder ein; ein Dokument mit Querverweisen braucht daher tatsächlich zwei Läufe, eines mit Literaturverzeichnis zusätzlich bibtex oder biber dazwischen. Dreimal ⌘T funktioniert durchaus. Nur ist das Zählen von Durchgängen keine menschliche Aufgabe: latexmk vergleicht die Hilfsdateien und wiederholt genau so oft wie nötig, samt Index- und Literaturlauf.

TeXShop liefert diese Engines mit, lässt sie aber abgeschaltet – eine einmalige Einrichtung von zwei Minuten. Im Ordner ~/Library/TeXShop/Engines/Inactive/Latexmk/ wird pdflatexmk.engine – oder lualatexmk.engine beziehungsweise xelatexmk.engine – zwei Ebenen höher nach ~/Library/TeXShop/Engines/ verschoben; nach einem Neustart von TeXShop erscheint der Name im Program-Menü. Zum Ausprobieren gibt es eine Abkürzung: Der Menüpunkt Typeset with Alternate Engine führt aus, was unter Einstellungen → Engine → Alternate Engine eingetragen ist, und dort steht ab Werk bereits pdflatexmk. Wird ein Lauf seltsam – eine veraltete .aux, ein Label, das sich nicht auflösen lässt –, verwandelt die gedrückte Wahltaste den Eintrag Typeset in Trash Aux & Typeset (⌥⌘T), das die Zwischendateien zuvor entfernt.

Die % !TEX-Zeilen: root, TS-program und encoding

Eine Datei kann ihre eigenen Einstellungen mitführen, und in einem gemeinsamen Projekt sollte sie das auch. Steht eine % !TEX-Zeile innerhalb der ersten zwanzig Zeilen, liest TeXShop sie; LaTeX übergeht sie, denn alles nach % ist Kommentar. Genau diese Asymmetrie ist der ganze Kniff: Die Datei sagt dem Editor, wie sie zu übersetzen ist, und nimmt die Anweisung mit auf den Rechner der Mitautorin. Drei Direktiven erledigen fast alles.

DirektiveBeispielWirkung
% !TEX root% !TEX root = ../thesis.texBenennt die Hauptdatei. Am Kopf jedes Kapitels sorgt sie dafür, dass ⌘T im Kapitel die gesamte Arbeit setzt – und dass SyncTeX zurückfindet
% !TEX TS-program% !TEX TS-program = lualatexmkBenennt die Engine über den Dateinamen in Engines/ ohne .engine. % !TEX program ist gleichbedeutend. Hat Vorrang vor dem Program-Menü
% !TEX encoding% !TEX encoding = UTF-8 UnicodeBenennt die Zeichenkodierung dieses Dokuments und überschreibt für diese Datei die Voreinstellung
latex
% !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}

Von den dreien rettet root einen ganzen Nachmittag. Wird eine Abschlussarbeit in Kapitel zerlegt und ohne diese Zeile in chapter3.tex ⌘T gedrückt, beginnt TeX eine Datei ohne \documentclass zu lesen und bricht beim ersten Fließtext mit ! LaTeX Error: Missing \begin{document}. ab. Der Pfad ist relativ zur Kapiteldatei, ein Kapitel im Ordner chapters/ verweist also mit ../thesis.tex zurück. Dieselbe Zeile sagt SyncTeX, zu welchem Kapitel und welcher Zeile ein ⌘-Klick im PDF gehört. Sie gehört in die Datei, sobald das Dokument aufgeteilt wird – nicht erst, wenn etwas nicht mehr geht.

Kodierung: warum eine .tex-Datei zu Kauderwelsch wird oder gar nicht öffnet

Seit TeXShop 4.00 lautet die Werkseinstellung Unicode (UTF-8), und das ist für alles Neue die richtige Antwort; zu finden ist sie unter Einstellungen → Source → Encoding. Textdateien führen keinen Kopf mit sich, der ihre Kodierung nennt, also kann TeXShop nicht raten und tut es bewusst auch nicht. Ist eine Datei kein gültiges UTF-8 – eine westeuropäische Mitautorin schreibt Umlaute in IsoLatin9, ein altes Manuskript stammt aus einem Institutsarchiv –, scheitert die Dekodierung, und TeXShop bietet an, sie in einer Fallback-Kodierung, IsoLatin9, erneut zu öffnen; diese ist fest und nicht einstellbar. Das Angebot annehmen, an der Zeile \usepackage[...]{inputenc} ablesen, worum es sich wirklich handelt, ohne Sichern schließen, über den Öffnen-Dialog mit der richtigen Kodierung erneut öffnen – und erst dann eine % !TEX encoding-Zeile ergänzen, damit niemand dasselbe ein zweites Mal tun muss.

Die japanische Unterstützung von TeXShop kam genau auf diesem Weg zustande – die schönste Geschichte in der Historie des Programms. Unter Mac OS 9 zeichneten japanische Schriften den Backslash als Yen-Zeichen, und die Yen-Taste einer japanischen Tastatur lieferte ein Backslash-Byte: \section und ¥section waren dieselben Bytes, TeX merkte nichts. Dann trennte Unicode die beiden Zeichen, Tastaturen begannen ein echtes Yen-Zeichen zu senden, und das japanische TeX reagierte, indem es ¥ als TeX-Escapezeichen akzeptierte – womit TeXShop Dateien verstümmelte. Koch hörte etwa ein Jahr lang, dass japanische Nutzer Schwierigkeiten hätten, bis Seiji Zenitani ihm die Erklärung und den Code zugleich schickte; von ihm stammt auch die japanische Lokalisierung. Zenitani verwies ihn weiter an Mitsuhiro Shishikura, einen Mathematiker, der eine sauberere Lösung des Yen-Problems beisteuerte und nebenbei die Lupe für das Vorschaufenster sowie den Makro-Editor. Beide Namen stehen bis heute im Dank auf der TeXShop-Seite, neben Yusuke Terada und Isao Sonobe.

Japanisch und CJK: LuaLaTeX oder upLaTeX mit dvipdfmx

Für ein heute neu begonnenes Dokument genügt LuaLaTeX im Program-Menü, und die Frage ist erledigt. Es liest UTF-8 unmittelbar und greift auf die bereits im Mac installierten Schriften zu; mit dem Paket luatexja oder einer Klasse wie ltjsarticle setzt es Japanisch ohne weitere Vorkehrungen. Für Chinesisch und Koreanisch nimmt XeLaTeX mit xeCJK oder ctex dieselbe Stelle ein. Zu meiden ist hier allein pdflatex: pdfTeX stammt aus der Zeit vor dem bequemen Zugriff auf Unicode-Schriften, und CJK hindurchzuzwingen führt zurück zum alten Paket CJK und vorkonvertierten Schriften – ein Weg, den heute niemand freiwillig einschlägt.

Der andere Weg ist upLaTeX mit dvipdfmx, die Kombination, die das japanische Verlagswesen seit Jahrzehnten benutzt und die eine geerbte Institutsvorlage meist voraussetzt. TeXShop hält dafür ein Kästchen bereit: Einstellungen → Engine → pTeX support (for Japan) stellt die eingebauten Befehle auf die pTeX-Familie um; in ~/Library/TeXShop/Engines/Inactive/Latexmk/ liegt außerdem dvipdfmxmk.engine, um diesen Weg über latexmk zu steuern. Eine selbst geschriebene Engine dafür ist eine einzige Zeile, und diese Zeile zeigt, wie die Teile zusammenhängen: ptex2pdf ist das mit TeX Live gelieferte Skript, das TeX und anschließend den Schritt von DVI zu PDF ausführt, -l wählt LaTeX statt plain, -u das Unicode-fähige upTeX, und -ot reicht Optionen an die Engine selbst weiter.

terminal
#!/bin/sh

# a hand-written engine: upLaTeX, then dvipdfmx, with SyncTeX enabled
ptex2pdf -u -l -ot "-synctex=1 -file-line-error" "$1"

Diese Entscheidung wiegt schwerer, als sie aussieht, denn sie lässt sich nicht billig rückgängig machen. Eine für upLaTeX geschriebene Klasse (jsarticle, ujarticle) übersetzt unter LuaLaTeX nicht, und umgekehrt ebenso wenig – dasselbe gilt für die Hälfte der Makros in einer Institutsvorlage. Einmal am Anfang entscheiden; und wer eine Vorlage geerbt hat, die ihre Engine benennt, folgt ihr, statt eine Woche vor der Abgabe zu migrieren. Die Zeile, die diese Entscheidung auch auf einem fremden Mac überstehen lässt, ist % !TEX TS-program am Kopf der Hauptdatei.

SyncTeX: mit ⌘-Klick zwischen Quelle und PDF springen

⌘-Klick – mehr Bedienung gibt es nicht. ⌘-Klick auf ein Wort in der Vorschau springt im Quellfenster zu der Zeile, die es erzeugt hat (Rückwärtssuche); ⌘-Klick auf eine Zeile in der Quelle rollt die Vorschau an die passende Stelle (Vorwärtssuche). TeXShop unterstützt SyncTeX seit Version 2.18, und sämtliche Standard-Engines übergeben -synctex=1, es funktioniert also unverändert – die Datei .synctex.gz, die bei jedem Satzlauf neben dem PDF erscheint, ist der Beleg. Wenn es einmal ausfällt, sind drei Dinge zu prüfen: ob seit der letzten Änderung überhaupt gesetzt wurde, ob eine selbstgebaute Engine -synctex=1 verloren hat, und ob Einstellungen → Typeset → Sync Method auf SyncTeX statt auf das alte pdfsync steht.

Beim Korrekturlesen ändert das die Arbeitsweise. Die Schleife aus PDF lesen, einen misslungenen Satz entdecken und ihn anschließend in dreihundert Zeilen Quelltext suchen entfällt vollständig: Man ⌘-klickt den Satz und tippt. In einem Projekt aus mehreren Dateien landet der Sprung allerdings nur dann richtig, wenn jede Teildatei ihre % !TEX root-Zeile trägt – ohne sie weiß TeXShop nicht, welche Hauptdatei die Seite erzeugt hat, und der Klick führt ins Leere. Es ist dieselbe Zeile, die ⌘T aus einem Kapitel heraus funktionieren lässt – genau deshalb lohnt sie sich in dem Augenblick, in dem ein Dokument aufgeteilt wird.

TeXShop oder TeXworks, TeXstudio, VS Code – was wählen

TeXShop gewinnt bei dem, was Anfänger tatsächlich brauchen: Es gibt nichts einzurichten. MacTeX installieren, eine Datei öffnen, ⌘T drücken – fertig. Auch darüber hinaus ist es ungewöhnlich angenehm: Command Completion auf der Esc-Taste, Makros, die AppleScript sein dürfen, editierbare Themes; und dank des Engine-Ordners weigert es sich nie, einen Befehl auszuführen, den es nicht kennt. Ebenso klar sind die Grenzen. Keine Projektleiste, keine eingebaute Versionsverwaltung, kein Übersetzen während des Tippens – und auf einer Maschine, die kein Mac ist, gar nichts.

  • Nur auf dem Mac, allein arbeitend, ohne Zeit für Einrichtung: TeXShop ist die richtige Voreinstellung – das Program-Menü und die % !TEX-Zeilen decken fast alles ab.
  • Dasselbe Gefühl unter Windows oder Linux nötig: TeXworks, nach TeXShop gebaut und praktisch unverändert übertragbar.
  • Strukturbrowser, Symbolpaletten und Literaturverwaltung in einem Fenster gewünscht: TeXstudio oder Texmaker.
  • Bereits in einem Editor mit Git, LSP und Terminal zu Hause: VS Code mit LaTeX Workshop, MacTeX bleibt darunter.
  • Mitautorinnen, die nichts installieren werden: Overleaf als gemeinsamer Ort, TeXShop als lokale Fassung für den letzten Durchgang.