10

This is the code I have:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes}
\begin{document}
\tikz \node[rectangle split, rectangle split parts=2]
  {first\nodepart{second}second\linebreak{}third};
\end{document}

Second and third lines are glued to each other. When I'm adding text width=5em to the style of this node — everything works fine. How can I make this \linebreak work, without explicit specification of the node width? Thanks.

lockstep
  • 250,273
yegor256
  • 12,021

3 Answers3

11

As long as you set an alignment for the text, you can use \\ without needing a tabular environment.

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes}
\begin{document}
\tikz \node[rectangle split,draw,rectangle split parts=2,align=center]
  {first\nodepart{second}second\\third};
\end{document}

output of code

Alan Munn
  • 218,180
3

There following example works here:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes}
\begin{document}
\tikz \node[rectangle split,draw,double]
  {first
    \nodepart{second}
    second
    \nodepart{third}
 third
};
\end{document}

With \nodepart you don't need a linebreak.

qbi
  • 2,070
1

You could use a simple tabular environment, so you can get a line break without specifying the width, further you can define alignment. For example, together with draw option to see the node parts:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes}
\begin{document}
\tikz \node[draw,rectangle split, rectangle split parts=2]
  {first\nodepart{second}
  \begin{tabular}{@{}c@{}}second\\third\end{tabular}};
\end{document}

multi line node

Stefan Kottwitz
  • 231,401