Umlaute abgleichen ->code fehler (ä...)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
iceman21
User
Beiträge: 41
Registriert: Sonntag 25. März 2007, 20:45
Kontaktdaten:

Umlaute abgleichen ->code fehler (ä...)

Beitragvon iceman21 » Sonntag 29. Juli 2007, 12:53

hi@ all

ich wollte ein programm schreiben, mit dem aus einem dokument alle umlaute (äöüß) in die latex schreibweise umgewandelt werden. ('\"{a}' ... )
leider musste ich feststellen, dass es schonprobleme gibt mit:

Code: Alles auswählen

if buchstabe=="ä":
     buchstabe='\"{a}'


hat jemand von euch einen tipp wie man das anders lösen kann... ich bekomme aus der textdatei ja die umlaute ... wie soll ich die denn abgleichen wenn python umlaute im code nicht erlaubt?

MfG
BlackJack

Beitragvon BlackJack » Sonntag 29. Juli 2007, 13:28

Python erlaubt Umlaute im Quelltext, Du hast nur keinen Umlaut sondern ein oder mehrere Bytes, die in der Kodierung die Dein Editor benutzt zufällig ein 'ä' darstellen.

Auf jeden Fall musst Du die Kodierung im Quelltext als speziellen "coding"-Kommentar angeben, damit der Compiler nicht meckert.

Und dann musst Du entweder dafür sorgen, dass Du im Quelltext die gleiche Kodierung benutzt wie in den LaTeX-Quelltexten, dann kannst Du Bytes vergleichen die Umlaute darstellen, oder Du musst konsequent mit Unicode arbeiten. Siehe dazu:

[wiki]Unicode[/wiki]

Letzteres ist die sauberere Methode und erlaubt es auch den Quelltext so zu schreiben, dass die Kodierung von LaTeX-Quelltexten und dem Programm-Quelltext nicht zwingend übereinstimmen müssen, ja sogar, dass man die Kodierung der LaTeX-Quelltexte als Argument übergeben kann.

Edit: Und Unicode hat den Vorteil, dass man eine Ersetzungstabelle für die `translate()`-Methode anlegen kann:

Code: Alles auswählen

def main():
    translation = dict((ord(old), new)
                       for old, new in ((u'ä', u'\\"{a}'),
                                        (u'ö', u'\\"{o}')))
    print u'Hällö'.translate(translation)


Ausgabe:

Code: Alles auswählen

H\"{a}ll\"{o}
Zuletzt geändert von BlackJack am Sonntag 29. Juli 2007, 13:36, insgesamt 1-mal geändert.
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Beitragvon HWK » Sonntag 29. Juli 2007, 13:32

Schau Dir auch mal dies hier an: [wiki]Von Umlauten, Unicode und Encodings[/wiki]
MfG
HWK
lunar

Beitragvon lunar » Sonntag 29. Juli 2007, 17:32

Mmmh, andere Frage: Du weißt schon, dass man Umlaute auch direkt in LaTeX Dokumenten verwenden kann, wenn man fontenc, inputenc und babel richtig einstellt?
iceman21
User
Beiträge: 41
Registriert: Sonntag 25. März 2007, 20:45
Kontaktdaten:

Beitragvon iceman21 » Montag 30. Juli 2007, 15:19

ja ich ahbe das auch mal gehört und ausprobiert aber bisher hat es noch nicht funktioniert ... wie muss man es denn genau einstellen?
lunar

Beitragvon lunar » Montag 30. Juli 2007, 15:27

So:

Code: Alles auswählen

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}


inputenc muss dabei zum Encoding der Datei passen.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Beitragvon birkenfeld » Montag 30. Juli 2007, 17:35

Für bestimmte Zeichen (° z.B. IIRC) braucht man außerdem

Code: Alles auswählen

\usepackage{textcomp}
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder