Bei vollständigen Beispielen in deutscher Sprache wird im Internet und in Anleitungen häufig

\usepackage[utf8]{inputenc}

verwendet. Wozu dient das? Braucht man das? Stört es in einigen Fällen vielleicht sogar?

gefragt 29 Apr, 09:30

Ijon%20Tichy's gravatar image

Ijon Tichy
9.4k31127
Akzeptiert-Rate: 54%

bearbeitet 29 Apr, 10:17


TeX stammt noch aus den 70er-Jahren des vorherigen Jahrhunderts. Damals hat ein Zeichen in der Eingabe genau ein Byte. Damit war es aber nicht möglich, alle Zeichen aus allen Sprachen zu codieren. Auf unterschiedlichen Computersystemen für unterschiedliche Sprachen wurden daher Code-Pages erfunden. Je nach System und Spracheinstellung war dabei demselben Byte ein jeweils passendes Zeichen zugeordnet. Schwierig, wenn man Dateien zwischen unterschiedlichen Systemen oder Sprachen austauschen wollte. Donald Knuth hat sich daher für die Eingabe von Sonderzeichen etwas besonderes ausgedacht: Befehle. Für die kleinen deutschen Umlaute lauten diese beispielsweise \"a, \"o, \"ü.

Nun will aber niemand auf Dauer immer »Herr M\"uller m\"ochte die \"ublichen Zeichen f\"ur Umlaute.« schreiben (obwohl das damals sogar in E-Mails recht beliebt war, bei denen nämlich dasselbe Problem existierte). Daher haben die LaTeX-Entwickler das Paket inputenc geschrieben, mit dem man den Eingabezeichen eine Bedeutung zuordnen konnte, indem man die Code-Page angab. Vorteil war, dass man bei Angabe der korrekten Option für inputenc (siehe: Wie überprüfe ich die Standardeingabekodierung in meinem Editor?) einfach »Herr Müller möchte die üblichen Zeichen für Umlaute.« schreiben kann. Nachteil war, dass beim Wechsel auf ein System oder Editor mit einer anderen Codierung zwar das Ergebnis des LaTeX-Laufs korrekt blieb, die Anzeige im Editor aber nicht mehr stimmte. Immerhin hatte man durch die Option von inputenc einen Hinweis, wie man die Datei umcodieren musste, um sie erneut korrekt angezeigt zu bekommen und weiterverarbeiten zu können.

In den 1990ern wurde daher Unicode und die zugehörigen Codierungen UTF-8 und UTF-16 immer beliebter. Die Theorie hinter Unicode ist, allen Zeichen aller Sprachen und einigen weiteren Zeichen wie Emoticons oder mathematischen Zeichen, eine feste Nummer zuzuordnen, ohne sich dabei auf die 256 mögliche Nummern eines einzelnen Bytes zu beschränken. UTF-8 war dann eine Codierung, bei der die bisherigen Zeichen von US-ASCII (diese Codierung enthält je 26 lateinische Groß- und Kleinbuchstaben, 10 arabische Ziffern und diverse Satzzeichen) mit den Nummern 32–127 mit einem einzigen Byte codiert werden konnten. Darüber hinaus werden mehrere Bytes für ein Zeichen benötigt. Die Idee dabei ist, dass so mit einem UTF-8-fähigen Editor ein Text immer korrekt angezeigt und weiterverarbeitet werden kann. Die LaTeX-Entwickler haben den Nutzen früh erkannt und inputenc entsprechend um Option utf8 erweitert. Auch die Entwickler der LaTeX-Editoren haben nachgezogen. Heute verwendet praktisch jeder LaTeX-Editor UTF-8 als Voreinstellung.

Dennoch blieb aus Kompatibilitätsgründen die Voreinstellung von LaTeX zunächst bei US-ASCII. Gleichzeitig gab es aber mit XeTeX bzw. XeLaTeX und LuaTeX bzw. LuaLaTeX auch bereits erste TeX-Engines und darauf basierende LaTeX-Implementierungen mit der Voreinstellung UTF-8. LuaLaTeX war damals gar nicht in der Lage mit Dokumenten, die inputenc verwendeten, umzugehen. Generell wurde empfohlen, Dateien für LuaLaTeX oder XeLaTeX in UTF-8 zu codieren und kein inputenc zu laden.

Zum Zwecke der Vereinheitlichung wurde die Voreinstellung für LaTeX auch bei Verwendung von PDFTeX, also für PDFLaTeX, mit LaTeX 2018-04-01 von US-ASCII in UTF-8 geändert. Seither ist die Zeile

\usepackage[utf8]{inputenc}

auch für die Verwendung von PDFLaTeX nicht mehr notwendig. Insbesondere, wenn Dokumente sowohl mit PDFLaTeX als auch LuaLaTeX oder XeLaTeX verarbeitet werden können sollen, wie das bei kleinen Beispielen häufiger der Fall ist, ist es sinnvoll, auf die Zeile auch wirklich zu verzichten. Wenn man sicher ist, dass PDFLaTeX verwendet wird, stört sie aber auch nicht. Wenn man nicht weiß, ob das Dokument möglicherweise auf einer stark veralteten TeX-Installation weiterverarbeitet werden soll, das Dokument aber für PDFLaTeX gedacht ist, kann die Zeile sogar noch nützlich sein.

Die UTF-8-Unterstützung für PDFLaTeX in LaTeX 2018-04-01 war übrigens noch sehr unvollständig. So wurde UTF-8 in jener Version beispielsweise noch nicht im \label-Argument unterstützt. Daher wird von der Verwendung von Umlauten in \label meist noch immer abgeraten. Tatsächlich funktioniert dies mit einem aktuellen LaTeX aber bereits problemlos. Die Austauschbarkeit von Dokumentteilen zwischen den einzelnen Engines wird daher immer besser.

Fazit: Bei Verwendung eines aktuellen LaTeX ist \usepackage[utf8]{inputenc} nicht notwendig und teilweise sogar störend. Sie stellt jedoch auf absehbare Zeit bei Verwendung von PDFLaTeX auch keinen Fehler dar.

Permanenter link

beantwortet 29 Apr, 10:04

Ijon%20Tichy's gravatar image

Ijon Tichy
9.4k31127
Akzeptiert-Rate: 54%

bearbeitet 29 Apr, 10:10

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×125
×38
×21
×17
×5

gestellte Frage: 29 Apr, 09:30

Frage wurde gesehen: 414 Mal

zuletzt geändert: 29 Apr, 10:10