Estou usando o código fornecido porMark Wibrow(Espirais de texto com TikZ) para gerar um texto em espiral que eu poderia incluir como capa de um relatório.
O código abaixo funciona perfeitamente ao usar caracteres latinos. No entanto, preciso ser capaz de escrever textos em grego. Como posso adaptar/corrigir este código para permitir a escrita grega?
\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}
Devo mencionar que incluí dois novos comandos para mudar de idioma mais facilmente, além dos habituaisBabelpacote para habilitar a escrita grega.
Responder1
Como um falante ignorante de inglês britânico monolíngue, minha experiência em lidar com fontes e babel
pacotes que não sejam do inglês LaTeX
é praticamente zero, então não tenho ideia de quão prática/útil é essa solução. Além disso, não tenho certeza se os caracteres são contados corretamente. Precisa ser cumprido lualatex
ou 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}
Responder2
(Enquanto postava isso, vi que há uma solução Lua-/XeTeX, que eu preferiria. No entanto, aqui está um método pdfTeX.)
Lembre-se de que cada letra (neste tipo de imagem TikZ) é composta por si só \hbox
, o que permite muitos efeitos, mas tem um custo. Os caracteres gregos também são um problema que não consigo explicar.
Mas você pode usar o método mais antigo de transliteração. Apenas certifique-se de encerrar os glifos de vários caracteres da mesma forma que faria com outros acentos (por exemplo, {\"u}ber
). Observe que este \hbox
método parece fazer com que o sigma seja considerado um sigma final, que você pode 'consertar' agrupando-o:
\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}