PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [TikZ] text along path



LuPi
03-04-2010, 16:49
Bei folgendem Beispiel ergeben sich für mich zwei - vermutlich/hoffentlich gar nicht so große - Fragen:

1) Wie bringe ich Umlaute unter (Mäxchen)?

2) Wie kann ich den Text "vertikal" zur Linie zentrieren? Was hiermit gemeint ist, sieht man beim Vergleich der ersten beiden Darstellungen: Ich hätte gerne eine Form wie im zweiten Bild, aber ohne händische Einstellung, da das ganze (natürlich) automatisch ablaufen soll.




\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{decorations.text}
\begin{document}
\begin{tikzpicture}
\draw[gray!20] (0:0) circle (1.2cm);
\path[postaction={decoration={text along path, text={Maxi Mustermann},
text align={align=center}, reverse path}, decorate}] (0:1.2cm) arc (0:180:1.2cm);
\begin{scope}[rotate=180]
\path[postaction={decoration={text along path, text={Monika Musterfrau},
text align={align=center}}, decorate}] (0:1.2cm) arc (0:180:1.2cm);
\end{scope}
\begin{scope}[xshift=4cm]
\draw[gray!20] (0:0) circle (1.2cm);
\path[postaction={decoration={text along path, text={Maxi Mustermann},
text align={align=center}, reverse path}, decorate}] (0:1.1cm) arc (0:180:1.1cm);
\begin{scope}[rotate=180]
\path[postaction={decoration={text along path, text={Monika Musterfrau},
text align={align=center}}, decorate}] (0:1.3cm) arc (0:180:1.3cm);
\end{scope}
\end{scope}
\begin{scope}[xshift=8cm]
\draw[gray!20] (0:0) circle (1.2cm);
% \path[postaction={decoration={text along path, text={M\"{a}xchen Mustermann},
% text align={align=center}, reverse path}, decorate}] (0:1.1cm) arc (0:180:1.1cm);
\begin{scope}[rotate=180]
\path[postaction={decoration={text along path, text={Monika Musterfrau},
text align={align=center}}, decorate}] (0:1.3cm) arc (0:180:1.3cm);
\end{scope}
\end{scope}
\end{tikzpicture}
\end{document}

lockstep
03-04-2010, 17:09
1) Wie bringe ich Umlaute unter (Mäxchen)?

Ohne dass ich etwas von tikz verstehe: Verwende eine geeignete Eingabecodierung wie z.B.



\usepackage[latin9]{inputenc}


und gib die Umlaute direkt ein.

lockstep

LuPi
03-04-2010, 17:21
Sorry, das hatte ich vergessen (da es ohne Einfluss bleibt): inputenc und auch
fontenc bleiben ohne Erfolg. Ich verwende standardmäßig


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

lockstep
03-04-2010, 17:36
Dein Beispiel erzeugt zwar bei mir zahlreiche Fehlermeldungen (pgfkeys beschwert sich über unbekannte keys), aber wenn ich \usepackage[latin9]{inputenc} ergänze, alle Zeilen einkommentiere und im Bildtext Mäxchen statt M\"{a}xchen schreibe, erhalte ich im Bild eine Beschriftung mit Umlaut.

lockstep

LuPi
03-04-2010, 21:26
Hmm, ich habe es mit latin1 (?) und utf8 ohne Erfolg probiert, latin9 muss ich noch testen. Besten Dank für den Hinweis, ich melde mich morgen wieder.

esdd
04-04-2010, 10:55
Hallo,

Du nutzt eine cvs-Version. Deshalb bekomme ich Fehlermeldungen wegen der unbekannten keys und kann den Text mit text align={align=center} nicht zentrieren. Die Entwicklerversion hat also einiges zu bieten ...

Mit der über MiKTeX verteilten Version funktioniert bei mir das folgende Beispiel, in dem ich den Text mit raise=-0.5ex auf die Kreislinie verschiebe:



\documentclass{minimal}
\usepackage[latin1]{inputenc}
\usepackage{tikz}
\usetikzlibrary{decorations.text}

\begin{document}

\begin{tikzpicture}
\draw[gray!20] (0:0) circle (1.2cm);
\path[postaction=%
{decoration={text along path,text={Mäxi Mustermann},raise=-0.5ex},%
decorate}](180:1.2cm) arc (180:0:1.2cm);
\path[postaction=%
{decoration={text along path, text={Monika Musterfrau},raise=-0.5ex},%
decorate}][rotate=180] (0:1.2cm) arc (0:180:1.2cm);
\end{tikzpicture}
\end{document}

Ohne Angabe des Inputencodings erhalte ich Umlaute mit:


\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{decorations.text}

\begin{document}

\begin{tikzpicture}
\draw[gray!20] (0:0) circle (1.2cm);
\path[postaction=%
{decoration={text along path,text={M|\"{a}|x||i Mustermann},raise=-0.5ex},%
decorate}](180:1.2cm) arc (180:0:1.2cm);
\path[postaction=%
{decoration={text along path, text={Monika Musterfrau},raise=-0.5ex},%
decorate}][rotate=180] (0:1.2cm) arc (0:180:1.2cm);
\end{tikzpicture}
\end{document}

Grüße
Elke

rais
04-04-2010, 11:06
Moin moin,


1) Wie bringe ich Umlaute unter (Mäxchen)?

da der String in seine einzelnen Zeichen zerlegt wird, musst Du das Kommando mit gruppieren, also nicht \"{a}, sondern {\"a}.
Bei Verwendung von UTF-8 und direkter Zeicheneingabe hilft auch eine Gruppe (s. u.)


2) Wie kann ich den Text "vertikal" zur Linie zentrieren? Was hiermit gemeint ist, sieht man beim Vergleich der ersten beiden Darstellungen: Ich hätte gerne eine Form wie im zweiten Bild, aber ohne händische Einstellung, da das ganze (natürlich) automatisch ablaufen soll.

Vgl Abschnitt `Positioning Decorations Relative to the To-Be-Decorate Path' im pgfmanual ...


\documentclass{minimal}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{decorations.text}
\begin{document}
\begin{tikzpicture}
\draw[gray!20] (0:0) circle (1.2cm);
\path[postaction={decorate, decoration={raise=-0.5ex, text along path,
text={M{ä}xchen Mustermann}}}] (0:1.2cm) arc (0:180:1.2cm);
\begin{scope}[rotate=180]
\path[postaction={decoration={text along path,
text={Monika Musterfrau}}, decorate}] (0:1.3cm) arc (0:180:1.3cm);
\end{scope}
\end{tikzpicture}
\end{document}

Frohe Ostern

LuPi
04-04-2010, 13:09
Besten Dank an esdd und rais. Die Informationen hinsichtlich Version wollte ich gerade nachreichen, aber Ihr wart schneller. Die raise-Option hatte ich im Manual noch nicht entdeckt, besten Dank für den Hinweis.

Das Gruppieren der Umlaute wollte ich mir eigentlich ersparen, da das weder von der Eingabe noch von der Wartbarkeit angenehm ist.

@esdd: Wenn ich dieses inputenc nutze, bekomme ich als Fehlermeldung


\pgf@lib@dec@text@char ->\else

l.26 ...}, decorate}] (0:1.1cm) arc (0:180:1.1cm);

wobei Zeile 26 diejenige mit dem Mäxchen ist. Die von mir verwendeten Versionen sind:


*File List*
minimal.cls 2001/05/25 Standard LaTeX minimal class
inputenc.sty 2006/05/05 v1.1b Input encoding file
latin9.def 2006/05/05 v1.1b Input encoding file
tikz.sty 2009/09/04 v2.00-cvs (rcs-revision 1.64)
pgf.sty 2008/01/15 v2.00-cvs (rcs-revision 1.12)
pgfrcs.sty 2008/05/19 v2.00-cvs (rcs-revision 1.22)
everyshi.sty 2001/05/15 v3.00 EveryShipout Package (MS)
pgfrcs.code.tex
pgfcore.sty 2008/01/15 v2.00-cvs (rcs-revision 1.6)
graphicx.sty 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR)
keyval.sty 1999/03/16 v1.13 key=value parser (DPC)
graphics.sty 2006/02/20 v1.0o Standard LaTeX Graphics (DPC,SPQR)
trig.sty 1999/03/16 v1.09 sin cos tan (DPC)
graphics.cfg 2007/01/18 v1.5 graphics configuration of teTeX/TeXLive
pdftex.def 2008/07/16 v0.04k Graphics/color for pdfTeX
pgfsys.sty 2009/03/20 v2.00-cvs (rcs-revision 1.34)
pgfsys.code.tex
pgfsyssoftpath.code.tex 2008/07/18 (rcs-revision 1.7)
pgfsysprotocol.code.tex 2006/10/16 (rcs-revision 1.4)
xcolor.sty 2007/01/21 v2.11 LaTeX color extensions (UK)
color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive
pgfcore.code.tex
pgfcomp-version-0-65.sty 2007/07/03 v2.00-cvs (rcs-revision 1.7)
pgfcomp-version-1-18.sty 2007/07/23 v2.00-cvs (rcs-revision 1.1)
pgffor.sty 2009/09/04 v2.00-cvs (rcs-revision 1.16)
pgfkeys.sty
pgfkeys.code.tex
pgffor.code.tex
tikz.code.tex
supp-pdf.tex
***********


Hast Du noch einen Tip?

rais
04-04-2010, 16:23
Moin moin,


Wenn ich dieses inputenc nutze, bekomme ich als Fehlermeldung


\pgf@lib@dec@text@char ->\else

l.26 ...}, decorate}] (0:1.1cm) arc (0:180:1.1cm);

ich kann Deinen Fehler nicht reproduzieren -- meine tikz-Version hier ist von 2008 -- aber ich würde erstmal verifizieren wollen, ob nicht einfach ein Encodingproblem vorliegt.


\documentclass{minimal}
\usepackage[latin9]{inputenc}
\begin{document}
äöü
\end{document}

Wenn das schon nicht funzt, speicherst Du wohlmöglich noch als utf-8 ...

MfG

LuPi
05-04-2010, 17:43
Naja, unabhängig davon, ob ich utf8, latin1 oder latin9 verwende: Dein MB läuft anstandslos (und mit dem korrekten Ergebnis) durch. Wenn nicht jemand eine zündende Idee hat, können wir diesen thread auch einstellen. Ich habe mich jetzt mit der L{ö}sung vielleicht nicht gerade angefreundet, aber sie zumindest akzeptiert.