4

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}
6
  • 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, 2014 at 21:35
  • 1
    @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. Aug 23, 2014 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) Aug 23, 2014 at 2:57
  • @PaulGessler: yes of course, adding MWE so people are not so fast to throw the first stone... Aug 23, 2014 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, 2014 at 3:03

1 Answer 1

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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .