ギリシャ語のテキストを使用した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}

言語をより簡単に切り替えられる2つの新しいコマンドと、通常のバベルギリシャ語の表記を可能にするパッケージ。

答え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}

関連情報