MathGroup Archive 2008

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Table of Contents

  • To: mathgroup at smc.vnet.net
  • Subject: [mg85432] Re: Table of Contents
  • From: David Reiss <dbreiss at gmail.com>
  • Date: Sun, 10 Feb 2008 05:18:50 -0500 (EST)
  • References: <foejuo$huu$1@smc.vnet.net> <fogif4$3c1$1@smc.vnet.net>

Correcting a couple of bugs here is a revied version of the function:


ClearAll[TOCForNotebook];



TOCForNotebook[] :=
  Module[{nbr, data, cells, nb},

   nb = EvaluationNotebook[];

   SetOptions[nb, System`CellID -> True];

   SelectionMove[nb, All, Notebook, AutoScroll -> False];
   NotebookWrite[nb, NotebookRead[nb]];

   NotebookFind[nb, "Section", All, CellStyle];
   nbr = NotebookRead[nb];
   data =
    nbr /. {Cell[x_, "Section", ___, z : (CellID -> w_), ___] :> {x,
        w}};

   cells = TextCell[
       Button[TextCell[#[[1]], "Hyperlink"],
        NotebookFind[EvaluationNotebook[], #[[2]], All, CellID],
        Appearance -> "Frameless"],
       "Text"] & /@ data;

   cells = First[ToBoxes[#]] & /@ cells;

   SelectionMove[EvaluationNotebook[], Before, Notebook,
    AutoScroll -> True];

   NotebookWrite[nb, cells];

   ];


--David


On Feb 7, 10:31 pm, David Reiss <dbre... at gmail.com> wrote:
> Here is an example of a function that, when executed in the notebook
> in question, will generate a set fo cells at the top of the notebook
> that are hyperlinks to the section cells:
>
> ClearAll[TOCForNotebook];
>
> TOCForNotebook[] :=
>   Module[{nbr, data, cells, nb},
>
>    nb = EvaluationNotebook[];
>
>    SetOptions[nb, System`CellID -> True];
>
>    SelectionMove[nb, All, Notebook, AutoScroll -> False];
>    NotebookWrite[nb, NotebookRead[nb]];
>
>    NotebookFind[nb, "Section", All, CellStyle];
>    nbr = NotebookRead[nb];
>    data =
>     nbr /. {Cell[x_, "Section", ___, z : (CellID -> w_), ___] :> {x,
>         w}};
>
>    cells = Function[x,
>         TextCell[
>          Button[TextCell[#[[1]], "Hyperlink"],
>           NotebookFind[x, #[[2]], All, CellID],
>           Appearance -> "Frameless"],
>          "Text"]][nb] & /@ data;
>
>    cells = First[ToBoxes[#]] & /@ cells;
>
>    SelectionMove[EvaluationNotebook[], Before, Notebook,
>     AutoScroll -> True];
>
>    NotebookWrite[nb, cells];
>
>    ];
>
> So, first execute this code somewhere in your current Mathematica
> session.  Then execute
>
> TOCForNotebook[]
>
> within the notebook in question.  If your Section cells have any
> formatting in them then this will not quite work as expected.  But it
> gives a start to others that would wish to modify this.  The code
> exposes several coding tricks that folks will perhaps find useful....
>
> -David
> A WorkLife FrameWork
> E x t e n d i n g MATHEMATICA's Reach...http://scientificarts.com/worklife=
/
>
> On Feb 7, 4:44 am, =8Aer=FDch Jakub <Ser... at panska.cz> wrote:
>
> > I use some notebooks as the collections of many small examples, which I
> > allways start with cell styled as "Section" followed by usually one input
> and
> > one output cell. The "Section" styled cell contains the name of the example.  >
> > Does anybody know, how to create Table of Contents based on these section
> > cells? Idealy it would contain interactive hyperlinks directly to the cells.
>
> > Thanks in advance
>
> > Jakub



  • Prev by Date: Re: Table of Contents
  • Next by Date: Re: Table of Contents
  • Previous by thread: Re: Table of Contents
  • Next by thread: Re: Table of Contents