3

The TikZ rectangle shape has a draw split key "/pgf/rectangle split draw splits=boolean" but in the TikZ manual there is no reference of similar keys for the: circle split, ellipse slipt, circle solidus, etc... By any chance, do similar key exist? If no, any suggestions on how to create them? That is how can we suppress the split line? Is the an equivalent of rectangle split draw splits=false for the other shapes? If not, any suggestions on how to implement it?

The MWE (circle split draw split=false also does not work but for the rectangle as in the manual it does work)

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{external,automata,trees,
 positioning,shadows,matrix,arrows,shapes.geometric,shapes.multipart,trees,
 calc,  fit,decorations.pathmorphing}
 \begin{document}
 \begin{frame}
 \begin{tikzpicture}
  \node [circle split, circle split draw splits=false]
  {test 1  \nodepart{lower} test 2};
  \end{tikzpicture}
  \begin{tikzpicture}
  \node [rectangle split, rectangle split parts=2, rectangle split draw splits=false]
  {test 1  \nodepart{two} test 2};
 \end{tikzpicture}
  \end{frame}
 \end{document}
  • 2
    No reference? Really? Section 67.6 'Shapes with Multiple Text Parts'. First shape: circle split. Second: circle solidus. Next shape: ellipse split. (Page 731 of the 3.0 manual.) – cfr Aug 22 '14 at 21:35
  • @cfr Yes. Really, I read all these pages before posting the question. The rectangle slip draw splits=false works but if you try circle split draw splits=false or circle split draw splits=false pgf says that it does not know the key and is ignoring it. – Sergio Parreiras Aug 23 '14 at 2:50
  • @cfr The question is not about split shapes in general but about a key that allow the split line to be drawn (or not, what is what I am looking for) – Sergio Parreiras Aug 23 '14 at 2:57
  • @PaulGessler: yes of course, adding MWE so people are not so fast to throw the first stone... – Sergio Parreiras Aug 23 '14 at 3:01
  • Well if you provided an MWE or had explained at all, your question might have been somewhat less muddied. I suggest that you edit your title as well as your question body since the obvious answer to that is still 'yes, and they are well documented'. – cfr Aug 23 '14 at 3:03
6

For this, some hacking is required. Unfortunately, due to some inconsistencies in the implementation between the circle split and the ellipse split shapes different methods must be used for both.

If hacking is not desirable, then it might worth considering that a circle split shape with out the "split" drawn is just a circle shape with text stacked vertically inside (with adjustments for spacing to match the separation of the node parts).

\documentclass[tikz,border=5]{standalone}
\usetikzlibrary{shapes.multipart}

\makeatletter
\pgfutil@namelet{pgf@sh@fbg@circle split@original}{pgf@sh@fbg@circle split}%
\newif\ifpgfshapecirclesplitdrawsplits
\pgfshapecirclesplitdrawsplitstrue
\pgfkeys{%
  /pgf/circle split draw splits/.is if=pgfshapecirclesplitdrawsplits
}
\def\pgf@sm@shape@name{circle split}
\pgf@sh@beforebgpath{%
  \ifpgfshapecirclesplitdrawsplits%
    \csname pgf@sh@fbg@circle split@original\endcsname%
  \fi
}


\newif\ifpgfshapeellipsesplitdrawsplits
\pgfshapeellipsesplitdrawsplitstrue
\pgfkeys{%
  /pgf/ellipse split draw splits/.is if=pgfshapeellipsesplitdrawsplits
}
\def\pgf@sm@shape@name{ellipse split}
\pgf@sh@bgpath{%
  \radii%
    \pgfmathaddtolength\pgf@x{-\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathaddtolength\pgf@y{-\pgfkeysvalueof{/pgf/outer ysep}}%
    \pgfutil@tempdima\pgf@x%
    \pgfutil@tempdimb\pgf@y%
  \pgfpathellipse{\centerpoint}{\pgfqpoint{\the\pgfutil@tempdima}{0pt}}{\pgfqpoint{0pt}{\the\pgfutil@tempdimb}}%
  \ifpgfshapeellipsesplitdrawsplits
      \pgfpathmoveto{\centerpoint\advance\pgf@x-\pgfutil@tempdima}%
      \pgfpathlineto{\centerpoint\advance\pgf@x\pgfutil@tempdima}%
  \fi%
}
\begin{document}
\begin{tikzpicture}
\node [circle split,draw] 
  at (0,0) {A \nodepart{lower} B};
\node [circle split,draw,circle split draw splits=false] 
  at (2,0) {C \nodepart{lower} D};

\node [ellipse split,draw] 
  at (0,2) {ABCD \nodepart{lower} EFGH};
\node [ellipse split,draw,ellipse split draw splits=false] 
  at (2,2) {IJKL \nodepart{lower} MNOP};
\end{tikzpicture}
\end{document}

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.