Wie kann ich UTF-8-Zeichen erhalten

Wie kann ich UTF-8-Zeichen erhalten

Ich möchte Querverweise für Abschnitte als Symbole erstellen, aber nachdem ich die angegebene Beschreibung verwendet habe, erhalte ich eine Fehlermeldung, dass das verwendete Tastaturzeichen in der Eingabekodierung „utf8“ nicht definiert ist. Was könnte der Ausweg sein?

Antwort1

Wenn Sie versuchen, mit dem Paket einen UTF-8-kodierten Test in LaTeX (mit einer zugrunde liegenden Standard-TeX-Engine) zu setzen, inputencgeschieht Folgendes:

  • LaTeX analysiert ein UTF-8-Zeichen, indem es die richtige Anzahl von 8-Bit-Zeichen einliest. Dies können eins oder mehrere sein, je nachdem, welches Zeichen sich im Dokument befindet.
  • Dadurch erhält LaTeX ein Unicode-Zeichen mit einer bestimmten Unicode-Nummer (nach einigen Berechnungen), sagen wir00A1
  • Jetzt versucht LaTeX, dieses Zeichen zu setzen. Dazu muss jedoch eine Schriftart (geladen) vorhanden sein, die tatsächlich die Glyphe enthält, die das Unicode-Zeichen darstellt, und ...
  • LaTeX muss diese Tatsache kennen.
  • LaTeX erfährt dies durch eine ziemlich große Anzahl von Deklarationen der Form: \DeclareUnicodeCharacter{00A1}{\textexclamdown}.
  • Dadurch wird die Unicode-Nummer in eine interne LaTeX-Zeichendarstellung (LICR) übersetzt.
  • Dies wäre jedoch nicht sehr hilfreich, wenn es keine Glyphe gibt, mit der dieses Zeichen gedruckt werden kann. Daher inputencrichtet das Paket nur die Unicode-Zeichen ein, für die Schriftarten geladen sind, die diese enthalten.
  • Wenn Sie beispielsweise T1codierte Schriftarten über laden \usepackage[T1]{fontenc}, lädt LaTeX intern alle in der Datei definierten Deklarationen t1enc.dfu. (Für jede etablierte LaTeX-Schriftcodierung gibt es eine entsprechende .dfuDatei.)
  • Unicode deckt jedoch eine große Anzahl von Zeichen ab. Wenn Sie also zufällig ein Zeichen in Ihr Dokument einfügen, das keiner von LaTeX verwendeten Schriftkodierung entspricht, erhalten Sie die Fehlermeldung, dass dieses Unicode-Zeichen nicht eingerichtet ist.

Was kann also getan werden, um dieses Problem für ein bestimmtes Dokument zu beheben?

  • Der erste Schritt besteht darin, die Unicode-Nummer für das Zeichen zu ermitteln, die LaTeX nicht kennt (diese sollte in der Fehlermeldung erscheinen).
  • Der zweite, etwas kompliziertere Schritt besteht darin, herauszufinden, ob es eine TeX-Schriftart gibt, die dieses Zeichen tatsächlich enthält, und welche Kodierung diese Schriftart hat. Hier gibt es keinen guten Rat, aber es gibt einige Dokumente, die die Standard-LaTeX-Schriftkodierungen beschreiben.
  • Alternativ kann man versuchen , dem Dokument zumindest die Kodierungen und hinzuzufügen, T1da dies das Problem möglicherweise löst (wenn es sich um ein relativ häufiges „westliches“ Zeichen handelt).TS1
  • es ist auch möglich, dass Sie das Zeichen „vortäuschen“ können. Wenn Sie beispielsweise eine Art Bindestrich haben (von denen es in Unicode mehrere verschiedene gibt) und Ihr Editor einen hinzufügt, der LaTeX nicht bekannt ist, können Sie eine \DeclareUnicodeCharacterDeklaration mit dem zweiten Argument hinzufügen, die ein vorhandenes Ersatzzeichen enthält.

Ansonsten besteht die einzige Lösung, fürchte ich, darin, ein anderes Zeichen zu verwenden oder eine TeX-basierte Engine einzusetzen, die vollständig Unicode-fähig ist und nativ auf Unicode-Schriftarten mit großen Zeichensätzen zugreifen kann.

Eine ausführlichere Dokumentation hierzu finden Sie im dokumentierten Quellcode: utf8ienc.pdfDieser liegt entweder in der LaTeX-Distribution vor oder kann aus der .dtxDatei generiert werden.

Antwort2

Ich hatte das gleiche Problem, als ein Freund ein Buch über lateinische Poesie setzen wollte und dabei Vokale mit Längenmarkierungen wie ō und ŏ direkt verwenden wollte (langaUndkurz).

Der Trick, den ich gefunden habe, ist in einem Paket verpackt,newunicodechar.

Sprichwort

\usepackage{newunicodechar}
\newunicodechar{ō}{\={o}}
\newunicodechar{ŏ}{\u{o}}

ist genau das gleiche wie

\DeclareUnicodeCharacter{014D}{\={o}}
\DeclareUnicodeCharacter{014F}{\u{o}}

erspart Ihnen aber die Mühe, die Unicode-Tabelle durchsuchen zu müssen.

Natürlich muss sichergestellt werden, dass der Inhalt des Ersetzungstextes tatsächlich von den geladenen Schriftarten wiedergegeben werden kann, was beispielsweise bei einer „Absatzmarke“ der Fall sein kann.

Siehe auchMakro, um ein Zeichen als Argument zu verwenden, es zu aktivieren und es dann mit \def zu versehen.

Die Verwendung dieses Pakets hat noch einen weiteren Vorteil. Angenommen, Sie möchten für die Verarbeitung des Dokuments auf XeLaTeX oder LuaLaTeX umsteigen. Dann kann ein Zeichen wie

verwandte Informationen