Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 18

Thema: Unicode in pdfLaTeX

  1. #1
    Registrierter Benutzer
    Registriert seit
    15.12.2010
    Beiträge
    10

    Unicode in pdfLaTeX

    Das Thema kommt ja immer wieder hoch und ich bin trotz ausgiebiger Suche nicht wirklich schlauer geworden.

    Ich habe eine UTF-8 codierte .tex Datei mit einigen vietnamesischen und griechischen Buchstaben drin. Mein Verständnis nach aller Lektüre war, dass ich mit den Packages ucs und inputenx diese Datei setzen können müsste. Das klappt aber nicht.

    Minimalbeispiel mit Vietnamesisch:
    Code:
    \documentclass{article}
    \usepackage[english]{babel}
    \usepackage{ucs}
    \usepackage[utf8x]{inputenx}
    
    \begin{document}
    This is my Vietnamese text
    
    Việt
    
    Kiều
    
    Trần
    \end{document}
    im Log steht folgender Fehler:

    Code:
    ! Undefined control sequence.
     \relax \ecircumflex
    \crcr \hidewidth \ltx@sh@ft {-1ex}.\hidewidth
    l.9 Việ
    t
    The control sequence at the end of the top line
    of your error message was never \def'ed. If you have
    misspelled it (e.g., `\hobx'), type `I' and the correct
    spelling (e.g., `I\hbox'). Otherwise just continue,
    and I'll forget about whatever was undefined.
    Hat jemand einen Vorschlag, wie man das lösen könnte (ohne XeLaTeX)? Bin auf TeX Live 2009/Debian.
    Geändert von kongo09 (17-12-2010 um 14:00 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    03.04.2007
    Ort
    Wrestedt
    Beiträge
    987

    Schrift

    Zitat Zitat von kongo09 Beitrag anzeigen
    Das Thema kommt ja immer wieder hoch und ich bin trotz ausgiebiger Suche nicht wirklich schlauer geworden.

    Ich habe eine UTF-8 codierte .tex Datei mit einigen vietnamesischen und griechischen Buchstaben drin. Mein Verständnis nach aller Lektüre war, dass ich mit den Packages ucs und inputenx diese Datei setzen können müsste. Das klappt aber nicht.

    Minimalbeispiel mit Vietnamesisch:
    Code:
    \documentclass{article}
    \usepackage[english]{babel}
    \usepackage{ucs}
    \usepackage[utf8x]{inputenx}
    
    \begin{document}
    This is my Vietnamese text
    
    Việt
    
    Kiều
    
    Trần
    \end{document}
    im Log steht folgender Fehler:

    Code:
    ! Undefined control sequence.
     \relax \ecircumflex
    \crcr \hidewidth \ltx@sh@ft {-1ex}.\hidewidth
    l.9 Việ
    t
    The control sequence at the end of the top line
    of your error message was never \def'ed. If you have
    misspelled it (e.g., `\hobx'), type `I' and the correct
    spelling (e.g., `I\hbox'). Otherwise just continue,
    and I'll forget about whatever was undefined.
    Hat jemand einen Vorschlag, wie man das lösen könnte (ohne XeLaTeX)? Bin auf TeX Live 2009/Debian.
    Hallo kongo09,

    ja, du hast
    Code:
    \usepackage[utf8x]{inputenx}
    geschrieben, richtig wäre
    Code:
    \usepackage[utf8x]{inputenc}
    dann hast du
    Code:
    \usepackage[english]{babel}
    benutzt, besser wäre
    Code:
    \usepackage[english, vietnam]{babel}
    Viel Erfolg

    Lieben Gruß

    Martin
    Der aus Büchern erworbene Reichtum fremder Erfahrung heißt Gelehrsamkeit. Eigene Erfahrung ist Weisheit. Das kleinste Kapital von dieser ist mehrt wert, als Millionen von jener.

    Gotthold Ephraim Lessing

  3. #3
    Registrierter Benutzer
    Registriert seit
    15.12.2010
    Beiträge
    10
    Vielen Dank für die fixe Antwort. Damit klappts - aber dann doch wieder nicht.

    Ich hatte gedacht, das inputenx Package sei eine etwas weiter entwickelte Version von inputenc, daher hatte ich das genommen. Aber kein Problem, nehme gerne inputenc. Soweit so gut.

    Bei babel dachte geht es nur um die Silbentrennung und für drei Vietnamesische Wörter in einem ansonsten englischen Text brauche ich ja keine vietnamesische Silbentrennung. Aber auch egal, hauptsache es klappt.

    Wenn ich jetzt aber mein Minimalbeispiel erweitere auf das ursprüngliche Problem (das ich in meinem ersten Beispiel leider nur verkürzt widergegeben habe), nämlich einer Mischung aus ganz unterschiedlichen Zeichensätzen, dann klappts leider wieder nicht.

    Im konkreten Fall war auch Griechisch dabei. Grundsätzlich würde ich aber gerne jedweden Zeichensatz unterstützen, der halbwegs in einem englischen Text Sinn machen kann. Es könnten also genauso gut auch Thai Zeichen vorkommen, oder isländische Buchstaben, etc...

    Hier nochmal das einerseits korrigierte, aber dann auch erweiterete Beispiel, dass ich nicht ans laufen bekomme:
    Code:
    \documentclass{article}
    \usepackage[english, vietnam]{babel}
    \usepackage{ucs}
    \usepackage[utf8x]{inputenc}
    
    \begin{document}
    This is my Vietnamese text
    
    Việt
    
    Kiều
    
    Trần
    
    Ähnlich ist Griechisch:
    Α α
    
    Β β
    
    Γ γ
    \end{document}
    Einfach nur Greek bei babel mit aufnehmen, scheint nicht zu funktionieren.

    Könnte ihr mir nochmal helfen? Danke!

  4. #4
    Registrierter Benutzer Avatar von bobmalaria
    Registriert seit
    28.11.2006
    Ort
    Düsseldorf
    Beiträge
    4.174
    hi,

    hilft es dir mit \foreignlanguage an den richtigen stellen in eine andere als die hauptsprache zu wechseln?

    Code:
    \foreignlanguage{greek}{something greek}
    Mein Ball ist umgefallen

  5. #5
    Registrierter Benutzer
    Registriert seit
    15.12.2010
    Beiträge
    10
    Leider nicht wirklich, da ich automatisch Text auf unbekannten Quellen verarbeite und daher nicht weiss, wo "foreigntext" vorkommt. Ich müsste sonst quasi eine UTF-8 Textanalyse entwickeln, die mein TeX File so modifiziert, dass überall wo notwendig die richtige "foreigntext" Umgebung kommt.

    Ich dachte mir, wenn man Englischen, Deutschen und Vietnamesischen Text einfach so mischen kann, dann kann doch Griechisch kein Problem sein. Folgendes Beispiel läuft ja auch durch:
    Code:
    \documentclass{article}
    \usepackage[english, vietnam]{babel}
    \usepackage{ucs}
    \usepackage[utf8x]{inputenc}
    
    \begin{document}
    This is my Vietnamese text
    
    Việt
    
    Kiều
    
    Trần
    
    Ähnlich ist dämlich
    \end{document}

  6. #6
    Registrierter Benutzer
    Registriert seit
    15.12.2010
    Beiträge
    10
    Mit viel probieren habe ich nun einen scheinbar praktikablen Ansatz gefunden. Dazu nutze ich zusätzlich noch die Pakete fontenc und autofe.

    Ich bin mir ehrlichgesagt nicht sicher, wie das alles genau zusammenspielt, warum ich einige Sprachen bei Babel angeben muss (z.B. Vietnamesisch und Griechisch), andere aber nicht (z.B. Isländisch) und wieder andere auf diese Weise gar nicht zu funktionieren scheinen (z.B. Thai).

    Wenn ich Babel richtig verstehe, gibt die letze Sprache die Hauptsprache des Dokumentes an. Das wäre bei mir Englisch. Dann funktioniert leider aber Vietnamesisch nicht mehr:

    Hier mein fast funktionierendes Beispiel:
    Code:
    \documentclass{book}
    \usepackage[vietnam,greek,english]{babel}
    \usepackage[utf8x]{inputenc}
    \usepackage{autofe}
    \usepackage[T1,T2A]{fontenc}
    
    \begin{document}
    \chapter{}
    some English
    
    Việt Kiều Trần
    
    née en France ç
    
    ä ö ü ß å Ñ
    
    ą ę Ł
    
    Α α
    
    Æ æ Þ þ Ý ý
    
    Здравко Монов
    \end{document}
    Wenn ich nun die Babel Zeile umbaue zu:
    Code:
    \usepackage[greek,english,vietnam]{babel}
    dann werden alle Zeichen korrekt dargestellt, aber die Kapitelüberschrift wäre ebenfalls in Vietnamesisch, was nicht gewünscht ist.

    Kann man nicht einfach Unicode in LaTeX drucken? Das kann doch nicht so wahnsinnig schwierig sein!

  7. #7
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    inputenc/x kennt nicht alle möglichen Unicodezeichen. Von den Zeichen, die es kennt, lädt es nicht von vornherein für alle Definitionen. inputenc geht so vor: Es lädt immer einen "Basissatz" an Definitionen. Für weitere Definitionen orientiert es sich an den Optionen von fontenc: Wenn du dort T5 (eine Schriftkodierung für vietnamesich) angibst, geht inputenc davon aus, dass du die zugehörigen Eingabezeichen benötigst, und wird versuchen t5enc.dfu zu finden und zu laden.

    Du musst die Schriftkodierungen in fontenc nicht unbedingt selbst laden: Manche babel-Schriftdateien laden intern Schriftkodierungen, dann greift das Verfahren natürlich auch.

    Es gibt aber viele Löcher (weil niemand die entsprechenden Dateien/Schriftkodierungen geschrieben hat). lgrenc.dfu (das wird für griechisch benutzt) z.B. gibt es meines Wissens nicht auf CTAN sondern nur irgendwo auf der latex-project Seite.

    Grundsätzlich gilt: Wenn du eine breite Unicodeunterstützung benötigst, benutze eine der Unicodeengines xelatex oder lualatex.

    Wenn ich Babel richtig verstehe, gibt die letze Sprache die Hauptsprache des Dokumentes an. Das wäre bei mir Englisch. Dann funktioniert leider aber Vietnamesisch nicht mehr:
    Dann musst du halt die Sprache wechseln: \selectlanguage{vietnam} ...

  8. #8
    Registrierter Benutzer
    Registriert seit
    03.04.2007
    Ort
    Wrestedt
    Beiträge
    987

    Schriften

    Zitat Zitat von kongo09 Beitrag anzeigen
    Mit viel probieren habe ich nun einen scheinbar praktikablen Ansatz gefunden. Dazu nutze ich zusätzlich noch die Pakete fontenc und autofe.

    Ich bin mir ehrlichgesagt nicht sicher, wie das alles genau zusammenspielt, warum ich einige Sprachen bei Babel angeben muss (z.B. Vietnamesisch und Griechisch), andere aber nicht (z.B. Isländisch) und wieder andere auf diese Weise gar nicht zu funktionieren scheinen (z.B. Thai).

    Wenn ich Babel richtig verstehe, gibt die letze Sprache die Hauptsprache des Dokumentes an. Das wäre bei mir Englisch. Dann funktioniert leider aber Vietnamesisch nicht mehr:

    Hier mein fast funktionierendes Beispiel:
    Code:
    \documentclass{book}
    \usepackage[vietnam,greek,english]{babel}
    \usepackage[utf8x]{inputenc}
    \usepackage{autofe}
    \usepackage[T1,T2A]{fontenc}
    
    \begin{document}
    \chapter{}
    some English
    
    Việt Kiều Trần
    
    née en France ç
    
    ä ö ü ß å Ñ
    
    ą ę Ł
    
    Α α
    
    Æ æ Þ þ Ý ý
    
    Здравко Монов
    \end{document}
    Wenn ich nun die Babel Zeile umbaue zu:
    Code:
    \usepackage[greek,english,vietnam]{babel}
    dann werden alle Zeichen korrekt dargestellt, aber die Kapitelüberschrift wäre ebenfalls in Vietnamesisch, was nicht gewünscht ist.

    Kann man nicht einfach Unicode in LaTeX drucken? Das kann doch nicht so wahnsinnig schwierig sein!
    Hallo kongo09,

    versuche mal diesen Code, bei mir läuft es [...]

    Code:
    \documentclass{scrbook} % KOMAklassen scheinen das Problem NICHT zu verursachen
    \usepackage[greek,english,vietnam]{babel}
    \usepackage[utf8x]{inputenx} % klappt auch mit inputenx
    \usepackage{autofe}
    \usepackage[T1,T2A]{fontenc}
    
    \begin{document}
    \chapter{Alles ist gut so, wie es ist!}
    some English
    
    Việt Kiều Trần
    
    née en France ç
    
    ä ö ü ß å Ñ
    
    ą ę Ł
    
    Α α
    
    Æ æ Þ þ Ý ý
    
    Здравко Монов
    \end{document}
    Lieben Gruß

    Martin
    Der aus Büchern erworbene Reichtum fremder Erfahrung heißt Gelehrsamkeit. Eigene Erfahrung ist Weisheit. Das kleinste Kapital von dieser ist mehrt wert, als Millionen von jener.

    Gotthold Ephraim Lessing

  9. #9
    Registrierter Benutzer
    Registriert seit
    15.12.2010
    Beiträge
    10
    Hallo Martin,

    leider funktioniert das nicht wirklich. Wenn man ein Englisches Inhaltsverzeichnis möchte, muss man "english" bei babel ganz nach hinten stellen. Damit geht aber dann Vietnam wieder verloren und TeX bricht ab.

    kongo09

  10. #10
    Registrierter Benutzer
    Registriert seit
    15.12.2010
    Beiträge
    10
    Hallo Ulrike,

    der Hinweis mit T5 war gut, aber leider ist das Ergebnis immer noch komisch. Ich habe Martins Beispiel wie folgt ergänzt:
    Code:
    \documentclass{scrbook} % KOMAklassen scheinen das Problem NICHT zu verursachen
    \usepackage[greek,vietnam,english]{babel}
    \usepackage[utf8x]{inputenx} % klappt auch mit inputenx
    \usepackage{autofe}
    \usepackage[T5,T1,T2A]{fontenc}
    
    \begin{document}
    \tableofcontents{}
    \chapter{Alles ist gut so, wie es ist!}
    some English
    
    Việt Kiều Trần
    
    née en France ç
    
    ä ö ü ß å Ñ
    
    ą ę Ł
    
    Α α
    
    Æ æ Þ þ Ý ý
    
    Здравко Монов
    \end{document}
    Also T5 bei fontenc aufgenommen. Damit läuft pdfLaTeX nun ohne Fehler durch - aber Vietnamesisch wird trotzdem nicht korrekt angezeigt.

    Du sprichst von Definitionen, die nicht geladen werden. Kann ich TeX nicht dazu zwingen, diese zu laden? Oder kann ich die Definitionen selber laden (und wenn ja, wie?). Dann könnte ich doch einfach alle vorhandenen Definitionen laden und alles wird gut, oder?

  11. #11
    Registrierter Benutzer
    Registriert seit
    03.04.2007
    Ort
    Wrestedt
    Beiträge
    987

    vietnam

    Hallo kongo09,

    du wirst wahrscheinlich nicht umhin kommen, Ulrikes Anregung, die Sprache im Dokument zu wechseln, zu folgen.

    Lies mal die PDF.
    http://www.google.de/#hl=de&source=h...5072200cf3e114
    und dann diesen Eintrag: Typesetting Vietnamese with VnTEX (and with the TEX Gyre fonts too)

    Viel Erfolg

    Gruß

    Martin
    Geändert von nixversteh (20-12-2010 um 12:55 Uhr)
    Der aus Büchern erworbene Reichtum fremder Erfahrung heißt Gelehrsamkeit. Eigene Erfahrung ist Weisheit. Das kleinste Kapital von dieser ist mehrt wert, als Millionen von jener.

    Gotthold Ephraim Lessing

  12. #12
    Registrierter Benutzer
    Registriert seit
    15.12.2010
    Beiträge
    10
    Zitat Zitat von nixversteh Beitrag anzeigen
    du wirst wahrscheinlich nicht umhin kommen, Ulrikes Anregung die Sprache im Dokument zu wechseln.
    Hm, das geht leider nicht, da ich wie gesagt Texte unbekannten Ursprungs automatisch verarbeite. Da kann halt mal ein fremder (Unicode) Buchstabe drin stecken, das weiss ich aber nicht und sehe es auch nicht.

    Ulrike hatte aber auch noch XeLaTeX vorgeschlagen. Wenn das dort alles problemlos klappt, dann muss ich mir das wohl mal anschauen. Habe es noch nie benutzt. Kennt ihr da ein gutes Tutorial - oder klappen alle LaTeX Pakete auch da und man muss nur einen neuen Compiler aufrufen?

  13. #13
    Registrierter Benutzer
    Registriert seit
    03.04.2007
    Ort
    Wrestedt
    Beiträge
    987
    Hallo kongo09,

    Möglichkeit 3: Verwendung von XeTeX.
    XeTeX ist eigentlich der Traum jedes LaTeX-ianers: Echtes Unicode und – endlich – uneingeschränkte Verwendung von allen „normalen“ Computerschriftarten, die man so auf seinem Rechner hat, und zwar, auch unter Windows, mit all den großartigen typographischen Spielereien, die die modernen, sog. OpenType-Schriftarten bieten, die mit Word und Konsorten nicht genutzt werden können. Nachteile gibt es aber trotzdem – leider: Für XeTeX gibt es keine ausreichende Dokumentation, das Programm ist offiziell immer noch im Teststadium. Insbesondere verträgt sich XeTeX nicht mit vielen Erweiterungen (Paketen) von LaTeX; schon die Frage, wie man denn jetzt z.B. für russischen Text die unverzichtbare automatische Silbentrennung einrichten soll, garantiert frustrierte Suchstunden im Internet.

    Quelle: http://www.peter-meyer.org/edv/latex/latex.html

    Gruß

    Martin
    Der aus Büchern erworbene Reichtum fremder Erfahrung heißt Gelehrsamkeit. Eigene Erfahrung ist Weisheit. Das kleinste Kapital von dieser ist mehrt wert, als Millionen von jener.

    Gotthold Ephraim Lessing

  14. #14
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Hier gibt es ein Xelatex-Tutorial:

    http://www.dante.de/DTK/Ausgaben/2008-3.pdf

    Es ist nicht ganz aktuell. Die wichtigste Änderung: xltxtra + xunicode sollte/braucht man nicht mehr zu laden. Es reicht \usepackage{fontspec}.

  15. #15
    Registrierter Benutzer
    Registriert seit
    15.12.2010
    Beiträge
    10
    ganz, ganz herzlichen Dank. Habe gerade einfach mal folgendes Dokument durch XeLaTeX laufen lassen und es geht ganz hervorragend. Die ganze Frage scheint sich dahin zu verlagern, einen (oder mehrere) Fonts mit den passenden Skripten zu finden:

    Code:
    \documentclass{scrreprt}
    \usepackage{polyglossia}
    \usepackage{fontspec}
    \setdefaultlanguage{english}
    
    \setromanfont{Times New Roman}
    
    \begin{document}
    \tableofcontents{}
    \chapter{Alles ist gut so, wie es ist!}
    some English
    
    Việt Kiều Trần
    
    née en France ç
    
    ä ö ü ß å Ñ
    
    ą ę Ł
    
    Α α
    
    Æ æ Þ þ Ý ý
    
    Здравко Монов
    
    التاريخ فنّ أنّ اعلم
    \end{document}

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •