The Omni Group
These forums are now read-only. Please visit our new forums to participate in discussion. A new account will be required to post in the new forums. For more info on the switch, see this post. Thank you!

Go Back   The Omni Group Forums > OmniGraffle > OmniGraffle General
FAQ Members List Calendar Search Today's Posts Mark Forums Read

Create a table of contents for a large document Thread Tools Search this Thread Display Modes
I have a Omnigraffle Pro doc with 60+ canvases, I would like to use OmniGraffle to generate a TOC for the document with autopopulated page names (using the canvas name) and auto update page numbers (in case I add or subtract pages).

Has anyone ever dones this before? Are there examples? :(

Also, is there a function set to get substrings of variables (i.e <% substr(%canvas%, -2, 2) %> or something similar) :confused:

Thanks. I love Omnigraffle! Looking forward to purchasing OmniPlan, too! :D
I'm looking for the same thing. I've always had to create TOCs from scratch...would be nice to have a better way to build them. This way is too time consuming and it requires tedious manual edits any time changes are made.
I concur. TOC functionality would be most helpful the sooner the better.
Sounds like a great feature!! I would use it right now because I have a 150+ canvas document!! Ouch!!!
Yeah, without this feature I don't think I would want to create another large tech document with Graffle. It's great for individual diagrams, but once you start looking at 20+ pages you NEED some kind of automatic table of contents. It doesn't have to be that pretty - just <canvas_name> - <page num> would be good enough for starters. Otherwise I would have to go with Indesign on my next big project. But I really like the Graffle look and feel, so I hope this feature gets added soon!
I apologize in advance for this insanely lengthy post, but while looking for a way to restart page numbering within an OG document at "1" so that I don't have to put my manually-crafted TOC as the last canvas to avoid screwing up the other page numbers, I ran into this thread.

The problem with piling on features like "insert table of contents" is that the ramifications of doing it properly and in a way that meets everyone's needs readily cascades into the evil realm of bloatware.

Is there another way to achieve the same goal, perhaps a more subtle enhancement that we could leverage? I can think of one way...

Suppose in addition to using pre-defined variables, we could define our own variables like this:

<%myvariable="some fixed value"%>
To keep this as simple as possible, let's say that the name you choose for your variable ("myvariable" in this case) cannot be the same as any of the pre-defined variables, and further, that it is an error to define the same variable more than once within the same OG document.

(That neatly avoids several implementation ramifications that I'll refrain from describing here. It should be also be noted that these are not "variables" in that their values are prohibited from varying. Nevertheless, we resist the inclination to call them "parameters" in deference to simplicity.)

Now, we could define a particular variable in one place and use it in many other places. Here's a silly example:

Canvas 1:
Foo is <%foo%>
Canvas 2:
<%foo="hello, world!"%>
Canvas 3:
Foo will always be <%foo%>
These would, of course, show up like this:

Canvas 1:
Foo is hello, world!
Canvas 2:
hello, world!
Canvas 3:
Foo will always be hello, world!
(If I wanted, I could "hide" the definition on Canvas 2 by settings its text color the same as the canvas background color or by putting it in a hidden layer.)

Less silly would be if we could define a variable to take on the value of another variable, particularly one of the built-in ones, like this:

Now things are more interesting:

Canvas 1:
Table of Contents:
<%section1_title%> <%section1_page%>
<%seciton2_title%> <%section2_page%>
Canvas 2:
Canvas 3:
This is the second page of the first section.
Canvas 4:
(I would change the names of canvases 2 and 4, of course, to whatever I wanted to appear in the table of contents.) Although I would need to create variables for each section and manually place them on the table of contents canvas, the table would automatically stay up-to-date as I insert canvases or rename them (which takes advantage of the convention of using the canvas name as a page or section title.) If I were to move sections around, of course, I'd need to manually shuffle the table of contents, but regardless, the page numbers would always remain correct even if I didn't.

One could imagine additional, minor embellishments to take care of some other misfeatures. For example, I use <%Document%> and <%Canvas%> on a master canvas to automatically "title" the pages of my document. Unfortunately, this forces me to omit the ".graffle" from any of these document files' names. What if OmniGroup extended variable assignment to support a few simple functions, for example:

might take the value of the built-in Document variable and replace the trailing ".graffle" with an empty string, effectively removing it.

Back to the "table of contents" problem, there's still one remaining issue, far as I'm concerned. What if I want to force the second page (canvas), that is, the one after the table of contents, to be numbered as page "1"? It would be tempting to do it this way:

Canvas 2:
(Notice how I sneakily assigned the value "1" to the built-in variable "#", which one might assume forces OG to begin numbering pages going forward starting again at "1". But that would require yet another enhancement...)

Then there's the issue of how user-defined variables are interpreted when they appear on a master canvas. Would that be possible given the assumption that defining the same variable more than once in an OG document is prohibited?

Remember what I said at the beginning about cascading ramifications... though I could think of some really cool things to do if we relaxed this restriction a bit, allowed recursive variable substitution, and...
I am a novice. Does this mean the answer is no or yes?
'RDJ' is this already working or is this just how it should possibly work?

I really need a simple way to add title and page at the beginning of the doc, that will change with the doc changes.

Is there a way to do this NOW (deadline tomorrow, document +75pages, way too confusing.)
Originally Posted by seabasstin View Post
'RDJ' is this already working or is this just how it should possibly work?

I really need a simple way to add title and page at the beginning of the doc, that will change with the doc changes.

Is there a way to do this NOW (deadline tomorrow, document +75pages, way too confusing.)
Yes, there is a way to do this now. If you click the canvas pull-down under the window title bar, select the "Master 1" canvas. Anything you draw on this canvas should also appear on all of the remaining canvases.

You can use the text tool to write a title that will appear on each page. While editing text, you may also use Edit / Insert Variable / Page Number to insert a magic incantation that is replaced on the other canvases with the current page number.

(Incidentally, when you print the document, the master canvas itself is not printed as a separate page. Its function is just a "background" for the remaining canvases.)

Once you have made up your master canvas, you can visit the other canvases and see the results, for example, the actual page number. You may need to adjust the spacing of objects on these canvases and/or the master canvas to make everything look good.

At this point, any time you make a change to the master canvas, the change shows up on all of the remaining canvases of the document.

There are other types of "variables" that you can insert, for example, the document name and the canvas name. The nice thing about using the document name variable is that any time you rename the file, the "title" printed on each document would reflect the change.

These can be handy, however, keep in mind that the "document name" variable is the full name of your OmniGraffle document file -- including the ".graffle" suffix, if present. The only way I've found to get rid of that is to rename the file, using Finder, to drop that from the file's name.

Good luck...


P.S. I didn't receive the emailed notification from the Omnigroup forum server about your post until today -- which evidently is past your deadline! Wish I had known sooner. Hope it went well.
I know, it is 2010 and this solution is not in time for your deadline, but at least it is a nice solution for your next projects.

Use AppleScript to create a Table of Contents automatically.

Get it here:

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Similar Threads
Thread Thread Starter Forum Replies Last Post
Automatically create a Table of Contents kparkes OmniGraffle General 1 2013-10-14 02:27 AM
TOC - Table of Contents struktiv OmniGraffle Extras 10 2010-07-19 11:16 PM
HTML Table of Contents uc_student OmniOutliner 3 for Mac 1 2008-12-17 01:31 PM
Table of Contents brazeej OmniOutliner 3 for Mac 1 2008-03-16 01:15 AM
Table of Contents? hcho72 OmniGraffle Extras 0 2007-07-02 05:47 PM

All times are GMT -8. The time now is 12:07 AM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.