Текстовые спирали с TikZ с использованием греческого текста

Текстовые спирали с TikZ с использованием греческого текста

Я использую код, предоставленныйМарк Виброу(Текстовые спирали с TikZ) для создания спирального текста, который я мог бы включить в качестве обложки отчета.

Приведенный ниже код отлично работает при использовании латинских символов. Однако мне нужно иметь возможность писать греческий текст. Как мне адаптировать/исправить этот код, чтобы разрешить греческое письмо?

\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}

Я должен упомянуть, что я включил две новые команды для более легкого переключения языка, а также обычнуюВавилонпакет для включения греческого письма.

решение1

Как невежественный монолингв британского английского языка, мой опыт работы с неанглийскими шрифтами и babelпакетом LaTeXв практически нулевой, поэтому я понятия не имею, насколько практично/полезно это решение. Кроме того, я не уверен, что символы подсчитываются правильно. Это должно быть выполнено lualatexили 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}

введите описание изображения здесь

решение2

(Когда я это писал, я увидел, что есть решение Lua-/XeTeX, которое я бы предпочел. Однако вот метод pdfTeX.)

Помните, что каждая буква (в этом типе изображения TikZ) набрана в своем собственном \hbox, что позволяет использовать множество эффектов, но имеет свою цену. Греческие символы также являются проблемой, которую я не могу объяснить.

Но вы можете использовать старый метод транслитерации. Просто убедитесь, что вы оборачиваете многосимвольные глифы так же, как и другие акценты (например, {\"u}ber). Обратите внимание, что этот \hboxметод, похоже, заставляет сигму рассматриваться как конечная сигма, что вы можете «исправить», сгруппировав ее:

\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}

Связанный контент