使用希臘文本的 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幾乎為零,所以我不知道這個解決方案有多實用/有用。另外,我不確定字元是否計算正確。需要遵守lualatexxelatex

\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方法似乎使 sigma 被視為最終 sigma,您可以透過對其進行分組來「修復」:

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

相關內容