PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : UTF-8-Sonderzeichen-Direkteingabe



harvey
24-04-2010, 20:04
Hallo,
ich möchte gerne einen längeren Text eingeben, in dem UTF-8-Sonderzeichen wie ā, ē, ī, ō, ū vorkommen. Ich möchte diese auch gerne so im Text stehen lassen, ohne sie in Latex-Steuerungscodes umzusetzen. Ausserdem möchte ich sie gerne selbst definieren können, so dass also z.B. ā als \=a und ī als \=\i gesetzt wird.

Wie kann ich das denn mit möglichst wenig Aufwand anstellen?

(Ich verwende texlive unter SuSE 11.2)

voss
24-04-2010, 20:18
ich möchte gerne einen längeren Text eingeben, in dem UTF-8-Sonderzeichen wie ā, ē, ī, ō, ū vorkommen. Ich möchte diese auch gerne so im Text stehen lassen, ohne sie in Latex-Steuerungscodes umzusetzen. Ausserdem möchte ich sie gerne selbst definieren können, so dass also z.B. ā als \=a und ī als \=\i gesetzt wird.

Wie kann ich das denn mit möglichst wenig Aufwand anstellen?



\documentclass[a4paper]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc}
\usepackage{lmodern}

\begin{document}

ā, ē, ī, ō, ū

Wo ist das Problem?

\end{document}

Herbert

harvey
24-04-2010, 20:28
Wo ist das Problem?

Okay, falsches Beispiel. utf8x hatte ich übersehen. Aber ich muss doch noch einige Zeichen selbst definieren, z.B. ʕ, welches ich gerne als \textraiseglotstop (tipa-package) darstellen möchte.

Nachtrag: Im Moment bekomme ich folgende Fehlermeldung:


! Package ucs Error: Unknown Unicode character 661 = U+0295,
(ucs) possibly declared in uni-2.def.
(ucs) Type H to see if it is available with options.

In uni-2.def ist das Zeichen in der Tat definiert. Nach Drücken von H erhalte ich folgenden Hinweis:


Unicode character 661 = U+0295:
LATIN LETTER PHARYNGEAL VOICED FRICATIVE
LATIN LETTER REVERSED GLOTTAL STOP
Character available with following options:
tipa.
Enter I!<RET> to define the glyph.
Mit I! kann ich dann das Zeichen manuell definieren.

Fragen:
1. Wo muss ich die Option "tipa" hier setzen? (Das package ist ja bereits geladen)
2. Wie kann ich trotzdem ein bereits definiertes Zeichen umdefinieren, wenn mir seine Definition nicht gefällt?

voss
24-04-2010, 20:58
Okay, falsches Beispiel. utf8x hatte ich übersehen. Aber ich muss doch noch einige Zeichen selbst definieren, z.B. ʕ, welches ich gerne als \textraiseglotstop (tipa-package) darstellen möchte.
Fragen:
1. Wo muss ich die Option "tipa" hier setzen? (Das package ist ja bereits geladen)


von tipa war überhaupt noch nicht die Rede ... Kleckerweise Informationen
sind nervig ...

Herbert

harvey
24-04-2010, 21:14
Kleckerweise Informationen sind nervig ...

Sorry dafür, aber bei mir gehen dank Deines Hinweises auf utf8x, ucs usw., und je mehr ich mir die dazugehörigen Dateien angucke, grade kistenweise Birnen auf und die Problemlage ändert sich schnell. tipa habe ich jetzt gelöst. (\usepackage[tipa]{ucs}). Dafür entstehen jetzt aber neue Probleme:

1. Was mache ich wenn auch mit tipa ein Zeichen einfach in uni-2.def nicht definiert ist?
2. Was mache ich wenn mir eine Definition dort nicht gefällt?
(Beides nur lokal für ein Text-File, ohne die systemweite uni-2.def zu verändern)

u_fischer
25-04-2010, 12:58
\documentclass{scrartcl}

\usepackage[utf8]{inputenc}
\DeclareUnicodeCharacter{20AC}{EURO!! nicht DM!}
\begin{document}
100 €
\end{document}

harvey
27-04-2010, 12:27
\documentclass{scrartcl}

\usepackage[utf8]{inputenc}
\DeclareUnicodeCharacter{20AC}{EURO!! nicht DM!}
\begin{document}
100 €
\end{document}

Danke, nun bin ich einen Schritt weiter. Jedoch funktioniert das Ganze nicht mehr, sobald ich utf8x statt utf8 wähle:


! LaTeX Error: Missing \begin{document}.


Wenn ich den Declare-Befehl nach \begin{document} einfüge erhalte ich stattdessen:


! Missing = inserted for \ifnum.
<to be read again>
A
l.23 ...reUnicodeCharacter{20AC}{EURO!! nicht DM!}

:(

u_fischer
27-04-2010, 13:24
utf8x bedeutet, dass ucs benutzt wird. Du musst also rausfinden, wie dort die Zeichen deklariert werden. Ich würde aber ucs nicht umbedingt empfehlen, es hat zwar mehr Zeichen vordeklariert, wird aber meines Wissens nicht weiter entwickelt und beißt sich immer mal wieder mit anderen Paketen, da es einige interne Befehle umdefiniert. Wenn dir nur einige Zeichen fehlen, würde ich dir eher raten, sie per \DeclareUnicodeCharacter zu definieren. Die Akzentzeichen ā, ē, ī, ō, ū bekommst du z.B. schon durch das Laden von ix-utf8enc.dfu aus dem inputenx-Paket, also mit
\makeatletter
\input{ix-utf8enc.dfu}

harvey
27-04-2010, 15:04
utf8x bedeutet, dass ucs benutzt wird. Du musst also rausfinden, wie dort die Zeichen deklariert werden.
Der Befehl heisst dort z.B. \uc@dclc{660}{tipa}{\textglotstop}. Wenn ich ihn einbaue bekomme ich aber:


! Undefined control sequence.
l.23 \uc
@dclc{660}{tipa}{\textglotstop}
(Dasselbe Problem habe ich übrigens auch bei den keyval-Befehl mit @, also z.B. bei \define@key


wird aber meines Wissens nicht weiter entwickelt
ja, das ist wohl leider so....


Wenn dir nur einige Zeichen fehlen,
Im Moment ja, aber ich habe eigentlich immer wieder Bedarf danach, utf-8 direkt anzusteuern, so dass mir eine Weiter/Neuentwicklung von ucs doch sehr angenehm wäre. Ich schaue einstweilen mal, ob ich einen Großteil der uni-xxx.def-Informationen nicht einfach nach
\DeclareUnicodeCharacter hinüberretten kann. Das ein oder andere perl-Skript kann ich dazu schon schreiben.

u_fischer
27-04-2010, 16:02
Wenn du @ in Befehlsnamen verwenden willst, musst du erst @ zu einem "Buchstaben machen":


\makeatletter %=make @ letter
\uc@dclc ....
\define@key .....
\makeatother %=make @other

harvey
27-04-2010, 17:07
Wenn du @ in Befehlsnamen verwenden willst, musst du erst @ zu einem "Buchstaben machen":


\makeatletter %=make @ letter
\uc@dclc ....
\define@key .....
\makeatother %=make @other
Prima, danke, jetzt geht's!