I build a lot of presentations and custom notebooks with very different stylesheets, and use Button and CreateDocument quite often to accommodate optional/procedurally generated content. For instance,

Map[Button[Style[ToString[#] <> " random images", "Text"], 
          {Cell["Here are " <> ToString[#] <> " random image(s)", "Title"],             
           ExpressionCell[Column@Table[RandomImage[2, {200, 200}], {#}],
           "Output"]}]] &,

What I'd like to do is specify that the notebook generated by CreateDocument inherits the StyleSheet from the parent notebook, without having to save the StyleSheet and provide the StyleSheetPath Option in the CreateDocument function each time I change a style.

I imagine there's an undocumented feature, but haven't found it in my brief searches of StackExchange.


Add the following option to your CreateDocument call:

StyleDefinitions -> 
 CurrentValue[EvaluationNotebook[], StyleDefinitions]

This works for both embedded stylesheets and stylesheets on the StyleSheetPath. In this case, I use EvaluationNotebook to refer to the notebook containing the button but it could, of course, be whatever NotebookObject you wish to refer to.

  • $\begingroup$ Well, I should've thought of that. Thanks, John! $\endgroup$ Jan 8 '13 at 12:20

Your Answer

