Textspiralen mit TikZ unter Verwendung griechischen Textes

Textspiralen mit TikZ unter Verwendung griechischen Textes

Ich verwende den Code vonMark Wibrow(Textspiralen mit TikZ), um einen Spiraltext zu generieren, den ich als Titelbild eines Berichts einfügen könnte.

Der folgende Code funktioniert einwandfrei, wenn lateinische Buchstaben verwendet werden. Ich muss jedoch griechische Texte schreiben können. Wie kann ich diesen Code anpassen/korrigieren, um griechische Texte zu ermöglichen?

\documentclass[tikz,border=5]{standalone}

\usepackage{ucs}
\usepackage[utf8x]{inputenc}
\usepackage[english, greek]{babel}

\newcommand{\en}{\selectlanguage{english}}
\newcommand{\gr}{\selectlanguage{greek}}

\usetikzlibrary{decorations.text}
\begin{document}
\begin{tikzpicture}[
  decoration={
    reverse path,
    text effects along path,
    text={Κείμενο στα ελληνικά.}, %text in greek 
    text effects/.cd,
      text along path,
      character count=\i, character total=\n,
      characters={scale=1-\i/\n}
    }
]
\draw [decorate] (0,0) 
    \foreach \i [evaluate={\r=(\i/2000)^2;}] in {0,5,...,2880}{ -- (\i:\r)}; 
\end{tikzpicture}
\end{document}

Ich sollte erwähnen, dass ich zwei neue Befehle zum einfacheren Umschalten der Sprache hinzugefügt habe, sowie die üblichenBabelPaket zum Aktivieren der griechischen Schrift.

Antwort1

Als unwissender, einsprachiger britischer Englischsprecher habe ich praktisch keine Erfahrung mit nicht-englischen Schriftarten und dem babelPaket in LaTeX, daher habe ich keine Ahnung, wie praktisch/nützlich diese Lösung ist. Außerdem bin ich mir nicht sicher, ob die Zeichen richtig gezählt werden. Es muss eingehalten werden lualatexoder xelatex.

\documentclass[tikz,border=5]{standalone}
\usepackage{fontspec}
% Select appropriate font
\setmainfont{TeX Gyre Pagella}

\usetikzlibrary{decorations.text}
\begin{document}  
\begin{tikzpicture}[
  decoration={
    reverse path,
    text effects along path,
    text={%
Βρυτε λεγερε συ μει. Φιμ συ αλτερα εριπυιτ σενσιβυς. 
Ατ δεσωρε αλικυαμ εαμ. Ιυς αν θιμεαμ ομιθταντυρ, 
ετ μολεστιε σορρυμπιθ εαμ, σινθ αδμοδυμ φιερενθ αδ πρι.
Φελ συ πυτανθ φιθυπεραθα, αεκυε ερρεμ ευμ συ. Νο ευισμοδ 
μενθιτυμ πραεσενθ νες, πρω ελιγενδι σοτιδιεκυε σωνσλυδαθυρκυε ιν. 
Ιδ μεα δισιθ φολυπθατιβυς. Ηομερω ρεπρεχενδυντ μελ νε, 
αθκυι μελιυς προδεσεθ αν μει. Πρι ει δωσενδι νεγλεγενθυρ, 
κυαεστιο ρεπριμικυε ατ φελ.
}, %text in greek 
    text effects/.cd,
      text along path,
      character count=\i, character total=\n,
      characters={scale=1-\i/\n}
    }
]
\path [decorate]  (0,0)
   \foreach \i [evaluate={\r=(\i/2000)^2;}] in {0,5,...,2880}{ -- (\i:\r)}; 
\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

Antwort2

(Als ich dies gepostet habe, sah ich, dass es eine Lua-/XeTeX-Lösung gibt, die ich bevorzugen würde. Hier ist jedoch eine pdfTeX-Methode.)

Denken Sie daran, dass jeder Buchstabe (in dieser Art von TikZ-Bild) in einem eigenen gesetzt ist \hbox, was viele Effekte ermöglicht, aber seinen Preis hat. Die griechischen Buchstaben sind auch ein Problem, das ich nicht erklären kann.

Sie können aber auch die ältere Transliterationsmethode verwenden. Achten Sie nur darauf, dass Sie die mehrstelligen Glyphen genauso umschließen, wie Sie es mit anderen Akzenten tun würden (z. B. {\"u}ber). Beachten Sie, dass \hboxSigma bei dieser Methode anscheinend als End-Sigma betrachtet wird, was Sie „beheben“ können, indem Sie es gruppieren:

\documentclass[tikz,border=5]{standalone}

\usepackage{ucs}
\usepackage[utf8x]{inputenc}
% Also works with these
%\usepackage[T1]{fontenc}
%\usepackage[utf8]{inputenc}
\usepackage[english, greek]{babel}

\newcommand{\en}{\selectlanguage{english}}
\newcommand{\gr}{\selectlanguage{greek}}

\usetikzlibrary{decorations.text}


\begin{document}
 \selectlanguage{greek}

\begin{tikzpicture}[
  decoration={
    reverse path,
    text effects along path,
%    text={Κε{ί}μενο στα ελληνικ{ά}.}, %text in greek
    text={Ke{'i}meno {sta} ellhnik{'a}.},
    text effects/.cd,
      text along path,
      character count=\i, character total=\n,
      characters={scale=1-\i/\n}
    }
]
\draw [decorate] (0,0)
    \foreach \i [evaluate={\r=(\i/2000)^2;}] in {0,5,...,2880}{ -- (\i:\r)};
\end{tikzpicture}

% Something a little more elaborate...
\begin{tikzpicture}[
  decoration={%
    reverse path, %
    text effects along path, %
%    text={Κε{ί}μενο στα ελληνικ{ά}.}, %text in greek
    text={{<H}dona{`i} ka{`i} l{~u}pai f{'o}boi te ka{`i} j{'a}rrh
      {>e}pijum{'i}ai te ka{`i} {>a}postpofa{`i} ka{`i} t{`o}
      {>a}lge{~i}n t{'i}nos {>`a}n {e>~ien}?  {>`H} g{`a}r yuq{~h}s,
      {>`h} qrwm{'e}nhs fuq{~h}s {s'w}mati, {>`h} tr{'i}tou tin{`o}s
      {>ex} {>a}mfo{~i}n.
 % Diq~ws d`e ka`i to~uto; >`h g`ar t`o m~igma, >`h >`allo <'eteron
 % >ek to~u m'igmatos.  <Omo'iws d`e ka`i t`a >ek to'utwn t~wn
 % pajhm'atwn gin'omena ka`i pratt'omena ka`i doxaz'omena.
}, %
    text effects/.cd, %
      text along path, %
      character count=\i, character total=\n, %
      characters={scale=1-\i/\n} %
    }
]
\draw [decorate] (0,0) \foreach \i [evaluate={\r=(\i/2000)^2;}] in
{0,5,...,2880}{ -- (\i:\r)};
\end{tikzpicture}

\end{document}

verwandte Informationen