![使用 TikZ 制作螺旋状文本](https://linux22.com/image/260670/%E4%BD%BF%E7%94%A8%20TikZ%20%E5%88%B6%E4%BD%9C%E8%9E%BA%E6%97%8B%E7%8A%B6%E6%96%87%E6%9C%AC.png)
我刚刚遇到这个问题,我很好奇它是否可以在 TeX 中复制......
理想情况下,螺旋越靠近中心,就会越紧,就像
我知道 TikZ 有让文本沿路径排列的功能,但我不确定如何让文本变得越来越小。我能找到的最接近的方法是创造优雅的数字和符号显示,但这使用了手动插入的字体命令。
编辑:我使用 mwibrow 的答案得到了我想要的东西:
答案1
(text effects along path
在 PGF 3.0 中) 可以很容易地做到这一点(虽然有点慢):
\documentclass[tikz,border=5]{standalone}
\usetikzlibrary{decorations.text}
\begin{document}
\begin{tikzpicture}[
decoration={
reverse path,
text effects along path,
text={Lorem ipsum dolor sit amet, consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
pariatur. Excepteur sint occaecat cupidatat non proident, sunt
inculpa qui officia deserunt mollit anim id est laborum.},
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}
对于 3.0 之前的 PGF 版本,请参阅编辑历史,其中描述了简单的破解方法。
答案2
运行latex
-> dvips
->ps2pdf
\documentclass[12pt]{article}
\usepackage{pst-plot}
\usepackage{pst-text}
\usepackage{lipsum}
\pagestyle{empty}
\begin{document}
\large
\begin{pspicture}(-3.8,-5)(4.5,4.5)
\pstextpath{%
\parametricplot[linestyle=none,plotpoints=5000,algebraic,unit=0.25]
{0}{200}{t^2*sin(t)/200 | t^2*cos(t)/200}}{\lipsum[1]}%
\end{pspicture}
\end{document}
也可以增加字体大小,但我们必须处理每个字符。
\documentclass[pstricks]{standalone}
\usepackage[T1]{fontenc}
\usepackage{mathptmx}
\usepackage{pst-plot}
\usepackage{pst-text}
\newdimen\MyDim \MyDim=30pt
\makeatletter
\def\doPerChar#1#2\@nil{%
\CharacterAction{#1}%
\ifx\relax#2\relax\else\doPerChar#2\@nil\fi}
\def\perChar#1{\doPerChar#1\@nil}
\def\CharacterAction#1{%
\fontsize{\MyDim}{1.1\MyDim}\selectfont#1%
\global\advance\MyDim by -0.175pt}
\makeatother
\pagestyle{empty}
\begin{document}
\begin{pspicture}(-3,-3)(3,3)
\pstextpath{%
\parametricplot[linestyle=none,plotpoints=5000,algebraic,unit=0.2]
{50}{0}[/A 5e-3 def ]{A*(cos(t)+t^2*sin(t)) | A*(sin(t)-t^2*cos(t))}}{\perChar{Now~we~write~some~nensense~text~here~to~write~it~on~%
an~involute~only~to~see~what~happens~with~this~nonsense~text~%
in~this~nonsense~example!}}
\end{pspicture}
\end{document}