使用希腊文本通过 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}

我应该提到,我添加了两个新命令,以便更轻松地切换语言,以及通常的巴别塔 (Babel)包以启用希腊语书写。

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

相关内容