fontenc und inputenc

Die Frage, wo eigentlich der Unterschied zwischen fontenc und inputenc liegt, wurde sehr ausführlich in einem stackexchange Posting beantwortet. Da ich selbst zwar schon seit Jahren TeXe, diesen Unterschied aber selbst nie ergründet habe, folgt hier die deutsche Übersetzung.

Beide Pakete adressieren vollkommen unterschiedliche Probleme.

  • inputenc erlaubt es dem Nutzer, Nicht-ASCII Zeichen direkt über die Tastatur einzugeben
  • fontenc kümmert sich um die Ausgabe, also darum welches Zeichen genutzt wird, um einen Buchstaben darzustellen

Beide Pakete sind nicht mit einander verbunden, es ist aber besser, fontenc vor inputenc in der Präambel zu laden. Mit \usepackage[T1]{fontenc} wählt man diejenige Codierung des Ausgabefonts so, die die meisten europäischen Sprachen (Deutsch, Französisch, Italienisch, Polnisch, etc.) enthält. Dies ist schon deshalb wichtig, weil TeX sonst Wörter mit akzentuierten Zeichen nicht korrekt trennen könnte.

Durch das Laden von \usepackage["encoding"]{inputenc} kann man direkt akzentuierte (Nicht-ASCII) Zeichen über die Tastatur eingeben. Wichtig ist hier, dass “encoding” mit der TeX-Datei selbst korrespondiert, dies hängt einerseits von der Maschine und andererseit vom genutzten Editor ab. Das gebräuchlichste Encoding heute ist utf8.

Nutzt man nur \usepackage[T1]{fontenc}, und erhält man scheinbar richtigen Output, so ist die Datei vermutlich mit Latin-1 (ISO 8859-1) kodiert. Ausreichend ist dies jedoch nicht. Tippt man ein ß so erhält man SS in der Ausgabe, was falsch ist. Der richtige Aufruf ist daher


\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}

Wie arbeiten die beiden Pakete? Schauen wir uns dies am Beispiel vom “ä” an. Zuerst muss man sich bewusst sein, dass TeX nichts über Datei-Encodings weiß, es sieht nur die Zeichenzahl. Wenn man in einem auf latin-1 eingestellten Editor ein “ä” eintippt, speichert der Rechner die Zahl 228.

TeX liest die Datei, findet das Zeichen Nummer 228, die Makros vom inputenc Paket transformieren dies in ein \”a.

Jetzt schlägt die Stunde von fontenc: Der Befehl \”a steht in einer Tabelle der akzentuierten Zeichen des Zeichensatzes, daraus macht fontenc “Setze Zeichen 228″ im aktuell gewählten Font. Beide Zahlen stimmen hier überein, daher wäre für das “ä” das fontenc ausreichend.

Für ß stimmt dies nicht: Gespeichert wird die Zeichennummer 223, inputenc wandelt dies zu \ss, fontenc transformiert dies zu “Setze Zeichen 255″, an dieser Stelle sitzt bei T1-codierten Fonts das ß

Comments are closed.