Re: Table of Contents
- To: mathgroup at smc.vnet.net
- Subject: [mg85377] Re: Table of Contents
- From: David Reiss <dbreiss at gmail.com>
- Date: Thu, 7 Feb 2008 22:29:54 -0500 (EST)
- References: <foejuo$huu$1@smc.vnet.net>
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=A0am, =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 exampl=
e.
>
> Does anybody know, how to create Table of Contents based on these section
> cells? Idealy it would contain interactive hyperlinks directly to the cell=
s.
>
> Thanks in advance
>
> Jakub