Bug introduced in V10.4 or earlier and persisting through V11.3
Background
This question originates from two already posted questions updated with further doubts I've faced. I deleted one and merged content here.
Those issues are closely related, hard to separate and probably could be caused by the same internal features so I decided to make one question
CellGroupData assumptions
First of all, according to tutorial/TheStructureOfCells a cell of the form Cell[CellGroupData[...],...]
is a valid Cell
so in my opinion we should expect consistent behavior.
CellGroupData
second argument allows to specify which cells are visible. It could be Open
, Closed
, {cells indices}
, or even {}
to show no cell.
That is not the case in general:
Issues
Inner
CellGroupData
expression are transparent to parent's visibility spec:CellGroupData[ { Cell[...] , Cell @ CellGroupData[...] , Cell[...] } , {2} ]
I'd expect the structure above to show only and exactly what
Cell @ CellGroupData[...]
contains.It is not the case, the outer
CellGroupData
can't handle nested structure this way and just goes into deeperCellGroups
which is unintuitive and contradictsCellGroupData
documentation.Try yourself
Notebook[ { Cell @ CellGroupData[ { Cell["1", "Text"] , Cell @ CellGroupData[ {Cell["2-1", "Text"], Cell["2-2", "Text"]}] , Cell["3", "Text"] } , {3} ] } , CellGrouping -> Manual , ShowGroupOpener -> False ] // NotebookPut
Visibility spec problem for single cell
CellGroupData
But if the group contains only one cell the
{}
visibility spec does not work:Notebook[{ Cell @ CellGroupData[{ Cell["Group 1", "Chapter"] }, Open], Cell @ CellGroupData[{Cell["Group 2", "Chapter"]}, {}] }, CellGrouping -> Manual ] // NotebookPut
Add a second cell to the second group and it will disappear!
Cell @ CellGroupData
as a first cell inCell @ CellGroupData
When the first cell in a group contains another
CellGroupData
then the parentCellGroupData
is confused.Not only
{}
will still show whole group but even giving specific{1}
cell position fails.Notebook[{ Cell @ CellGroupData[{ Cell["Group 1", "Chapter"] }, Open], Cell @ CellGroupData[ { (*Cell["","Text"],*) (*uncomment this cell and everything is ok*) Cell @ CellGroupData[{ Cell["Group 2", "Chapter"], Cell["Group 2", "Text"] }] , Cell["text", "Text"] } , {2} ]} , CellGrouping -> Manual ] // NotebookPut
Deletion of
CellGroups
inEditable -> False
notebookYou can delete each cell one by one, even those from the cell group. But if you try to delete after selecting group bracket you will get a beep and won't be able to delete it.
CreateDocument[ { Cell @ CellGroupData[{ Cell["1", "Text"] , Cell["2", "Text"] }] , Cell["2", "Text"] } , CellGrouping -> Manual , Editable -> False ]
Whatever editable means, this is at least inconsistent.
Further reading
related to cell structure
- Any manual on cell grouping management?
- Cells[] ignoring multiple style cells
- NotebookImport ignoring multiple style cells
Questions
How to understand cell groups behavior? Seems detached from 'cells framework' for me. Not to mention a minimal documentation.
Classification of faced 'issues' will be appreciated.
CellObject
that heads a cell group, thatCellObject
remembers itsCellGroupData
visibility spec. See this for what caused me such confusion. $\endgroup$