57

I just ran across this, and I'm curious about whether it can be replicated in TeX...

enter image description here

Ideally one would have the spiral getting tighter and tighter as one got to the centre, as in

enter image description here

I know TikZ has the ability to fit text along a path, but I'm not sure how one might make text get smaller and smaller. The closest I can find is create elegant display of digits and symbols, but that uses manually inserted font commands.

Edit: I got what I wanted using mwibrow's answer:

mwibrow

6
  • 2
    I don't know how to do it in tikz, but the curve you are referring to (getting closer as you move in) is called an Involute, as opposed to an Archimedean Spiral (which has constant separation) have a look at en.wikipedia.org/wiki/Involute for the maths. Dec 31, 2012 at 13:27
  • @ADP That looks like a method for producing a curve from another curve. The involute of a circle definitely isn't what is wanted. I think it might just be a log spiral that is needed.
    – Mohan
    Dec 31, 2012 at 13:43
  • I disagree. 15 Characters is too much for me. Dec 31, 2012 at 14:01
  • @ADP: I was specifically asking for a solution in which the spiral got tighter towards the centre (although I couldn't find an example with text for illustrative purposes, which is why I posted the second picture). The involute of a circle doesn't achieve this.
    – Mohan
    Dec 31, 2012 at 14:15
  • 1
    @Herbert What happened to your PSTricks-based answer? I accepted the other because tikz is more convenient for me, but your answer was definitely worth having as well!
    – Mohan
    Jan 2, 2013 at 16:59

2 Answers 2

61

The text effects along path (in PGF 3.0) can do this quite easily (if a bit slowly):

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

enter image description here

For PGF versions before 3.0, see the edit history where a simple hack is described.

2
  • Is it possible to write a text in Cyrillic? what should be changed for this?
    – Антон
    Feb 20 at 8:33
  • 1
    Can anyone explain the numbers in the function that creates the spiral? \foreach \i [evaluate={\r=(\i/2000)^2;}] in {0,5,...,2880}{ -- (\i:\r)}; In particular, the 2000, 5, and 2880? And what is the relationship to the character total \n?
    – pgregory
    Apr 28 at 23:26
20

run with 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}

enter image description here

it is also possible to increase the fontsize, but then we have to handle every character.

enter image description here

\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}
5
  • 2
    You may be right. But a time ago I tried tikz and pstricks. And with pstricks I had some problems creating pdf-output. Therefore I like tikz better.
    – Dave
    Dec 31, 2012 at 15:04
  • 3
    @Dave see tex.stackexchange.com/tags/pstricks/info (for example) of the compilation method; PSTricks is more powerful than tikz; it seems that a lot of people on tex exchange favour tikz because of the syntax, and the fact that it works (easily) with pdflatex
    – cmhughes
    Dec 31, 2012 at 17:50
  • This is a good answer. However, it is an answer for a different question: people will see the tags and the question's title and will skip it if they search for a pstricks solution. Adding the pstricks tag to the question appears to be a mismatch with the title. I would have preferred to read this (good) answer as part of the tex.sx knowledge base for a separate question - perhaps with a link in a comment. Jan 1, 2013 at 11:37
  • @ChristianFeuersänger Not a new problem: “Just for fun” Jan 5, 2013 at 13:21
  • @Herbert please excuse my ignorant comment: I have just learned from meta.tex.stackexchange.com/questions/3452/… how answers with unrequested tags are to be handled Apr 11, 2013 at 17:24

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .