[Tex/LaTex] Are there “draw split” keys for other split shapes besides the rectangle split

tikz-pgftikz-shape

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}

Best Answer

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