„Der Mann, der XeTeX schrieb, schrieb danach einen Editor fast ohne Funktionen." Genau dort beginnt TeXworks. Nachdem Jonathan Kew dem TeX Unicode und die Schriften des Betriebssystems erschlossen hatte, wandte er sich einem anderen Problem zu: der Zahl der Stellen, an denen sich ein LaTeX-Neuling verlieren kann. Sein TUG-Vortrag trug den Titel „TeXworks: lowering the barrier to entry". Deshalb besitzt TeXworks keine Projektverwaltung, kein Build-Skript und keinen Dateibaum am Rand. Ein Fenster, eine Schaltfläche und genau eine Entscheidung: die Engine. Diese Seite zeigt, welche Distributionen TeXworks tatsächlich mitliefern (die Antwort hängt von der Plattform ab, und sehr viele Darstellungen liegen daneben), wie sich der einzige Konfigurationsdialog – die Satzwerkzeuge – umschreiben lässt und wie eine einzige Zeile % !TeX root die Projektverwaltung ersetzt.
TeXworks stammt vom Autor von XeTeX
TeXworks stammt von Jonathan Kew, dem Autor von XeTeX. Sein Vorbild war TeXShop von Richard Koch, auf dem Mac lange die erste Wahl. Kew hielt die schmucklose Anordnung von TeXShop – Quelltext und PDF nebeneinander in einem einzigen Fenster – für gerade Einsteiger gut geeignet, und TeXworks bringt dieses Gefühl auch nach Windows und Linux. Die damaligen integrierten Umgebungen unter Windows hatten schlicht zu viele Schaltflächen für jemanden, der LaTeX zum ersten Mal begegnet. Kews Antwort war nicht, Funktionen hinzuzufügen, sondern die Zahl der Entscheidungen zu senken.
Diese Kargheit ist konkret. Nach dem Start zeigt TeXworks eine Bearbeitungsfläche, in der Werkzeugleiste ein Auswahlfeld für die Engine mit einer grünen Dreiecksschaltfläche daneben, sowie eine zweite Fläche mit dem PDF. Kein Dateibaum, keine Kapitelübersicht, keine Konfigurationsdatei für den Build. Die Oberfläche ist in Qt geschrieben und sieht unter Windows, macOS und Linux gleich aus; die Lizenz ist GPL v2, die voreingestellte Kodierung UTF-8. Auch die mitgelieferte Ausstattung ist knapp – Befehlsvervollständigung, Eingabehilfe, Rechtschreibprüfung. Reicht das nicht, lassen sich die optionalen Skript-Plugins für Lua und Python aktivieren und eigene Abläufe ergänzen (Optionen zur Übersetzungszeit; Lua ist voreingestellt an, Python aus). Bemerkenswert ist die Versionsnummer: Mehr als ein Jahrzehnt nach der ersten Veröffentlichung steht sie weiterhin bei 0.6, mit einer kleinen Aktualisierung meist im Februar. Funktionen auf dem Weg zu einer 1.0 anzuhäufen, war nie der Plan.
Welche Distributionen TeXworks mitliefern
Unter Windows ist der Editor mit hoher Wahrscheinlichkeit bereits vorhanden: Sowohl das MiKTeX-Installationsprogramm als auch der Windows-Installer von TeX Live legen TeXworks mit ab. Unter macOS und Linux gehört er dagegen nicht zum Lieferumfang. Dass TeX Live nur die Windows-Programmdatei mitbringt, ist keine Vermutung – es steht so in der Paketdatenbank texlive.tlpdb von TeX Live selbst. Die Beschreibung des Pakets texworks lautet „TeX Live includes executables and support files only for Windows", und die zugehörige Sammlung collection-texworks trägt den Titel „TL includes only the Windows binary".
# from texlive.tlpdb, the package database TeX Live installs from
name texworks
category TLCore
shortdesc friendly cross-platform front end
longdesc TeX Live includes executables and support files only for Windows.
postaction shortcut type=menu name="TeXworks editor" \
cmd=TEXDIR/bin/windows/texworks.exeHier beginnt die Verwirrung. TeX Live liefert zusätzlich eine kurze Notiz unter texmf-dist/doc/texworks/README, in der steht, TeX Live enthalte eine Windows-Binärdatei und MacTeX eine für macOS. Diese README stammt jedoch aus dem Jahr 2009, und maßgeblich für den Installer ist die Datenbank. Der grafische Editor, den MacTeX heute mitbringt, heißt TeXShop, nicht TeXworks. Unter Linux ist TeXworks vollständig von TeX Live entkoppelt und kommt als distributionseigenes Paket texworks. Kurz gesagt: Der Satz „TeXworks kommt mit TeX Live" stimmt unter Windows – und nur dort.
| Bezugsquelle | Plattform | Was enthalten ist |
|---|---|---|
MiKTeX | Windows | als Standardeditor enthalten |
TeX Live | Windows | texworks.exe, ein Startmenü-Eintrag und Dateizuordnungen für .tex |
MacTeX | macOS | mitgeliefert wird TeXShop; TeXworks muss separat installiert werden |
apt / dnf / pacman | Linux | über das von TeX Live getrennte Paket texworks |
Das Satz-Auswahlfeld und die Processing tools
Alles, was TeXworks über das Bauen weiß, steckt in einem einzigen Auswahlfeld links in der Werkzeugleiste. Dort wird die Engine gewählt (pdfLaTeX, XeLaTeX, LuaLaTeX, ConTeXt und weitere); ein Druck auf das grüne Dreieck daneben oder Ctrl/Cmd-T übersetzt das geöffnete Dokument und öffnet die PDF-Vorschau. Hilfsprogramme wie BibTeX und MakeIndex sind von Anfang an eingetragen, sodass ein gewöhnliches Dokument den Weg zum PDF findet, ohne dass die Einstellungen je geöffnet werden müssten.
Diese Liste lässt sich selbst umschreiben. Unter Edit → Preferences → Registerkarte Typesetting liegt in der unteren Hälfte die Liste Processing tools, mit + zum Hinzufügen, - zum Entfernen und Edit... zum Ändern. Ein Werkzeug besteht aus nur vier Teilen: dem im Auswahlfeld angezeigten Name, dem zu startenden Program, den Arguments und dem Kontrollkästchen View PDF after running. Der häufigste Unfall betrifft die Arguments, denn dort gehört je ein Argument in eine Zeile. Es handelt sich nicht um eine Shell-Kommandozeile; wer -interaction=nonstopmode %.tex in eine einzige Zeile schreibt, übergibt die ganze Zeichenkette als ein Argument, und die Engine sucht nach einer Datei mit einem sehr merkwürdigen Namen.
In den Arguments lassen sich Variablen von TeXworks verwenden. Bekannt ist $fullname für die zu verarbeitende Datei; insgesamt gibt es jedoch fünf, und gerade die Möglichkeit, nur die Endung oder nur das Verzeichnis herauszuziehen, macht Wege über DVI und den Aufruf von Hilfsprogrammen formulierbar. Die Variablen werden unmittelbar vor dem Start des Werkzeugs ersetzt.
| Variable | Wird ersetzt durch |
|---|---|
$fullname | die verarbeitete Datei samt Endung (etwa main.tex) |
$basename | der Dateiname ohne Endung (etwa main) |
$suffix | nur die Endung (etwa tex) |
$directory | der absolute Pfad des Dokumentverzeichnisses |
$synctexoption | -synctex=1, sofern das Werkzeug SyncTeX unterstützt, sonst leer |
latexmk als einzelnes Werkzeug eintragen
Was TeXworks fehlt, ist der Verstand, der über die Zahl der Durchläufe entscheidet. Querverweise, die auf ?? stehen bleiben, ein \tableofcontents, das stets eine Fassung hinterherhinkt – all das sind Fragen der Übersetzungshäufigkeit, und TeXworks zählt nicht mit. Üblich ist deshalb, diese Entscheidung vollständig an latexmk abzugeben und auf der TeXworks-Seite nur ein einziges Werkzeug zu behalten, das es aufruft. Program auf latexmk setzen, die Arguments zeilenweise wie unten eintragen und View PDF after running ankreuzen.
-e
$pdflatex=q/pdflatex $synctexoption %O %S/
-pdf
$fullnameFür japanischen Satz ist seit Langem der Weg mit upLaTeX setzen und das PDF mit dvipdfmx erzeugen üblich. Das mit TeX Live gelieferte TeXworks bringt japanische Werkzeuge bereits mit; wer selbst eines anlegt, kommt mit ptex2pdf am schnellsten ans Ziel, da es beide Stufen zusammenfasst. Program auf ptex2pdf setzen und die Arguments wie folgt eintragen (-l wählt das LaTeX-Format, -u wählt upLaTeX, -ot leitet zusätzliche Optionen an TeX weiter). Die Feinkonfiguration von latexmk selbst ist Gegenstand einer anderen Seite; hier zählt nur der Aufruf.
-l
-u
-ot
-kanji=utf8 -no-guess-input-enc $synctexoption
$fullnameDas am häufigsten benutzte Werkzeug wird oben in der Registerkarte Typesetting als voreingestellte Satz-Engine hinterlegt; neu geöffnete Dokumente verwenden es dann. Braucht eine bestimmte Datei eine andere Engine, überschreibt der magische Kommentar aus dem nächsten Abschnitt die Voreinstellung.
% !TeX root: die Zeile, die die Projektverwaltung ersetzt
Sobald ein Dokument in Kapiteldateien zerfällt, die eine übergeordnete Datei per \input oder \include einbindet, wird das Fehlen eines „Projekt"-Begriffs in TeXworks zum Problem. Wer bei geöffnetem chapter1.tex setzt, erlebt einen fehlgeschlagenen Lauf – naheliegend, denn diese Datei enthält weder \documentclass noch \begin{document}. Ein anderer Editor verlangte nun, ein Projekt anzulegen und ein Hauptdokument einzutragen; die Antwort von TeXworks lautete, eine einzige Zeile an den Dateianfang zu schreiben.
% !TeX root = main.tex
\chapter{Introduction}
The body of the chapter goes here.Für TeX ist das bloß ein Kommentar – alles nach % –, doch TeXworks liest die ersten Zeilen einer Datei und richtet sein Verhalten danach. Steht diese Zeile dort, übersetzt TeXworks beim Satz aus der Kapiteldatei heraus stattdessen die übergeordnete (Wurzel-)Datei. Der Pfad wird relativ zur Kapiteldatei angegeben. Das Elegante daran: Die Information steckt in der Datei statt in einer Einstellung. Projektdateien zerbrechen beim Wechsel der Maschine, eine Kommentarzeile dagegen wandert ins Repository und wirkt auch auf dem Rechner der Mitautorin. Die Schreibweise stammt von TeXShop, und auch andere Editoren als TeXworks lesen dieselbe Zeile.
Es gibt weitere magische Kommentare. % !TeX program = ... legt die Engine für dieses Dokument fest. Dabei ist zu beachten, dass hier nicht der Dateiname des Programms steht, sondern der Name des in den Preferences eingetragenen Werkzeugs – nicht pdflatex, sondern genau die Bezeichnung, wie sie in der Liste erscheint. Die ältere Schreibweise % !TeX TS-program = ... bedeutet dasselbe. % !TeX encoding = ... deklariert die Zeichenkodierung der Datei; da TeXworks ohnehin UTF-8 voreinstellt, wird sie beim Schreiben in UTF-8 selten gebraucht. Steht % !TeX program am Kopf eines japanischen Dokuments, läuft die richtige Engine auch dann, wenn das Auswahlfeld unverändert bleibt.
% !TeX program = upLaTeX (ptex2pdf)
% !TeX encoding = UTF-8
\documentclass{ujarticle}
\begin{document}
\input{chapter1}
\end{document}TeXworks und TeXstudio im Vergleich – und wann zu wechseln ist
Der Unterschied liegt nicht in der Zahl der Funktionen, sondern im Entwurfsziel. TeXworks ist darauf hin optimiert, die Stellen zu verringern, an denen man sich verlieren kann; TeXstudio, Texmaker und Kile sind umgekehrt darauf hin optimiert, alles Denkbare griffbereit zu halten. Der Satz „TeXworks hat weniger Funktionen" beschreibt also die Bauart und ist kein Urteil; die richtige Vergleichsachse lautet, was gerade Zeit kostet. Treffen zwei oder mehr der folgenden Punkte zu, lohnt der Gedanke an einen Wechsel.
- Die Zahl der Dateien ist gewachsen, und immer wieder stolpert man über Kapiteldateien ohne
% !TeX root-Zeile. - Es kommt eine Literaturdatenbank ins Spiel, und das Suchen der
\cite-Schlüssel in einem zweiten Fenster kostet spürbar Zeit. - Der Build ist kein einzelner pdfLaTeX-Lauf mehr, und die Liste der Processing tools füllt sich mit Einträgen.
- Dasselbe Manuskript muss nun mit mehr als einer Engine erzeugt werden, etwa mit pdfLaTeX und mit LuaLaTeX.
Protokoll und Hilfsdateien lesen
Gerade weil sonst nichts den Bildschirm füllt, eignet sich TeXworks gut, um sich das Lesen des Protokolls anzugewöhnen. Die Ausgabefläche nach einem Satzlauf verrät mehr als nur, ob ein PDF entstanden ist: unaufgelöste Verweise, fehlende Pakete und nicht geladene Bilder erscheinen dort wörtlich. Eine Zeile wie ! Missing $ inserted oder ! Undefined control sequence ist der erste Fehler, und die Zeilennummer direkt darunter ist der eigentliche Hinweis. TeXworks ist darauf angelegt, zum Lesen zu bewegen, statt stellvertretend anzuhalten; wer diese Fläche überspringt, verschenkt die Hälfte.
- Bleiben Verweise auf
??stehen, hilft ein weiterer Satzlauf mit demselben Werkzeug, damit.auxaktualisiert wird (einlatexmk-Werkzeug erledigt das von selbst). .auxund.tocnur nach einem größeren Umbau von Inhaltsverzeichnis oder Literaturverzeichnis löschen und dann neu erzeugen; im Normalfall ist Behalten schneller.- Erscheint ein Bild nicht, den Dateinamen aus dem Protokoll mit dem tatsächlichen Pfad vergleichen. Leerzeichen und Zeichen jenseits von ASCII in Dateinamen vermeiden.
- Wird die Liste der Processing tools voll, gehört das Build-Wissen in eine
.latexmkrc, und auf der TeXworks-Seite bleibt wieder ein einziges latexmk-Werkzeug.
SyncTeX einstellen: Vorwärts- und Rückwärtssuche
TeXworks bringt eine eingebaute PDF-Vorschau auf Basis von Qt und Poppler mit, sodass Bearbeiten und Prüfen im selben Fenster stattfinden, ohne einen externen Betrachter zu starten. Die Vorwärtssuche – von einer Stelle im Quelltext zur passenden Stelle im PDF – erfolgt mit Ctrl/Cmd-Klick im Quelltext, die Rückwärtssuche vom PDF zurück zur Quellzeile mit Ctrl/Cmd-Klick in der Vorschau. Eine Einrichtung entfällt, weil die mitgelieferten Werkzeuge $synctexoption bereits in ihren Arguments führen – genau das veranlasst die Engine, die für die Sprünge nötige Zuordnungstabelle .synctex.gz zu schreiben. Klappt die Synchronisierung bei einem selbst angelegten Werkzeug nicht, ist zuerst zu prüfen, ob diese Variable fehlt. Wie SyncTeX intern arbeitet, behandelt eine eigene Seite.