I have some long workflows where the current method of sectioning and expand/collapse is becoming tedious.

I would like to create a workbook type notebook; a notebook that owns fully functioning child notebook objects that share the same context (not Global` ). This would result in a Needs or symbol evaluated on one child notebook object being available to all child notebook objects. These child notebooks could be placed in something like a TabView to switch between child notebooks. The parent notebook would not take any input but merely be a means of containing the child notebooks; it would have the menu bar that the child notebooks use.

Presenter Approach (2nd attempt)

From the comments I believe I might be able to achieve this by creating a stylesheet based on the default presenter stylesheet. My attempt was to create a stylesheet from the default presenter stylesheet but override the styles with the default notebook styles.

 ScreenStyleEnvironment -> "Slideshow Working",
 StyleDefinitions ->
      StyleDefinitions -> 
       FrontEnd`FileName[{"PresenterTools"}, "Default.nb", 
        CharacterEncoding -> "UTF-8"]]],
    Sequence @@
         StyleDefinitions -> 
          FileNameJoin[{$InstallationDirectory, "SystemFiles", 
            "FrontEnd", "StyleSheets", "Default.nb"}]]] &,
       "Title", "Subtitle", "Subsubtitle",
       "Chapter", "Subchapter",
       "Section", "Subsection", "Subsubsection",
       "Item", "SubItem", "Subsubitem",
       "Text", "SmallText",
       "Input", "Output",

However, the stylesheet for the notebook created from the above code does not contain the standard workbook default styles. Also I would have to be in the "Slideshow Working" screen environment to add a new slide but would prefer to stay in the "Slideshow Presentation" screen environment.

With this method how do I get the presenter styles to be overridden with the default styles? Also, how I do get a list of all the default styles programmaticly?

TabView Approach (1st attempt)

I believe the first hurdle is to get a notebook to site in a TabView perhaps in a Pane or a Panel. However, my attempts with CreateNotebook does not result in the notebook rendering in the pane. Instead the object placeholder is shown.

nb = CreateNotebook[];
boxes = ToBoxes[nb];

I have tried



With this method are there any ideas how to get a fully functional notebook object to site in a Pane or Panel in a TabView in order to create a workbook type notebook (like Excel tabs but each tab is a notebook that shares the same context with all the other tabs)? I do think the presenter route may be best.

  • $\begingroup$ That is quite broad, could you try to create a list of features that are essential? E.g. from your description a tabview-like menu for managing sections would fit your needs too. And it does not require managing shared context etc. But maybe it is not suitable, or is it? $\endgroup$
    – Kuba
    Jul 19 '18 at 15:28
  • $\begingroup$ Or why not a slideshow where each slide is a separate 'workbook' and you have automatically generated menu with contents. $\endgroup$
    – Kuba
    Jul 19 '18 at 15:29
  • $\begingroup$ @Kuba A slideshow/presenter notebook is very close to what is needed. Add aligning the slide tabs at the top or bottom of the notebook, having only the "slide" of the selected tab visible, and having the cell styles as in the default notebook stylesheet instead of slideshow style sheet. All this in the "Working" Screen Environment. $\endgroup$
    – Edmund
    Jul 19 '18 at 15:39
  • $\begingroup$ I don't personally think I would do this. The solution to most problems of complexity should be packages. That said, you may be interested in solutions people have come up with for tabbed notebooks. stackoverflow.com/questions/8778774/… and mathematica.stackexchange.com/questions/49339/… $\endgroup$
    – Searke
    Jul 19 '18 at 16:58
  • $\begingroup$ @Searke However, is it not simply a style sheet problem approached as editing the presenter stylesheet? It already has most of the functionality. $\endgroup$
    – Edmund
    Jul 19 '18 at 18:34

Your Answer

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

Browse other questions tagged or ask your own question.