Archive for May, 2007

LiveDocs coming soon

Anne-Marie Concepcion gave a big thumbs-up to the new LiveDocs feature for Photoshop:

In Photoshop CS3’s help pages, if you click on any "This page on the
web" link at the bottom of a help page; you arrive at a page at
"livedocs.adobe.com" … the same help page but with the ability to
add a comment to the documentation, to follow those comments via RSS
or get emailed when people add comments to it.

So very, very cool!

When are we (InDesign users) getting livedoc help pages? AFAIK it’s
only the Photoshop ones.

I have learned from the documentation people that LiveDoc pages for InDesign, InCopy, and Bridge are coming soon. I didn’t get an exact date, but it sounds like you won’t have to wait too much longer.

Book Alert: Body Type

I just discovered a very cool book by the fabulous Ina Saltz.
If you’re into all things to do with type and typography, and you’d like a provocative, conversation-starter kind of coffee table book, then check out Body Type, Intimate Messages Etched in Flesh.

Released back in September of 2006, this is, without a doubt, the best book documenting typography in tattoos that I have ever seen (still waiting for Tom Phinney’s definitive treatment, which would include proposals for cost-effective and humane methods of implementing reflowable type in tattoos, and the ethics of force justification.)

The genesis of Ina’s project was a tattoo of the word “Happy” that she spotted on a young man on a cross-town bus. She recognized that the tattoo was done in Helvetica and then took note of the tight kerning. After mustering the courage to talk to the owner, she learned that he was a graphic designer. The more Ina explored the subject of typograhpy in tattoos, the more interesting it became. This book is a collection of tattoos and commentary arranged by subject matter:

  • Literature, Poetry, & Lyrics
  • Typography
  • Self Expression
  • Self Love
  • Love
  • Politics
  • Religion
  • Belief Systems
  • Homage

  This book makes me wonder if the lack of a series of Body Art templates is a glaring oversight on our part…

Export All Stories Script

I recently posted this useful script by Olav Kvern on another forum, but thought I’d post it here as well so that more users would be aware of it.

This script extracts all the separate stories in an InDesign document, concatenates and saves them into a single text file. When you do the export you have your choice of formats (.txt, .rtf, and tagged text), and whether or not you want separator lines inserted between the stories.

This script can be very useful when you want a quick and efficient way to re-purpose the text content of an InDesign document in another application.

To use the script, just copy and paste the javascript code below into a text editor and save it as a text only file with a .jsx extension. Then put it in your InDesign Scripts folder. This script was written for InDesign CS3, but runs on CS2 as well (on both Mac and Windows, because it’s a javascript).

 

//ExportAllText.jsx
//An InDesign CS3 JavaScript
//
//Exports all of the text in the active document as a single
//text file. To do this, the script will create a new document,
//combine the stories in the new document using export/import,
//and then export the text from the new document.
if(app.documents.length != 0){
if(app.documents.item(0).stories.length != 0){
myGetFileName(app.documents.item(0).name);
}
}
function myGetFileName(myDocumentName){
var myFilePath = File.saveDialog("Save Exported File As:");
if(myFilePath != null){
myDisplayDialog(myDocumentName, myFilePath);
}
}
function myDisplayDialog(myDocumentName, myFilePath){
//Need to get export format, story separator.
var myExportFormats = ["Text Only", "Tagged Text", "RTF"];
var myDialog = app.dialogs.add({name:"ExportAllStories"});
with(myDialog.dialogColumns.add()){
with(dialogRows.add()){
with(dialogColumns.add()){
var myExportFormatDropdown = dropdowns.add({stringList:myExportFormats, selectedIndex:0});
}
}
with(dialogRows.add()){
var myAddSeparatorCheckbox = checkboxControls.add({staticLabel:"Add separator line", checkedState:true});
}
}
var myResult = myDialog.show();
if(myResult == true){
var myExportFormat = myExportFormats[myExportFormatDropdown.selectedIndex];
var myAddSeparator = myAddSeparatorCheckbox.checkedState;
myDialog.destroy();
myExportAllText(myDocumentName, myFilePath, myExportFormat, myAddSeparator);
}
else{
myDialog.destroy();
}
}
function myExportAllText(myDocumentName, myFilePath, myExportFormat, myAddSeparator){
var myStory;
var myTempFolder = Folder.temp;
var myTempFile = File(myTempFolder + "/tempTextFile.txt");
var myNewDocument = app.documents.add();
var myDocument = app.documents.item(myDocumentName);
var myTextFrame = myNewDocument.pages.item(0).textFrames.add({geometricBounds:myGetBounds(myNewDocument, myNewDocument.pages.item(0))});
var myNewStory = myTextFrame.parentStory;
for(myCounter = 0; myCounter < myDocument.stories.length; myCounter++){
myStory = myDocument.stories.item(myCounter);
//Export the story as tagged text.
myStory.exportFile(ExportFormat.taggedText, myTempFile);
//Import (place) the file at the end of the temporary story.
myNewStory.insertionPoints.item(-1).place(myTempFile);
//If the imported text did not end with a return, enter a return
//to keep the stories from running together.
if(myCounter != myDocument.stories.length -1){
if(myNewStory.characters.item(-1).contents != "\r"){
myNewStory.insertionPoints.item(-1).contents = "\r";
}
if(myAddSeparator == true){
myNewStory.insertionPoints.item(-1).contents = "—————————————-\r";
}
}
}
switch(myExportFormat){
case "Text Only":
myFormat = ExportFormat.textType;
myExtension = ".txt"
break;
case "RTF":
myFormat = ExportFormat.RTF;
myExtension = ".rtf"
break;
case "Tagged Text":
myFormat = ExportFormat.taggedText;
myExtension = ".txt"
break;
}
myNewStory.exportFile(myFormat, File(myFilePath));
myNewDocument.close(SaveOptions.no);
myTempFile.remove();
}
function myGetBounds(myDocument, myPage){
var myPageWidth = myDocument.documentPreferences.pageWidth;
var myPageHeight = myDocument.documentPreferences.pageHeight
if(myPage.side == PageSideOptions.leftHand){
var myX2 = myPage.marginPreferences.left;
var myX1 = myPage.marginPreferences.right;
}
else{
var myX1 = myPage.marginPreferences.left;
var myX2 = myPage.marginPreferences.right;
}
var myY1 = myPage.marginPreferences.top;
var myX2 = myPageWidth – myX2;
var myY2 = myPageHeight – myPage.marginPreferences.bottom;
return [myY1, myX1, myY2, myX2];
}


The Non-Joiner Character

One of the new features in InDesign CS3 is the addition of the Non-joiner special character. This character is available via both the Type menu and the text contextual menu via the Insert Special Character command.

If you’ve wondered about the purpose of this special character (no, it’s not a zero-width, anti-social, loner*), here it is: the Non-joiner either breaks or prevents the automatic contextual substitution of special letterforms like ligatures and OpenType’s contextual alternates.

So, if it’s the case that you’re setting your type, you need automatic ligatures and contextual alternates, but you want to make an exception at a particular point in your text, you just drop in the Non-joiner, and it will function like a chaperone at a 50’s highschool dance that prevents any undesirable coupling:

In this example, the OpenType font Bickham Script wants to connect the “o” and the “S” with a contextual alternate with a connector. By inserting the Non-joiner, the contextual substitution is prevented. Also note the symbol that’s used to represent the Non-joiner when you turn on “Show Hidden Characters.”

 

*This joke courtesy of Adobe’s Mike Richman

Shortcut Custody Battles

A Mac InDesign user named Tom asks a good question on InDesign Secrets:

In CS2 I used the shortcut for Hide Frame Edges (cmd+H). With CS3 this is now ctrl+cmd+H. I went to edit this in keyboard shortcuts but I can’t enter cmd+H as it is the default for Hide InDesign and hides the application.

Any ideas? or am I stuck with the new CS3 shortcut?

The short answer is “yes.” You’re stuck. We’re all stuck. I feel your stuckness.

The reason is this: we made a conscious decision to respect the integrity of Apple’s system-wide shortcut. It was felt the Hide shortcut should work in all applications, so we abandoned our efforts to co-opt the shorcut from the OS (which required some code that the Mac OS might consider somewhat rude and intrusive). So, as of CS3 InDesign doesn’t even receive the cmd+H event (i.e., it’s ignored).

Sometimes an easter-egg is just an easter-egg

In response to some of the discussion of the About InDesign easter-egg on the utterly indispensable InDesign Secrets web site, here’s some technical information and some reminders about the nature of reality:

The purpose of this InDesign CS3 easter-egg is to commemorate the passing of the InDesign butterfly icon in favor of the periodic table style minimalism of the CS3 product line. We didn’t want to let the butterfly era pass without comment, and thought it worth commemorating in an informal, tongue-in-cheek way.

Second, there are no complex shortcuts that trigger events or effects. Cmd/ctrl+option/alt+click on the top of a mountain doesn’t make either a yeti or a Starbuck’s appear. Clicking on a butterfly pins it. Pinning several butterflies triggers the alien. Option/alt+click on a butterfly (pinned or unpinned) or an alien “kills” it (see the further explanation below).

It is also important to note that no actual butterflies or aliens were/are injured in the development and/or use of this easter-egg. These are digital representations of butterflies and aliens (and alien spacecraft), not actual butterflies or aliens (or alien spacecraft). Therefore any concerns expressed about cruelty to insects (or aliens), cultural predispositions to violence, etc., are indications that those expressing them are conflating digital and non-digital realities, and need to get more of a life beyond the boundaries of their computer screens.

Here are my responses to some of the comments on InDesign Secrets:

Argh! Alien invasion! Poor butterflies! Isn’t there a law against that sort of thing?

No.

Or was that a law against wasting valuable time playing with InDesign easter eggs?

No. Fortunately easter-egg usage is, as yet, unregulated by state and federal agencies. Check with your own HR department for any applicable corporate policies.

How mean! Not funny at all. Poor butterflies … symbols of colors, diversity, freedom and creativity — now nailed down and helpless …

Well, you’re right about the symbolism…that’s why the butterfly was chosen as the original symbol for InDesign.

But if you’re really worried about the well-being of your digital butterflies, you’ll find that not only can you release your pinned butterflies by clicking on them again, you’ll also see that closing and opening the easter-egg again liberates them all, and you can let them fly free on your display for hours on end. In fact, you’ll be comforted to know that even when the easter-egg window is closed, they’re still fluttering in a free and self-actualizing way inside your display…you just can’t see them. Seriously…even in a flat panel.

The only thing that “kills” these digital beauties is the alien… what, you haven’t seen the alien yet?

That’s not correct. Option/alt+clicking also “kills” a butterfly (pinned or unpinned)…but they’re not really dead (as restarting the easter-egg demonstrates). They’re acting. We were actually turning butterflies away from this gig, because they all wanted a shot at doing the "best" death flutter. It actually got so competitive that some feelings got hurt.

What is it with text publishing and butterflies ? Even WordPerfect back in the early 1990’s used a butterfly.

Couldn’t tell you. All I know is that for whatever reason, it came down to a butterfly or a deluxe burrito, and we ran with the butterfly.

Wow, this Easter Egg has deep meanings.

No. It doesn’t (just in case readers miss Sandee’s sarcasm). The easter-egg does, however, function as kind of an ink blot that reveals the inner depths (and sometimes turmoil) of those that interpret it. ;^)


Celebrity Keyboard Shortcuts: Diane Burns

Diane Burns is one of the founders of TechArt one of the very first Macintosh-based graphic design and "desktop publishing" firms in the country. She’s a consultant, author, and conference speaker (among many other things), and is a specialist in double-byte language publishing. She is the only person I know who can credibly claim the title of the "Mother of Desktop Publishing" in Japan.

Diane shared this keyboard shortcut tip:

  • Set
    Toggle between Preview and Normal View to Option/Alt+W. [Product Area: Tools; Command: Toggle between Preview and Normal View]

  • The default keyboard shortcut is the W key, which forces you to use the mouse to enter Preview Mode, or switch out of the Text tool in order to use the keyboard shortcut. Diane’s change enables you toggle in and out of InDesign’s very useful Preview Mode easily with the text tool selected.

Celebrity Keyboard Shortcuts: Sandee Cohen

Sandee Cohen (aka. Vector Babe) is the author of many fine books, including the definitive InDesign Visual QuickStart Guides. If you’re new to InDesign, carpe Cohen! (sieze the Babe)–you need this book.

Here are Sandee’s insights and tips for modifying your InDesign keyboard shortcuts:

  • I always use the Mac ctrl key because it is never used by an Adobe shortcut. I wish there was a similar key I could use for Windows. This reminds me that I wish Adobe made a keyboard for Windows that would give those users an extra key for shortcuts, etc.
  • I add a Contextual Text shortcut to the Selection Tool so that I can easily switch to the tool when within a text frame. This shortcut is ctrl+V to make it easy to remember. [Product Area: Tools; Command: Selection Tool; Context: Text]
  • Contextual shortcut to Direct Selection tool ctrl+A. [Product Area: Tools; Command: Direct Selection Tool; Context: Text]
  • I add shortcut for Select Container, ctrl+C. [Product Area: Object Menu; Command: Select Container]
  • I also add shortcut for Select Content, ctrl+option+C. [Product Area: Object Menu; Command: Select Content]
  • I add ctrl+E for End Nested Style Here as I use it in the captions for my Visual QuickStart books. [Product Area: Type Menu; Command: Insert Special Character: Other: End Nested Style Here]
  • I have added another shortcut to Select to End of Story (ctrl+Down Arrow), because I often work on a laptop keyboard that is difficult to use with the the factory shortcut. [Product Area: Text and Tables; Command: Select to End of Story]
  • I also have added ctrl+` (under the tilde) to swap the character and paragraph attributes in the Control Panel. I use that key because it’s all the way over under that area of the screen. I find the factory shortcut impossible to remember.[Product Area: Views and Navigation; Command: Toggle Character and Paragraph Modes in Control Panel]
  • On a related note, I have changed Illustrator’s cmd+D for Transform Again to cmd+option+3 to match InDesign’s. And then I added a keystroke for Illustrator’s Place command to match InDesign’s. I use the Place command in both programs so often I felt it easier to have consistency across the suite.

Celebrity Keyboard Shortcuts: Gary Cosimini

This is the first of a series of posts in which I share the favorite InDesign keyboard shortcut edits of powerful and influential InDesign and InCopy pundits.

If you know much about InDesign and InCopy, you know that both applications have a keyboard shortcut editor that enables you to customize the shortcuts for tools, menu commands and otherwise hidden features. If you haven’t explored the keyboard shortcut interface, then you’re missing out on quality-of-layout-life enhancing swellness that’s been there for you since version 1.0.

There are many reasons for the implementation of this feature, but here are a couple of the main ones:

  1. There are more commands than there are available keyboard shortcuts, so it only made sense to give the user the ability to pick and choose how those precious keyboard shortcut resources are allocated.
  2. Different users and different types of jobs mean that one size really doesn’t fit all, and InDesign enables you to store different keyboard shortcut sets that can be optimized for different users and different types of work.

So, in the interest of fostering the exercise of individual keyboard shortcut liberty across the global InDesign user community, I have solicited keyboard shortcut tips and insights from some of the world’s best InDesign users.

The first featured power user is Adobe’s own Gary Cosimini.

Gary’s recommended shortcuts are defined for the Mac, but can be easily adapted for Windows users.

  1. A KBSC to access Edit Keyboard Shortcuts! (Cntrol+Opt+Cmd+K) [Product Area: Edit Menu; Command: Keyboard Shortcuts…]
  2. A KBSC to Fill with Placeholder Text (Cntrol+Opt+Cmd+P) [Product Area: Type Menu; Command: Fill With Placeholder Text]
  3. A KBSC for the No Break setting to prevent a range of text from hyphenating (Cntrol+Opt+Cmd+B) [Product Area: Panel Menus; Command: Character: No Break]
  4. A KBSC to bring next document window to the foreground–extremely useful if you have multiple documents open at the same time. [Product Area: Views & Navigation; Command: Next Window]

If you have favorite InDesign or InCopy keyboard shortcut hacks that you’d like to share with the world, send them to me in a comment.

When bad things happen to good script panels…

The other day most of my cool scripts for InDesign CS3 just suddenly quit working. Without any warning or explanation, they just stopped executing themselves, rendering my scripting palette an inviting but mostly inert list of good productivity intentions. This not the sort of behavior one expects or appreciates from one’s favorite application, and I have to say that I took it rather personally. Betrayal may be too strong a word, but if you’ve ever loved and lost your scripts, you know what I mean.

Fortunately, scripting deity Olav Kvern was in his office and was kind enough to diagnose my problem immediately. It seems that somehow InDesign’s scripting preferences had been altered without my knowledge…and that’s the way it will most likely happen to you as well.

InDesign’s scripting guides explain it in a bit more detail, but the short version is that you can tell InDesign (via a script, of course) whether or not to allow alerts and dialog boxes to be displayed when a script is executed. This can be a very useful thing to tweak when you’re running scripts that know exactly what they’re doing and can’t be bothered by unwanted alerts and other unnecessary interruptions by InDesign. On the other hand, turning off this setting can also block the execution of any script that wants to generate an alert or dialog box within InDesign. Dang.

It’s an important requirement of good scripting hygiene to restore alert and dialog generation if you’ve exercised the option of turning it off for the purposes of executing a script in the most efficient way. It’s analogous to turning off one of the breakers in your electrical panel in order to install a new light fixture or perform a repair —if you want lights to be able to come back on when you need them, you need to flip the breaker switch back to the ‘on’ position when you’re done with your repair.

What probably happened to me was that I ran a script that altered the userInteractionLevel property, but neglected to restore it to its original state as part of the completion of its mission. The fix is to run a script that restores that setting to its proper state.

Here’s the javascript you need should this ever happen to you:

app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;

Copy and paste this text into a text editor and save it into InDesign’s scripts folder with a name that describes what it does. Olav named mine RestoreUI.jsx. All it does is restore the user interaction script preference to its original, fully functional state.