Thursday, February 28, 2008

How do I create my own Color Palette?

Sometimes you may want to use a limited number of colours for a document. Let's for example say that you want certain words in blue. If you use the standard Color Wheel in the color window (View > Show Colors), you may end up with slightly different shades of blue, depending on where you click.


To be sure that you always select the same colour, you can drag colours from the rectangle next to the magnifying glass to the strip at the bottom of the window.



The strip contains 15 squares by default, and that should be more than enough for most people. However, if you need more, you can drag the the dot below to make room for more squares.



You may need several sets of colours. Let's for example say that you want one particular set of three colours in one document but another set of three colours in another document. You can handle that as well in the Color window, using the third tab, called "Color Palettes".



Here you can choose between a few pre-defined palettes, like Apple, Web Safe Colors or Developer, but you can also create your own ones, clicking on the wheel, and choosing "New".



You can of course rename both the colours and the colour palettes to whatever names you like.




So, how do you select colours for your palettes? You can do this in (at least) two ways.

One is to click on the magnifying glass and then click on an area of the screen that has a colour you want to capture.



The other method is to select a colour using one of the other icons on the top. Then go back to the "Color palettes" icon.

After you have selected a colour, you drag it into the empty area of your palette or click on the + button. That's it. You do not even have to save, as the colour palette has auto-save (in contrast to Pages documents).

Tuesday, February 26, 2008

What are the most frequent of the frequent questions?

It is very difficult to tell what the most frequently asked questions are about Pages. Looking at Apples Discussion forums one can get one impression. Looking at this blog a different one.

This is a graph of the most common keyword categories that have led people to this blog this February 2008:



The most common keyword is about a missing function: autosave. One out of eight people who find this site with a search engine come here because they miss an autosave function.

The next keyword is about possibilities: applescript. That is actually good news - people want to extend and adapt the program for their own needs.

The following point, however, is again about a missing function: wordart. It may be questionable if it would make sense to include a word art module in Pages, but it is not questionable if it is an often wished for function.

The next one is again about missing functionality, but it is not missing in Pages itself. A lot of people ask for means to read Pages files on Windows or on Macs, where Pages is not installed. Most often, what they dream of is a viewer.

The following three points, rotations (of graphics, tables, text), attachments to mails and a mean to set a default font, are all available, but the user interfaces of Pages and Mac OS X are not intuitive enough for everyone to find the functions.

The last one in the diagram is password protection, something many programs offer from within the program itself. When it comes to iWork, however, password protection has to take place in an external program, Disk Utility.

There are plenty of other searches that lead to this blog - about fonts, typography, colour schemes, Japanese features, and so on.

My own wish would be that Pages one day will be so intuitive and powerful that this kind of blog has no purpose any more. However, that does not seem to happen any time soon.

Sunday, February 24, 2008

Why can't I Copy a Character Style?

Sometimes the menu item Format > Copy Character Style is greyed out, even though you know you have changed something in the formatting.

The most likely reason is that you changed formatting for the paragraph, but not for the character - at least not directly.

Here the paragraph is selected:
Note the character at the end of the word.

Here just a word is selected:
Change formatting for the paragraph, and the Character Style is not updated. Change formatting for a word or individual characters, and the Character Style is updated and can be copied.

Thursday, February 14, 2008

Smart quotes, do they work?

In Pages Preferences > Auto Correction, you can select "Use smart quotes", which automatically turns " to “ or ” depending on the context, so "hello" becomes “hello”. This works fine for English. However, in many other languages the rules are different so quotation marks and apostrophes can be some of the following characters in different combinations:

‚ „ ’ ” “ « » ‹ ›

Smart quotes work the English way, when you run Pages in English or any other language except German. When you run it in German it applies the quotation marks like this: „hallo“, which is correct for German.

Pages gets this information from the language in System Preferences > International > Language. It does not get it from the language set in the Inspector > Text > More.

This is sometimes exactly what you want. If you write an English text and add a German quotation, you may not want a German Anführungszeichen for that single phrase.

In many cases you have to type the characters manually. This is the case if you want to type «guillemets», like in French or Italian.

To find out how to type a character with your particular keyboard layout, use the Keyboard Viewer.

Wikipedia has much more information regarding the use of quotation marks or apostrophes.

Sunday, February 10, 2008

How do I select all instances of font X?

Paste and run the following script in Applications > AppleScript > Script Editor:
tell application "Pages"
select (every character of body text of front document whose font name is "Times-Roman")
end tell
Note that the font name may not be what you expect. The script above searches for the font "Times", even though the name in the script is "Times-Roman". If you type just "Times", it will not work.

If you need help to see what font name AppleScript expects, mark the first word of Pages front document in the desired font, and run this script:
tell application "Pages"
display dialog (font name of word 1 of body text of front document as string)
end tell


(Sorry for the bad formatting above. Blogspot is not made to display source code. However, even if you cannot see the last characters on all rows, they should paste fine when you copy them.)

Saturday, February 09, 2008

Resizing pictures with AppleScript

If you resize a picture inside a Pages document, it will just look like it is smaller. In reality, it takes up as much diskspace as before. You have not lost any information. However, sometimes you really need to free up some diskspace, and you need to resize the picture for real. The most obvious tool to do this is Preview (Tools > Adjust size).

However, there are a few other options to use. The following is a script to resize pictures using AppleScript only. There is no real UI at all. It resizes the image to the value of "targetSize" - in this case 240. If you want to resize it to some other value, just change the script.

1. Open Applications > Utilities > Applescript Editor. (Path in older versions of Mac OS X: Applications > Applescript > Script Editor.)

2. Create a new script and paste the following code:
on open theImages
repeat with anImage in theImages
tell application "Image Events"
--Set the maximum dimension of the picture.
-- If it is in landscape mode, it is the width.
-- If it is in portrait mode, it is the height.
set the targetSize to 240
set currentImage to open anImage
set imageType to currentImage's file type
scale currentImage to size targetSize
tell application "Finder" to set newImage to (container of anImage as string) & "scaled " & (name of anImage)
save currentImage in newImage as imageType
end tell
end repeat
end open
3. Save the script as an "Application".

4. Drag your image to the new script Application.

You will get a new file with the new dimension.

If you prefer to scale to a certain percentage, use this script instead:
on open theImages
repeat with anImage in theImages
tell application "Image Events"
-- Set the variable targetSize to the scale factor. 0.5 means 50%.
set the targetSize to 0.5
set currentImage to open anImage
set imageType to currentImage's file type
scale currentImage by factor targetSize
tell application "Finder" to set newImage to (container of anImage as string) & "scaled " & (name of anImage)
save currentImage in newImage as imageType
end tell
end repeat
end open


The accepted image formats are BMP, JPEG, JPEG2, PICT, PNG, PSD, QuickTime Image and TIFF.

If you feel more comfortable with Automator, you can use that as well.

Friday, February 08, 2008

Resizing pictures with Automator

If you resize a picture inside a Pages document, it will just look like it is smaller. In reality, it takes up as much diskspace as before. You have not lost any information. However, sometimes you really need to free up some diskspace, and you need to resize the picture for real. You have to do that outside Pages. The most obvious tool to do is Preview (Tools > Adjust size).

However, there are a few other options to use. One is to use Automator.

1. Open Automator from your Applications folder.
2. Select "Custom" as starting point.


3. Click on Photos > Scale Images, and drag that icon to the empty workflow area to the right.
4. When you get a question if you want to add a Copy Finder Items action, accept it with "Add".


5. Set the scaling factor to the size or percentage you want to use.


6. Save the workflow as an Application - not a Workflow, which is the default in the Save dialog.


7. Drag an image to the new Automator workflow application.


You will get a new copy with the defined scaling. If you want to change scaling, you do not even have to leave Automator. Just open the workflow application in Automator by dragging it on the Automator icon. Change the value and save, and you are ready to scale again.

This will work with for example jpeg, png, tif or psd files.

It will not work for gif or raw image files.


If you want even more flexibility, you can use these AppleScripts.

Saturday, February 02, 2008

How do I display page numbers with Roman numerals?

Right click (or control-click) on an inserted page number and select the numbering type you want.

Friday, February 01, 2008

Where is the "Normal View"?

In Pages '09, version 4.0, the "Normal View" is in the menu View > Enter Full Screen.

The following was written for previous version of Pages.

In some applications, there is a mode in which you can ignore formatting and margins and concentrate completely on the text content. The most well known such mode is probably Microsoft Word's "Normal View". Even a dedicated layout program like Adobe InDesign has its "Story Editor". Unfortunately Pages has nothing like that. There is no way to hide margins and page breaks.

There are a few other programs that have a full screen view, where all distractions on the screen are hidden even more efficiently than in Word or InDesign. In these programs you see the text and nothing else. Even the menus are gone. Examples of such applications for Mac OS X are Scrivener, Nisus, WriteRoom and CopyWrite. None of them is free.

The Poor Man's Solution

However, there is also a free solution. You may not like it, but I will tell you anyhow. It is to go back to the stone age before graphical user interfaces. Follow these steps:
  1. Log out.
  2. Highlight one of the users, and type alt-Enter. You will now get fields to type Name and Password instead of choosing them from a list.
  3. In the Name field, type ">console" (without the quotation marks). Leave the password field blank.
  4. Press Enter. You are now in character based mode.
  5. Type your login name. (Not the free form one displayed in the Login window, but the name of your home directory.)
  6. Press Enter.
  7. Type your password.
  8. Press Enter. You are in! (If all went well.)
All you now need to do is to learn how to use a character based editor like emacs or vi.


You are now in the serene land of text only editing. There are no mail or chat programs to distract, no internet browsers, no bright colours - just letters and your creativity.

Once you are tired of text mode, you can return to the real Mac OS X by typing "exit" on the command prompt. A shortcut for this is to type ctrl-d.

Once you are back in Mac OS X, you can open the text file you created with emacs or vi and paste its content into a Pages document, to get the layout right. The result of your creativity deserves it.

Thursday, January 31, 2008

Why did Pages' characters look blurry?

With Pages 3.0 and earlier, many users perceived problems with blurriness around the characters. With Pages '09/Pages 4.0 Apple changed the way fonts are rendered, which makes them look darker or sharper than they did before.

The word below is written using Helvetica 10 and rendered at 100% size. The top rendering is Pages '09 and the lower one is Pages 3.0. Surprisingly the top rendering looks better on an LCD screen than the lower one.



This uses the default setting in System Preferences > Appearance > Font smoothing style. With Pages '09, this setting is taken into account, unlike previous versions.

If you want to turn font smoothing off, open a terminal window and use the command
defaults write com.apple.iWork.Pages SFRFontSmoothing 0
If you want to turn it back on, use the command
defaults write com.apple.iWork.Pages SFRFontSmoothing 1
The text below was written for previous versions. It contains more explanations of what was wrong.
---

Most letters have some round curves, and that is a problem, as current computer screens consist of a lot of small dots, not curves.

The process of mapping the round curves of letters to pixels is called font rasterisation. There are different strategies to do it.

Last millennium one of the most common strategies was to simply put black dots in logical places. AppleWorks uses that method, and the result is that the letters get very rough edges. Here is the word "lollipop" written in Helvetica, 10 in AppleWorks. It is magnified about 10 times, so you can see the pixels.
The next strategy was to use anti-aliasing. That means that you add pixels of different shades of grey to increase the illusion that the letters are curved. It looks ridiculous when you magnify it, but when the font is small, it is surprisingly efficient. It is very likely that your web brower uses anti-aliasing to display the characters you read right now. Magnified, the characters do not look very legible:

But on a screen, it does not look quite that bad:


This is still the most efficient strategy, if you have a CRT (Cathode ray tube) screen. It is also the method Pages uses. However, fewer and fewer people use CRT screens nowadays.

For LCD screens, the best strategy is usually subpixel rendering. This uses the fact that each pixel on an LCD screen consists of three small elements, one red, one green and one blue. Looking at a magnified image of these pixels gives the impression that it is almost illegible. However, when one takes into account that the colour elements are at different positions inside each pixel, it is easier to understand that this can actually be easier to read than plain anti-aliased text.

On the screen it looks a little better. Keep in mind that this is my screen magnified about 10 times.

As you can see, the monitor does not simply display the colours right off, but there is some algorithm how to display it correctly.

To some people this gives a much clearer picture. To others it is mostly annoying, as they are able to see the different colours, in spite of the small size. This is a technology used by for example TextEdit and MS Word for Mac. Your browser may also use it.

Using System Preferences > Appearance, you can change this setting for TextEdit and Microsoft Word and many other applications. If you choose CRT, you disable the subpixel rendering in the applications.
However, these settings hardly change anything at all for Pages.

Why does Pages not allow subpixel rendering? The most convincing explanation may be that it is more difficult to implement in Pages than in other applications, as text can be transparent against a coloured background. It would be very difficult to choose how to handle transparent coloured pixels, when the background changes colour.

Besides, the number of pixels per inch increases all the time with more modern screens. In the near future, it will not matter much which technology is used to map curves to pixels.

So, what can one do, if one thinks Pages displays too blurry characters on the screen today?

Not much. One can either get used to it or buy a new screen with higher resolution or simply increase the zoom.

If you want to learn more about font rendering in Mac OS X, here is a list of facts and opinions on the subject:
And after Pages '09

Wednesday, January 30, 2008

Export folder to Word, RTF, PDF, TXT or RTFD

This AppleScript to export the content of a folder with Pages documents was kindly created by Yvan Koenig. You can find more of his scripts at his Public iDisk. If you prefer to export a selection of files, you may want to have a look at the scripts in this post, which use a Scriptlet.

To use the script below, copy it all into a new script in ScriptEditor and run. Due to blogspot's layout, you may not see all characters here, but they should be copied properly, if you highlight all the non-proportional text below.
(*
Export pages documents as Word ones in the folder where the original docs where.

Assuming that we start with:
AppleScript & Office.pages
it will be exported as:
AppleScript & Office.doc
If a file already exist with the short name
it may be saved as:
AppleScript & Office#20080128T221639.doc (if withSeconds is defined as true)
AppleScript & Office#20080128T2219.doc (if withSeconds is defined as false)

the serial number is a packed version of the date/time of the save process:

2008/01/28T22:16:39 or 2008/01/28T22:16

Thanks to Dale GILLARD who teach me the way to export without using GUI scripting.

Yvan KOENIG
28 janvier 2008
29 janvier 2008
*)

property withSeconds : false (* you may set it to true if you wish *)
property typeNum : 1 (* 1 = WORD, 2 = PDF, 3 = Txt, 4 = rtf, 5 = rtfd *)

property newExt : ""
property newType : ""
property types : {{"doc", "SLDocumentTypeMSWord"}, {"pdf", "SLDocumentTypePDF"}, {"txt", "SLDocumentTypePlainText"}, {"rtf", "SLDocumentTypeRichText"}, {"rtfd", "SLDocumentTypeRichTextBundle"}}

tell application "Finder" to set listeFichiers to every item in (choose folder) (*
dans un bloc Finder pour avoir un titre de dialogue "localisé"
• in a Finder block to get a localized dialog title. *)
if (count of listeFichiers) = 0 then return
open listeFichiers

-- ===========

on open (sel)
repeat with elem in sel
my exploreTraite(elem as alias, "")
end repeat
end open

-- ===========

on exploreTraite(elem, ptree) (*
elem est un alias
elem is an alias *)
local elem_, cl_, typeId_
set elem_ to elem as text
tell application "System Events"
set cl_ to class of item elem_
set typeId_ to type identifier of elem
end tell
set cl_ to cl_ as Unicode text

if cl_ is "file package" then
if typeId_ is "com.apple.iwork.pages.pages" then my TraiteUnPackage(elem_, ptree)
else if cl_ is "folder" then
my ExploreUnDossier(elem_, ptree)
else
-- not for us
end if -- cl_ is …
end exploreTraite

-- ===========

on ExploreUnDossier(dossier, ptree)
local nomElement, cheminElement, c
repeat with nomElement in list folder dossier without invisibles
set cheminElement to dossier & nomElement
tell application "Finder" to set c to name of (dossier as alias)
my exploreTraite(cheminElement as alias, ptree & c & ":")
end repeat
end ExploreUnDossier

-- ===========

on TraiteUnPackage(aPackage, ptree)
local docPathAndName, oldName, docName, newExt, newType
(* aPackage always ends with a colon, we must remove it *)
set aPackage to (text 1 thru -2 of (aPackage as Unicode text)) as alias

set {newExt, newType} to types's item typeNum
tell application "Finder"
set sourceFolder to (container of aPackage) as Unicode text
set oldName to name of aPackage as Unicode text
end tell -- Finder
set docName to (text 1 thru -6 of oldName) & newExt
set docPathAndName to sourceFolder & docName

tell application "System Events"
if exists file docPathAndName then
set docName to (text 1 thru -7 of oldName) & my serialize() & "." & newExt
set docPathAndName to sourceFolder & docName
end if
end tell -- system events

tell application "Pages"
open aPackage
save front document as newType in docPathAndName
close front document
end tell -- Pages
end TraiteUnPackage

-- =============

on serialize()
local cd, serial
set cd to current date
set serial to (year of cd as text) & text -2 thru -1 of ("0" & (month of cd as number)) & text -2 thru -1 of ("0" & day of cd) & "T" & text -2 thru -1 of ("0" & hours of cd) & text -2 thru -1 of ("0" & minutes of cd)
if withSeconds then
return "#" & serial & text -2 thru -1 of ("0" & seconds of cd)
else
return "#" & serial
end if
end serialize

Monday, January 28, 2008

How do I best organise my fonts in Fontbook?

You may have read in some obscure blog posting that it is good to organise your fonts in Collections in Fontbook. That obscure posting was right, but what strategy should you use to create collections? Which criteria should you use?

You should of course create one or a few folders with your favourite fonts, based entirely on what you like.

In addition, it may be good to create folders based on some objective criteria, and to do so, you can often use the search field.

You can for example start with a search for fonts that contain Italic typefaces.

1. Create a collection called "Italics".
2. Type "Italic" in the search field. The font list now only contains fonts which match the word Italic.

3. Select all fonts with command-A.

4. Clear the search field. The selection now extends to all typefaces in the fonts that contain italics.

5. Drag the selection to the collection "Italics".

You now have a collection with fonts that you can italicize ready to be used in Pages or TextEdit or any other application using the Font Palette.

But you can go on.

6. Create another collection called "Italics Slimbach".
7. Click on the Italics collection and type "slimbach" in the search field and repeat the steps above.

You now have a selection with fonts by the designer Robert Slimbach, which all contain Italic typefaces.

And on again.

8. Go through the steps above again, but this time use the search word "Russian".

And you have a collection of Slimbach's fonts that can be used in Russian with Italics.

You can go on like this and create collections with more and more detailed criteria in different areas. You can for example search for "Apple" or "Adobe" to find fonts from those companies. Or you can search for OpenType or Postscript.

There are, however, two things that seem impossible to search for reliably: non-proportional fonts and sans serif fonts.

If you need that you need to create the collections manually. But there are still quite a lot of different kinds of collections you can create using the search function.

Sunday, January 27, 2008

How do I create an index in Pages?

If you want an index of keywords in Pages, you have to create it manually. Contrary to the table of contents functionality, there is no automatic solution for indexes.

People have different strategies to create them, usually based on the search function. You can for example get a list of all pages containing a particular word using View > Show Search.

Saturday, January 26, 2008

How do I use Quartz Composer?

Uh? Isn't that a development graphics tool? What does that have to do with Pages?

Admittedly not very much, but for some situations you may want to use Quartz Composer to modify pictures or text you have converted to an image. There are better and easier tools out there, but none is cheaper than Quartz Composer as it comes with the OS. If you want to experiment with it, here is some advice to get you going:
  1. Install the Development Tools from your Mac OS X installation DVD, unless you already have them.
  2. Go to Developer > Applications, and open Quartz Composer.
  3. Create a new file from the template "Image Filter". (The main differences between this one and a blank file is the fact that the a flag in Editor > Edit Protocol Performance already is set to "Image Filter", which makes sure you get all required patches.)
  4. Remove the optional elements and the macro called "Process the Image".
  5. Go to Editor > Show Patch Parameters.
  6. Double-click on the image, and choose the image you want to use yourself.
  7. Click on Edit > Show Patch Creator.
  8. Choose any patch you fancy, for example Image Transform. (Others, like Twirl, also work.)
  9. Click on the Output node on the patch "Image (required) _protocolInput_Image" and drag it to the left Image node of "Image Transform", so you get a yellow line that links the two.
  10. Click on the node "Transformed Image" from Image Transform and drag it to the Input node of the patch "Image (required) _protocolOutput_Image".
  11. (Optional) You can also add a Filter like "Circular Wrap Distortion" before the Image Transform. The method is the same as when you added the patch in step 8. You just have to connect the nodes.
  12. Unless the Viewer is already visible, go to Window > Show Viewer.
  13. Unless it is already running, click on the Run button.
  14. Click on the patch Image Transform and change its parameters.
  15. Experiment. Change or add other patches, to see the changes.
  16. If you find a result you like, save the file.
  17. Drag the file you created to an open Pages document, where it will appear as an image - or actually a movie - in case you added any moving elements.

How do I create Word Art with Pages?

You cannot.

If you want to let the letters dance over the page following curves or shapes, you have to go beyond Pages.

A few other products that support wordart like features are Art Text and Comic Life, but there are more ones out there. You can check Version tracker for more alternatives.