Wie kann man den Befehl so umgestalten, dass die Beschriftung sich an den Pfad anschmiegt, unter Beibehaltung der Open in Online-Editor
\documentclass{article} \usepackage[ngerman]{babel} \usepackage{tikz} \usetikzlibrary{ decorations, decorations.text } \begin{document} \newcommand{\beschriftung}[1]{\begin{tikzpicture} \foreach \n in {1, ..., 9}{ \path[ postaction = { decorate, decoration = { raise = 1.5ex, text along path, % \ifthenelse{##2 = 3 \OR ##2 = 4 \OR ##2 = 5 \OR ##2 = 6}{}{reverse path,} text align = center, text = { |\ifcase \n \or Eins \or Zwei \or Drei \or Vier \or Fünf \or Sechs \or Sieben \or Acht \or Neun \fi| } } } ] (-36: #1) arc (-36: {856-((\n-1)*80)}: #1); } \end{tikzpicture}} \beschriftung{3} \end{document} |
Für das Setzen entlang des Pfades benötigt man den Text vollständig expandiert. Ich mache das hier mit einem Hilfsmakro: Open in Online-Editor
\documentclass{article} \usepackage[ngerman]{babel} \usepackage{tikz} \usetikzlibrary{ decorations, decorations.text } \begin{document} \newcommand{\beschriftung}[1]{\begin{tikzpicture} \foreach \n in {1, ..., 9}{ \edef\mytext{\ifcase \n \or Eins \or Zwei \or Drei \or Vier \or Fünf \or Sechs \or Sieben \or Acht \or Neun \fi} \path[ postaction = { decorate, decoration = { raise = 1.5ex, text along path, % \ifthenelse{##2 = 3 \OR ##2 = 4 \OR ##2 = 5 \OR ##2 = 6}{}{reverse path,} text align = center, text = { \mytext } } } ] (-36: #1) arc (-36: {856-((\n-1)*80)}: #1); } \end{tikzpicture}} \beschriftung{3} \end{document} Da Open in Online-Editor
\documentclass{article} \usepackage[ngerman]{babel} \usepackage{tikz} \usetikzlibrary{ decorations, decorations.text } \begin{document} \newcommand{\beschriftung}[1]{\begin{tikzpicture} \foreach \n in {1, ..., 9}{ \edef\mytext{\ifcase \n \or Eins \or Zwei \or Drei \or Vier \or Fünf \or Sechs \or Sieben \or Acht \or Neun \fi}% \def\extraopt{reverse path}% \ifnum \n>2 \ifnum \n<7 \def\extraopt{}\fi\fi \path[ postaction = { decorate, decoration = { raise = 1.5ex, text along path, \extraopt, text align = center, text = {\mytext} } } ] (-36: #1) arc (-36: {856-((\n-1)*80)}: #1); } \end{tikzpicture}} \beschriftung{3} \end{document} Ich vermute aber, Du möchtest eher etwas in der Richtung: Open in Online-Editor
\documentclass{article} \usepackage[ngerman]{babel} \usepackage{tikz} \usetikzlibrary{ decorations, decorations.text } \begin{document} \newcommand{\beschriftung}[1]{\begin{tikzpicture} \foreach \n in {1, ..., 9}{ \edef\mytext{\ifcase \n \or Eins% \or Zwei% \or Drei% \or Vier% \or F{\"u}nf% \or Sechs% \or Sieben% \or Acht% \or Neun% \fi}% \def\raiseval{-3.5ex}% \def\extraopt{reverse path}% \ifnum \n>2 \ifnum \n<7 \def\extraopt{}\def\raiseval{1.5ex}\fi\fi \path[ postaction = { decorate, decoration = { raise = \raiseval, text along path, \extraopt, text align = center, text = {\mytext} } } ] (-36: #1) arc (-36: {856-((\n-1)*80)}: #1); } \end{tikzpicture}} \beschriftung{3} \end{document} Bei Verwendung von beantwortet 28 Nov '15, 08:49 saputello großartig, vielen dank! Könnte man die Beschriftung auch über ein Argument vornehmen, wie beispielsweise: \beschriftung{3}{eins, zwei, drei, vier, fünf, sechs, sieben, acht, neun} ?
(28 Nov '15, 09:29)
rix
|
Hier ist mal noch ein alternativer Vorschlag, bei dem die Liste mit den Beschriftungen als Argument an den Befehl Open in Online-Editor
\documentclass{standalone} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage[ngerman]{babel} \usepackage{tikz} \usetikzlibrary{ decorations, decorations.text } % Syntax: \beschriftung[<startwinkel>]{<radius>}{<liste mit beschriftungen>} \newcommand{\beschriftung}[3][50]{% \begin{tikzpicture} \pgfset{ /pgf/decoration/circle angle/.code={ \ifdim ##1pt>180pt% wenn der Winkel größer als 180° ist \pgfset{/pgf/decoration/reverse path=false,/pgf/decoration/raise=2ex} \else% sonst, also wenn der Winkel kleiner gleich 180° ist \pgfset{/pgf/decoration/reverse path=true,/pgf/decoration/raise=-3.5ex} \fi } } \begin{scope}% zum lokal halten des Clippens \clip circle [radius=#2]; \foreach[count=\n,remember=\n as \totalnumber] \i in {#3}{} \foreach[count=\n] \mytext in {#3}{ \pgfmathsetmacro\circleangle{Mod(#1-(\n-1)*360/\totalnumber,360)} \path[ postaction = { decorate, decoration = { text along path, circle angle=\circleangle, text align = center, text = {\mytext} } } ] ({\circleangle-180}: #2) arc ({\circleangle-180}: {\circleangle+180}: #2); } \end{scope} \end{tikzpicture}% } \begin{document} \beschriftung{3}{Eins,Zwei,Drei,Vier,F{ü}nf,Sechs,Sieben,Acht,Neun} \beschriftung[340]{3}{340,320,...,0} \end{document} beantwortet 28 Nov '15, 17:59 esdd dankeschön! Dieser neue Befehl wäre eigentlich schon "Paket-würdig" :)
(29 Nov '15, 14:30)
rix
|