1

I'm trying to create a mapping showing the flow of ideas in a course, something similar to this

However, whenever I try to create a long path connecting a topic with a subject, I get a "Dimension too large" error. I can't see that there's a math overflow error. It seems to be caused purely by the length of the path. In the MWE below, the troublesome line tries to connect Topic 1 to Subject 1. However, even if I try to connect Topic 1 to something further away than Section 3 (e.g. Section 2), I get the same error making me think the error has to do with the length of the path, yet I cannot see that such a restriction on path length exists in tikz.

\documentclass{beamer}

\usepackage[english]{babel} \usepackage[utf8]{inputenc} \usepackage{tikz}

\usepackage[orientation=landscape,size=a0,scale=1.0]{beamerposter}

\begin{document} \begin{frame}{} \begin{tikzpicture}

    \draw[help lines,xstep=1,ystep=1] (0,0) grid (115,70);
    \foreach \x in {0,1,...,115} { \node [anchor=north] at (\x,0) {\small{\x}}; }
    \foreach \y in {0,1,...,70} { \node [anchor=east] at (0,\y) {\small{\y}}; }

    \node [anchor=west] at (1,66)  {\small{Topic 1}};
    \node [anchor=west] at (1,30)  {\small{Topic 2}};
    \draw (20,10) node [anchor=west] {\small{Section 1}};
    \draw (20,30) node [anchor=west] {\small{Section 2}};
    \draw (20,31) node [anchor=west] {\small{Section 3}};
    \draw (20,32) node [anchor=west] {\small{Section 4}};
    \draw (20,33) node [anchor=west] {\small{Section 5}};
    \draw (20,35) node [anchor=west] {\small{Section 6}};
    \draw (20,40) node [anchor=west] {\small{Section 7}};
    \draw (20,50) node [anchor=west] {\small{Section 8}};

    \draw (4.0,66) to [out=0, in=180] (20,50);
    \draw (4.0,66) to [out=0, in=180] (20,40);
    \draw (4.0,66) to [out=0, in=180] (20,35);
    \draw (4.0,66) to [out=0, in=180] (20,33);
    \draw (4.0,66) to [out=0, in=180] (20,32);
    \draw (4.0,66) to [out=0, in=180] (20,31);

% \draw (4.0,66) to [out=0, in=180] (20,30); % This line causes a "Dimensions too large" error % \draw (4.0,66) to [out=0, in=180] (20,10); % This line causes a "Dimensions too large" error \draw (4.0,30) to [out=0, in=180] (20,10);

\end{tikzpicture}

\end{frame}

\end{document}

Any help getting around this error would be greatly appreciated. I'm probably missing something really obvious.

UPDATE So this is bizarre. Following a hint in an answer to this question Dimension too large error with too many tikz marks, I just asked pdflatex to continue compiling the document and the paths appeared. Using the tracingmacros and tracingcommands commands I think the "Dimensions too large" error seems to have something to do with \pgf@ya but I don't have time to dig deeper.

  • Not related but you can shorten your code like this: \draw (4.0,66) to [out=0, in=180] (20,50) node [anchor=west] {\small{Section 8}};. – SebGlav Jun 02 '21 at 17:19
  • Are you really trying to draw picture that is 115cm wide and 70cm tall? That's a bit large to fit on a beamer slide. The base units in TikZ are cm. – Henri Menke Jun 02 '21 at 18:17
  • Henri, I'm using the beamerposter package for creating large figures....unless I've done something exceptionally stupid. – Adrian Burd Jun 02 '21 at 19:36
  • Just for reference, Tantau's map that I link to in the original question is 46.82 x 33.12 inches and was produced by LuaTeX (which may help solve the problem, but I've not used LuaTeX before so I'm not sure). A different, but very similar map at this link has the same size but was produced using pdflatex, so I'm not sure using LuaTeX is the solution. – Adrian Burd Jun 03 '21 at 16:11
  • I tested with LuaLaTeX and it produces the same error. Maybe one of the internal control points of the curved edge causes the issue. A straight line works fine. By the way: I would suggest so name your nodes and use the names for the connections. This would make the figure code much more readable. – Gunter Jun 04 '21 at 14:02
  • Hi Gunter, thanks for the tips. The error appears also if I don't use beamer/beamerposter but set a page geometry of A0 and work with that. In the update I mention that if you just continue the compilation and ignore the error, the path appears properly. – Adrian Burd Jun 04 '21 at 15:28
  • @AdrianBurd, indeed despite the error message the edge is created. But thats seems reasonable as the error message also states, that it simply uses the largest value it can cope with. – Gunter Jun 04 '21 at 16:10

1 Answers1

1

There is a way around this issue. Essentially you can redefine the x and y values to .5cm instead of 1cm and then scale it by a factor of 2. It is not very elegant, but compiles without errors and gives your desired output:

\documentclass{beamer}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage[orientation=landscape,size=a0,scale=1.0]{beamerposter}

\begin{document} \begin{frame}{} \centering \begin{tikzpicture}[x=1cm,y=1cm,every node/.style={font=\small}] \draw[help lines,xstep=1,ystep=1] (0,0) grid (115,70); \foreach \x in {0,1,...,115} {\node [anchor=north] at (\x,0) {\x};} \foreach \y in {0,1,...,70} {\node [anchor=east] at (0,\y) {\y};} \node[anchor=east] at (4,66) {Topic 1}; \node[anchor=east] at (4,30) {Topic 2}; \begin{scope}[every node/.style={anchor=west}] \draw (4.0,30) to [out=0, in=180] (20,10); \foreach \i/\j in {31/3, 32/4, 33/5, 35/6, 40/7, 50/8} { \draw (4.0,66) to [out=0, in=180] (20,\i) node {Section \j}; } \end{scope} \begin{scope}[x=.5cm,y=.5cm,scale=2,every node/.style={anchor=west}] \foreach \i/\j in {10/1, 30/2} { \draw (4.0,66) to [out=0, in=180] (20,\i) node {Section \j}; } \end{scope} \end{tikzpicture} \end{frame} \end{document}

I also took the liberty of making your code a little bit shorter based on the comments above.

Markus G.
  • 2,735