Schriftkodierung in LaTeX

Schriftkodierung in LaTeX

Ich verwende LaTeX schon seit einiger Zeit und habe viele Diskussionen über Schriftartkodierungen gelesen.

Einige schlagen vor, T1-Schriftarten hinzuzufügen \usepackage[T1]{fontenc}, andere schlagen vor, nichts hinzuzufügen, andere schlagen vor, sie T1zusätzlich zum Paket zu verwenden ae, während andere sagen, dies sei veraltet und stattdessen sollte eine andere Schriftart verwendet werden ...

Ich bin sehr verwirrt. Gibt es eine aktuelle Quelle, die das Problem gut erklärt und die Angelegenheit klärt?

Meiner Erfahrung nach funktioniert es gut, wenn ich nichts hinzufüge, aber manchmal brauche ich zusätzliche Zeichensätze wie fette Kapitälchen. In diesem Fall kann ich die T1-Kodierung verwenden, aber die Qualität ist schlecht. Alles scheint behoben zu sein, wenn ich die aeoder die lmodernPakete verwende. Was passiert wirklich und was sollte ich wirklich tun?

PS: Es tut mir leid, wenn dies bereits gefragt wurde. Ich habe viele Diskussionen darüber gefunden, poste dies jedoch in der Hoffnung, eine definitive Antwort zu erhalten.

PPS: Momentan verwende ich latex+ dvips+ ps2pdf. Ich verwende lieber, pdflatexwenn möglich, aber da ich mit anderen zusammenarbeite, ist das nicht immer möglich.

Antwort1

Grundsätzlich gilt: Probieren Sie aus, ob Sie mit \usepackage[T1]{fontenc}in Ihrem Dokument bessere Ergebnisse erzielen.

Die Erklärung: Beim Verfassen englischer Texte können Sie vermutlich auf diese Zeile verzichten und werden in den meisten Fällen auch keine Unterschiede/Schwierigkeiten feststellen.

Als Knuth TeX vorstellte, lieferte er es mit der Schriftart „Computer Modern“ aus. Diese Schriftart hat nur einen sehr begrenzten Zeichensatz (verglichen mit den heutigen OpenType-Schriftarten). Beispielsweise waren Zeichen wie „ö“ und „ü“ nicht vorhanden. Das schadet nicht, wenn Sie keine Sprachen setzen, die diese Zeichen verwenden. Aber sobald Sie sie darstellen müssen, können Sie helfen, indem Sie zwei Punkte „¨“ über „o“ oder „u“ kombinieren. Dafür gibt es ein TeX-Grundelement: \accent. Dies hat den Nebeneffekt, dass die Silbentrennung deaktiviert wird, was nicht akzeptabel ist.

Deshalb einigten sich TeX-Benutzer eines Tages darauf, wie Schriftarten so kodiert werden sollten, dass die meisten europäischen Sprachen wiedergegeben werden können (die T1-Kodierung). Diese Kodierung gibt an, welcher Code in die DVI- oder PDF-Datei eingefügt werden soll, wenn der Benutzer ein „ö“ oder „ü“ anfordert. Da diese Zeichen nun nicht mehr aus zwei Glyphen bestehen müssen, stören sie die Silbentrennung nicht mehr.

Warum sollte man sich mit T1 herumschlagen, wenn man diese komischen Zeichen nicht hat? Wenn man eine Schriftart für LaTeX vorbereitet, muss man Schriftartenmetrikdateien ( tfm) erstellen. Da T1 heutzutage die am häufigsten verwendete Kodierung ist (zumindest in Europa), machen sich manche Leute nicht mehr die Mühe mit anderen Kodierungen als T1, und daher ist eine Schriftart möglicherweise nicht in der alten und standardmäßigen Kodierung verfügbar OT1.

ABER: wenn Sie bei Computer Modern bleiben, möchten Sie vielleicht die alte Kodierung beibehalten (und nicht T1 verwenden), da die PostScript-Variante (die zu besseren Darstellungsergebnissen führt) nur mit der OT1-Kodierung verfügbar ist. Für T1-kodiertes Computer Modern (das Sie verwenden müssen, wenn Sie Silbentrennung in Wörtern mit diesen Sonderzeichen benötigen) könnten Sie das aePaket verwenden oder Ihre Schriftart auf cm-super ändern (durchnichtLaden aeund Ändern der Kodierung in T1 - aber das möchte ich nicht). Ich empfehle dringend, den Computer Modern-Ersatz namens „Latin Modern“ zu verwenden, der in mehreren Varianten erhältlich ist (PostScript Type 1, OpenType-Schriftarten). Aktivieren Sie ihn mit \usepackage{lmodern}.

Antwort2

Eine XeLaTeXAlternative

Der OP nennt es ausdrücklich LaTeXim Titel der Frage. Es gibt einen verwandten Compiler namens , XeLaTeXder dafür gedacht ist, ausländische Zeichen reibungsloser zu verarbeiten als LaTeX. Ich dachte, es wäre sinnvoll, ihn hier zu erwähnen. Ich verwende ihn schon seit einiger Zeit mit großem Erfolg zum Setzen von Französisch. Der folgende Codeabschnitt in der Präambel prüft, ob XeLaTeXaufgerufen wird, und lädt Programme entsprechend.

Im folgenden Code lade ich die Public Domain-Schriftart, die in die Präambel eingefügt werden soll Libertine. Dies dient nur zur Veranschaulichung: In diesem Fall setmainfontist das Einstellen der Schriftart mit den Befehlsoptionen ziemlich mühsam, daher libertinewurde ein spezielles Paket mit dem Namen erstellt, um das Einstellen der Schriftart zu vereinfachen.

\usepackage[oldstyle]{libertine}% public domain font % alternative to \setmainfont line commented out below
\usepackage{ifxetex}% load different packages with/without XeLaTex
\ifxetex
    \usepackage{fontspec}% provides \setmainfont
    %\setmainfont[Numbers=OldStyle,Ligatures=Common,Mapping=tex-text]{Linux Libertine O}% public domain font % or use the libertine package instead
\else  % packages below are not needed with utf8 based engines
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{lmodern} 
\fi%

Als ich vor einiger Zeit danach gesucht habe, fand ich, dass es eine gute Kombination ist (Experten mögen mich bitte korrigieren, wenn ich falsch liege). Ich bin kein XeLaTeXGuru oder so, ich fand nur, dass es mir bei meinen französischen Texten sehr geholfen hat und habe es erst vor kurzem übernommen.

verwandte Informationen