# Automatically divide text between two tikz paths

I make a custom shape and I need to put a text inside it. But problem is that my text didn't fit the length of decorated path. So, I need a way to automatically divide text between two or three paths.

So, this is my shape and lines inside it is a place where I want to put my text:

I generate this shape with the following code:

\begin{tikzpicture}

% shape
\draw (0,0) ++ (45:3) arc (45:135:3);
\draw (0,0) ++ (45:5) arc (45:135:5);
\draw (45:3) -- (45:5);
\draw (135:3) -- (135:5);

%lines for text
\draw (0,0) ++ (50:3.5) arc (50:130:3.5);
\draw (0,0) ++ (50:4) arc (50:130:4);
\draw (0,0) ++ (50:4.5) arc (50:130:4.5);

\end{tikzpicture}


I plan to put text to this lines using the path decoration:

\path[
postaction={
decorate,
decoration={
text along path,
reverse path=true,
text={very long long text, which don't fit the shape boundaries}
}
}
] (0,0) ++ (50:4.5) arc (50:130:4.5);


But if the text is long, it's don't fit the provided space.

So I have to find a way to calculate a provided space and then divide the text between the several paths. Any suggestions?

-

You can use a single path (with several segments). (Note the "bug": TikZ uses each segment in reverse order...)

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.text}
\begin{document}
\begin{tikzpicture}
% shape
\draw (0,0) ++ (45:3) arc (45:135:3);
\draw (0,0) ++ (45:5) arc (45:135:5);
\draw (45:3) -- (45:5);
\draw (135:3) -- (135:5);

%lines for text
\draw[blue] (0,0) ++ (50:3.5) arc (50:130:3.5);
\draw (0,0) ++ (50:4) arc (50:130:4);
\draw (0,0) ++ (50:4.5) arc (50:130:4.5);

% text along path
\path[
postaction={
decorate,
decoration={
text along path,
reverse path=true,
text={Very long long text, which don't fit the shape boundaries
and so on. Very long long text... Very long text...}
}
}
]
(0,0) ++ (50:3.5) arc (50:130:3.5)
(0,0) ++ (50:4) arc (50:130:4)
(0,0) ++ (50:4.5) arc (50:130:4.5);
\end{tikzpicture}
\end{document}


Here a complete solution without the reverse path option (to avoid the "bug") and without (0,0) (to fit the shape in the bounding box).

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.text}
\begin{document}
\begin{tikzpicture}
% shape
\draw (45:3) arc (45:135:3)
-- (135:5)  arc (135:45:5)
-- cycle;

% lines for text
\draw
(50:3.5) arc (50:130:3.5)
(50:4) arc (50:130:4)
(50:4.5) arc (50:130:4.5);

% text along path
\path[postaction={decorate,decoration={
text along path,
text={Very long long text, which don't fit the shape boundaries
and so on. Very long long text... Very long text...}
}}]
(130:4.5) arc (130:50:4.5)
(130:4) arc (130:50:4)
(130:3.5) arc (130:50:3.5);
\end{tikzpicture}
\end{document}


-
Instead of reverse path you could always draw the arcs in a "left-to-right" way, for example (130:3.5) arc (130:50:3.5). Also the arcs would need to be drawn "top-to-bottom" by drawing the arc with the largest radius first. –  Mark Wibrow Dec 22 '13 at 20:12
@MarkWibrow Excellent point! Thanks ;-) –  Paul Gaborit Dec 22 '13 at 22:24
@PaulGaborit thx for great suggestion. –  bronislav Dec 23 '13 at 8:12