XML Hacking: PowerPoint Numbering Styles

If you believe the user interface, there are only 7 PowerPoint numbering styles:

PowerPoint Numbering Styles

In fact, there are 41 numbering styles available. About half of these apply to languages using other alphabets. These language variants become available to the user interface when the presentation text and keyboard input method is set to a relevant language.

Microsoft uses “Arabic” for both western European numbers and for numerals in the Arabic language. In this article, I refer to Western numbers for the European/American numbering system.

There are a dozen hidden PowerPoint numbering styles that you can only use if you hack the XML. This subset includes the ever-popular circles within numbers format. Here’s how to implement these.


Hacking PowerPoint Numbering Styles

Here’s a typical listing of a style using numbering. Bold text is the numbering style type.

<p:bodyStyle>
  <a:lvl1pPr marL="514350" indent="-514350" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">
    <a:spcBef>
      <a:spcPct val="20000"/>
    </a:spcBef>
    <a:buFont typeface="+mj-lt"/>
    <a:buAutoNum type="arabicPeriod"/>
    <a:defRPr sz="3200" kern="1200">
      <a:solidFill>
        <a:schemeClr val="tx1"/>
      </a:solidFill>
      <a:latin typeface="+mn-lt"/>
      <a:ea typeface="+mn-ea"/>
    </a:defRPr>
  </a:lvl1pPr>

If we examine the dialog displayed by the program, the styles available from the upper left are arabicPeriod, arabicParenR, romanUcPeriod, alphaUcPeriod, alphaLcParenR, alphaLcPeriod and romanLcPeriod. You can see the full list of styles at Datypic.com.

The illustrated XML is from the bodyStyle section of the slideMaster1.xml, but you can use exactly the same syntax for the otherStyle section of slideMaster1.xml, to format table text, or for p:defaultTextStyle in presentation.xml to handle text boxes.


PowerPoint Numbering Styles – the Complete List

Here are examples of all 41 numbering styles. The text of each line is the XML parameter to use. Uc = Upper case, Lc = Lower case, Db = Double byte, Plain = No character following the number/letter, Period = Following period, ParenR = Following parenthesis, ParenBoth = Parentheses before and after. Please note there are only a few Plain styles and those are mostly for Western numbers. PowerPoint does not have any ability to create custom numbering styles (I’ve tried!), so you’ll have to live with these.

PowerPoint Numbering Styles 1
PowerPoint Numbering Styles 2
PowerPoint Numbering Styles 3
PowerPoint Numbering Styles 5
PowerPoint Numbering Styles 5

Choosing Fonts for Office

When you choose fonts for Office, it takes a different approach than selecting typefaces for an InDesign document. One obvious difference is that you only need to install the font for a design document on the computer where it’s being created. Using the same font in an Office program will require the font to be installed on every computer using the document. Clearly, this is a much more costly solution. Aside from that, let’s look at the pitfalls of choosing fonts for Office templates.


Choosing Fonts for Office – Designer Vanity

Designers from different geographic areas spec fonts differently. As one example, Toronto designers tend to focus on the practicalities of electronic document distribution. As a result, they will often choose Arial or Times New Roman for the user-filled portion of a template. By contrast, designers from New York focus on creating a distinct visual appearance. They choose unusual designer fonts. This creates logistical problems for their clients. They must spend money licensing for all workstations and then take time to install the fonts for each user.

Test fonts from small foundries to licensing a lot of copies. I’ve written about this issue before: Cross-platform Fonts from Small Foundries: Beware! In a mixed Windows/OS X environment, a poor quality font will not display correctly in documents that move between Mac and PC. One typical symptom is Italic text that displays as Roman or Bold when viewed on a different OS, or some similar weight/style mixup.


Choosing Fonts for Office – Collaboration

If the client uses Office documents for collaboration (Don’t know? You should be asking these questions!), you should seriously reconsider a “designer-y” font choice. When the documents arrive at your client’s client, that computer will not have the fonts and the document appearance will change drastically. Unlike web pages, Office documents do not have a font fallback setting. There is no practical way to preset which font will be substituted when the original is missing.

I know what you’re going to say next: “What about if we embed the fonts?” Here’s are several reasons why that probably will not work.

  • Embedding only works with TrueType and TrueType-flavored OpenType. But you shouldn’t be using PostScript or PostScript-flavored OpenType for Office anyway. Microsoft’s support for that format is going away.
  • Embedding doesn’t work at all in Office for Mac. OS X users cannot embed fonts in documents. Neither can they see the correct fonts in documents where the font is already embedded.
  • Most typefaces have restrictive embedding permissions. So even if you can embed the font and your client can see it, they will not be able to edit the document using the embedded font. You can get around this if you contact the foundry and request a version with Editable or Installable permissions. Expect to pay a surcharge for this. Some foundries charge a lot for this service, because they’re concerned about losing sales to possible piracy.

Choosing Fonts for Office – Font Families

Designers are used to Single versions of fonts. The is where each font variant appears as a separate entry in the font list in Office. If you want to change to bold or italic, you select a different font from the list. Office doesn’t usually work this way and Office users are not used to this method.

Choosing Fonts for Office - Font Family Installed

When all four faces in a font family are installed, using the bold and italic buttons has the intended effect of switching fonts.

Instead, Office users are familiar with Family fonts. This is where where a group of (usually 4) fonts is linked. To get bold or Italic variants, they click on the Bold or Italic buttons, leaving the font name the same. The foundry usually creates the font families, though there are some type utilities available that let you make a family out of single fonts. RoboFont is one that works. Some other popular utilities do not do this correctly. Use them and you’ll end up with a family that only works on Windows or OS X, but not both.

Choosing Fonts for Office - Base Font Installed

If the font is not set up as a family-style font, then using the bold and italic buttons fakes the look with stroking and/or slanting the roman. The result is a disastrous visual effect.

In OS X, it’s not obvious when you are using single versus family fonts. OS X creates family groupings on the fly. In Windows, it’s easy: install the fonts, then look at the font menu in an Office program. A font family will only have one entry for the family, while singles will list every font variant. In this screen shot, the Arials are families. Arnhem and ATC Arquette are collections of single fonts:

Choosing Fonts for Office - Windows Font Menu

The Arials are families, while Arnhem and ATC Arquette are singles.

The logical conclusion to the font family approach is that your client should almost never be licensing just one or two typefaces. If four family members are not installed, Office will fake them by stroking the font for bold and slanting it for italic. As you might guess, this looks ghastly and completely off-brand.

The exceptions to this rule are:

  • If the document is a fillable form in Word or Excel. Those documents are typically locked so the user can’t change the font or its attributes.
  • The the font is used only for Headings. These are usually bold and stay that way, so there is less chance of a user applying attributes.

In either of these 2 situations, you should be able to get away with licensing a single typeface instead of a complete family.

Choosing Fonts for Office - A font family

A font family with all 4 members installed. The bold and italic button work as expected.


Choosing Fonts for Office - Roman only installed

Here is a family-style font with only the Roman installed. Using the bold or italic buttons gets you this dreadful look, plus an out-of-memory warning from Office.

If your design calls for an unusual mix of weights, like Light and Demibold instead of Regular and Bold, contact the foundry to request a custom family. There is normally a small charge for this service. However, if the licensing deal is large enough, the foundry may waive this.


Choosing Fonts for Office – 2 Solutions

To sum up, for each different font used in your design, your client should be licensing a complete family of 4 typefaces in TrueType or Truetype-flavored OpenType.

Brandwares is a font reseller and we’ve been speccing type for Office for years. If you choose us to create your templates, we can also source your client fonts in the correct format and family. This service includes free tech support. We’ll help your client with any installation or usage issues and communicate with the foundry, if necessary.

Working on your own? A simple way to eliminate all these issues is to design with the fonts that are already installed by Office. There are many faces more interesting than Arial and Times New Roman in this collection. The fonts that come with Office don’t require any additional licensing fee. They are already installed and they have relaxed embedding permissions to make collaboration easy. They are all high-quality typefaces licensed from major foundries like Monotype. Here is a list of the families that are useful for business communications (we left out Comic Sans!). For maximum compatibility among all versions of Office, use a font that is checked in every column.

Useful Office Fonts

Click to open PDF

Best Quality Logos for Office

It’s a challenge to create the absolute best quality logos for client files in Microsoft Office. Most artists choose bitmap formats for logos, usually JPEG format. Apparently this is some kind of received wisdom from artist to artist, because JPEG format is close to the worst possible format for logos. But I’ve already covered this subject in JPEG Logos? Fail! back in 2013.

Brandwares has used indexed-color PNG format for most line art (a term for non-photographic art that is mostly flat color areas). Most logos qualify as line art. But there are a couple of disadvantages to using any type of bitmap format for branding information.

With Office files, Microsoft is determined to foist image “compression” on us. I put compression in quotes because Microsoft’s solution is really downsampling by another name. Whatever the name, the results are blurry and absolutely do not reinforce the brand. All bitmap files will be downsampled unless the user chooses only a single file. You can’t protect the company logo, even with XML hacking. Let’s face it, sooner or later, bitmap logos will look like mush.

The other persistent problem with bitmap formats is what happens when you create a PDF from a document. Acrobat’s default settings assume you want to create a small file to post on a web page. This was a serious problem 20 years ago. So, once again, a software company’s helpful authoritarianism leads to default settings that cream the logos in any Office file.


Vector Formats for Best Quality Logos

For many years, we at Brandwares were aware that a vector format was a potential way out of this. Vector formats are naturals for line art, because they easily handle geometric shapes with simple coloring. But there are relatively few vector formats from which to choose, and the available formats didn’t seem up to the job.

One grandaddy of vector formats is the EPS file. Well-known to designers, the EPS doesn’t get great support in Office programs. Printing them at high resolution requires PostScript support from the printer, which is dicey in most business offices. Office programs can’t ungroup them, so adding theme color support in an Office file is out of the question.

CGM was an early contender, and is still used in technical applications. But it never got support in common file formats. SVG is making inroads on the web, but Office is only beginning to support the format.

Let’s be honest, Microsoft offers the best support to the formats it invents. For vector graphics, that is WMF and EMF. WMF is a 16-bit format that was invented in the ’90s. In practice, it’s not too useful today. All too often, WMF files do not render the inside curve of shapes like O or D. In addition, Adobe Illustrator’s WMF export is horrendous, turning every curve into a series of angled straight lines. Corel Draw does a better export, but the format is limited by its 16-bit capacity.

The format we’re left with is EMF (Enhanced MetaFile). We’ve tried EMFs exported by Illustrator, but they aren’t so great. Illustrator’s curve accuracy goes down the toilet when it exports as EMF, even though it puts Corel Draw to shame. But at this point, we realized that there might be other programs that could do a better job with EMFs.

And there is! Forget Illustrator, forget Corel Draw! For now, the king of the EMF planet is the freeware program Inkscape! This open source vector illustration package creates top-notch EMF (and SVG) graphics and can import Illustrator AI and EPS graphic files. InkScape features much better curve accuracy than Illustrator can export. Here’s the complete workflow to create a robust logo that is a small file size and sharp at any resolution and has a transparent background and will never get downsampled by Office or Acrobat!


Best Quality Logos, Step-by-Step:

You’ll need a piece of artwork in Adobe Illustrator (.ai) or Illustrator EPS (.eps) to try this out. You can download Inkscape for OS X or for Windows.

  1. In Illustrator, open the .ai or .eps file and choose the Selection tool (dark arrow). Click on the logo. If the logo outlines are selected when you do this, go to step 3. However, if clicking on the logo activates a rectangle around the logo, proceed to step 2.
  2. The rectangle that gets selected is a clipping mask and/or a compound path boundary. In Illustrator, choose Object>Clipping Path>Release. You might have to do this several times, until all clipping masks are removed. Select the rectangles. If part of the logo also gets selected when you choose a rectangle, you’re not done. When you can select just the boundary rectangles, delete them. If you neglect this step, PowerPoint can resize the clipping mask which makes the logo look cropped.
    Depending on the logo, you may also need to release the Compound Paths on the same menu. Doing this will cause the inside of A, O, D, etc. to fill in. If this happens select the paths for letter outline and the inside and choose Object>Compound Path>Make. Compound paths don’t cause problems around single letters, but they may cause issues around large groups of shapes.
  3. Save the file and close Illustrator.
  4. Open the file in InkScape. (Inkscape prefers more recent formats of .ai. If you see an import error message, try saving the file in Illustrator to a newer format)
  5. Choose File>Document Properties.
  6. On the Page tab of the dialog, expand the line Resize page to content by clicking on the plus sign.
  7. Change the units dropdown to in (inches)
  8. Set each of the 4 margin fields to 0.01 to add 1/100″ to the logo area.
  9. Click on Resize page to drawing or selection, then close the dialog.
  10. Choose File>Save As… and set Save as type: to Enhanced Metafile (*.emf). Save the file and close InkScape.
  11. Open PowerPoint, choose Insert>Picture and place the logo file. If it is the correct color you’re done. However, if you need to key part of the logo to the presentation theme, or if you need transparency in part of the logo, continue with the next step.
  12. With the logo selected, choose Picture Tools>Group>Ungroup. PowerPoint will pop up a notice: This is an imported picture, not a group. Do you want to convert it to a Microsoft Office drawing object? Click on Yes
  13. Once again, choose Drawing Tools>Group>Ungroup. Yes, you have to do it twice! This time, the drawing is actually ungrouped.

Best Quality Logos Extended

Once the file is ungrouped, you can key part or all of it to a theme color. If your presentation contains multiple color themes, then changing themes will change the keyed logo element automatically. This can be a slick trick for presentations with different sections in different code colors.

Best quality logos in identical slide layouts keyed to different color themes

The layout for these slides is identical. Each uses a different color theme that varies one code color.

Transparency is not supported in most EMF exports, but by importing and ungrouping the logo, you can add transparency back in. In PowerPoint, choose Drawing Tools>Shape Fill>More Fill Colors…, then set the Transparency slider. This works the other way around from Illustrator, but the units are the same. If the Illustrator file used 40% Opacity, set 60% Transparency in PowerPoint.

Best quality logos benefit from EMF transparency

From L to R: each character has 10% more transparency. You can’t get this by adding transparency in Illustrator, you must re-create it in Office.

EMF are not a great candidate for objects like disclaimers. Each letter includes one or 2 complex curves, so a paragraph of text will be much larger that the same disclaimer rendered as an indexed-color PNG or even a JPEG of the same text. But for logos, they’re pretty great. You get the same small file size and pin-sharp appearance regardless of how much you enlarge it. Applying image compression or printing to a low-res PDF leaves EMF logos in pristine condition. It’s by far easiest way to create the best quality logos for Microsoft Office.

XML Hacking: Font Themes Complete

I wrote about how to create a basic font theme in 2015: XML Hacking: Font Themes. Thanks to everyone for the comments and feedback that have allowed me to refine the article and make it more helpful.

That article covered a bare bones font theme for European languages (referred to as Latin fonts in Microsoft-speak). International and multilingual users require a theme that can work with a greater variety of languages and fonts, so in this article I’m going to cover how these work and how to create them.


A More Complete Simple Theme

There’s more we can do with the very basic theme from the previous article. In the listing below, a font has been specced for only Latin fonts.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<a:fontScheme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Test">
  <a:majorFont>
    <a:latin typeface="Arial"/>
    <a:ea typeface=""/>
    <a:cs typeface=""/>
  </a:majorFont>
  <a:minorFont>
    <a:latin typeface="Arial"/>
    <a:ea typeface=""/>
    <a:cs typeface=""/>
  </a:minorFont>
</a:fontScheme>

In both the Major (Headings) and Minor (Body) categories, there are also ea (East Asian) and cs (Complex Scripts) entries. These theme entries are inactive until text is formatted as a relevant language. As long as your text is marked as US English (either by using the Review>Language>Set Proofing Language, or by setting the language in a Style), only the Latin theme fonts will be active. But if you mark text as Chinese, the Office program will check the theme and use the font in the ea tag instead. Likewise, Persian text will activate the cs theme font.

What will not work is to try to set an East Asian or Complex Scripts font in the Latin tag. Depending on the version and platform of Office, you’ll only get European characters showing, or the program will completely ignore your theme. Here’s a simple font theme that will work with Japanese, Arabic and European languages:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<a:fontScheme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Test">
  <a:majorFont>
    <a:latin typeface="Arial"/>
    <a:ea typeface="Meiryo"/>
    <a:cs typeface="Andalus"/>
  </a:majorFont>
  <a:minorFont>
    <a:latin typeface="Arial"/>
    <a:ea typeface="Meiryo"/>
    <a:cs typeface="Andalus"/>
  </a:minorFont>
</a:fontScheme>

Depending on which ea or cs font you choose, it may support one or several languages. As an example, CJK fonts will support Chinese, Japanese and Korean. Of course, in a collaboration scenario, the fonts chosen should be available on both Mac and Windows, or the display of one of the langauges may get mangled with a font substitution. The best idea is to stick with fonts distributed by Microsoft with Office.


Complex Font Themes

When you crack open the XML on a document or theme, the font theme information is contained in theme/theme1.xml. This illustrates a font theme that is ready to take on the world:

<a:fontScheme name="Office Theme">
  <a:majorFont>
    <a:latin typeface="Calibri Light" panose="020F0302020204030204"/>
    <a:ea typeface=""/>
    <a:cs typeface=""/>
    <a:font script="Jpan" typeface="MS Pゴシック"/>
    <a:font script="Hang" typeface="맑은 고딕"/>
    <a:font script="Hans" typeface="宋体"/>
    <a:font script="Hant" typeface="新細明體"/>
    <a:font script="Arab" typeface="Times New Roman"/>
    <a:font script="Hebr" typeface="Times New Roman"/>
    <a:font script="Thai" typeface="Angsana New"/>
    <a:font script="Ethi" typeface="Nyala"/>
    <a:font script="Beng" typeface="Vrinda"/>
    <a:font script="Gujr" typeface="Shruti"/>
    <a:font script="Khmr" typeface="MoolBoran"/>
    <a:font script="Knda" typeface="Tunga"/>
    <a:font script="Guru" typeface="Raavi"/>
    <a:font script="Cans" typeface="Euphemia"/>
    <a:font script="Cher" typeface="Plantagenet Cherokee"/>
    <a:font script="Yiii" typeface="Microsoft Yi Baiti"/>
    <a:font script="Tibt" typeface="Microsoft Himalaya"/>
    <a:font script="Thaa" typeface="MV Boli"/>
    <a:font script="Deva" typeface="Mangal"/>
    <a:font script="Telu" typeface="Gautami"/>
    <a:font script="Taml" typeface="Latha"/>
    <a:font script="Syrc" typeface="Estrangelo Edessa"/>
    <a:font script="Orya" typeface="Kalinga"/>
    <a:font script="Mlym" typeface="Kartika"/>
    <a:font script="Laoo" typeface="DokChampa"/>
    <a:font script="Sinh" typeface="Iskoola Pota"/>
    <a:font script="Mong" typeface="Mongolian Baiti"/>
    <a:font script="Viet" typeface="Times New Roman"/>
    <a:font script="Uigh" typeface="Microsoft Uighur"/>
    <a:font script="Geor" typeface="Sylfaen"/>
  </a:majorFont>
</a:fontScheme>

For brevity, I’ve omitted the Minor font section. Instead of setting the ea and cs fonts, this font theme has entries for more tightly defined language groups and different fonts assigned to each one. This level is detail is necessary for a font theme that can be used around the world. Since I copied this listing from theme1.xml, it doesn’t have the XML opening that a standalone font theme would have.

Setting up and testing a complex font theme like this is not a simple task. The font switching is automatic and is triggered by the language input setting on your computer, the language set in your template styles and the language set in the text being edited. Please post your comments, let me know of any hiccups or problems you notice and I’ll try to answer your questions.

PowerPoint Construction Best Practices

PowerPoint was built so that a completely new users could build a presentation without knowing anything about the program. A quick look at the typical presentations out there will quickly confirm how little most users know about the program. But there is a design, an internal workflow that was built into the software. Creating a file that uses this workflow will make your templates and themes easier to use. Users will be able to build presentations faster and suffer fewer WTF moments. The deck will simply work better when you use these PowerPoint construction best practices.


Your New Mantra: Theme>Master>Layouts>Slides

This is the order in which you should approach PowerPoint construction. The best practice is Theme>Master>Layouts>Slides. First, create a Theme. Then apply that to a Master Slide, then format the Slide Layouts. Then last of all, make the Slides. The best presentations follow this order. The worst decks are created by trying to reverse the order. A surprising number of people start with the Slides, then try and fix the Layouts on which they’re based. Finally they end up at the Master and never quite discover the Theme. These are the problem decks that I get called on to repair, since they just don’t work anymore.


PowerPoint Construction Best Practices: The Theme

The basic design building block of all Office programs is the Theme. Themes nominally have 3 components: the Font theme, the Color theme and the Effects theme. However Effect themes are not editable in the program interface. All a designer can do is choose one of the presets, and the presets available change with each version of Office. Since effects are only used with tacky effects like 3D lozenges and shadows, most designers will simply ignore the Effects theme. If I’m able, I’ll apply the Office 2010 Couture effect theme, which has minimal gimmicks.

That leaves the Font and Color Themes. Color themes in Mac versions of Office are editable in PowerPoint. To create custom Font themes, Mac users must build them manually in a Text Editor. No need to get nervous about coding, they’re very simple files that you can create in TextEdit. I covered the technique in this article: XML Hacking: Font Themes. To create a Color theme that will work the best for your client, please read Office Charts: 6 Colors Maximum! This article is important because the order of colors in a theme determines the automatic color order of charts.

You don’t have to use a custom theme, but you also can’t have a theme-free file. If you don’t customize, your template will use the default Office theme. Then users will start to use the theme fonts and colors, because they’re obvious in the interface. And then your client’s presentations will be off-brand. Is that what you want? I didn’t think so…

A clear advantage of using a theme is that applying a new custom theme instantly updates the appearance of legacy documents. This feature alone takes most of the pain out of brand updates, but the underlying templates must have been built with theme application in mind.

I have Themes in my Theme!?

As usual for Microsoft, they use the same word in two different senses, just to make sure you get confused. In PowerPoint, a Theme and a Template can both contain an entire presentation in addition to the Color, Font and Effects Theme parts. By contrast, if you save a Theme from Word or Excel for Windows, the Theme file contains only the Color, Font and Effects parts, but no content or pages. So when you’re talking Themes with an expert, you need to make it clear whether you’re talking about a Font or Color Theme subfile, a Word or Excel style Theme that combines the Colors, Fonts and Effects, or a PowerPoint theme that includes all of the above plus Masters and Layouts.


PowerPoint Construction Best Practices: The Master

In PowerPoint, when you choose View>Slide Master, you’ll see a list of thumbnails at the side of your screen. The larger thumbnail at the top is the Slide Master (outlined in red):

PowerPoint construction best practices

The slide master never appears in a presentation. For this reason, some designers falsely conclude it is unnecessary and make a mess of it by ignoring it, deleting all placeholders, or otherwise mistreating it. The clients of these designers live in PowerPoint hell, with layouts and slides that just don’t work the way they should. It’s a shame that a designer who doesn’t know what they’re doing can’t spend a few dollars to bring in a professional to assist them.

A critical function in PowerPoint templates and themes is Inheritance. Inheritance is what we use when we create a typestyle, then apply that style to text. The text is said to inherit the characteristics of the style. The style is the parent and the text is the child.

The Slide Master inherits the fonts and colors of the Theme. Then the Slide Layouts inherit their formatting from the Slide Master, and finally the Slide inherit their formatting from the Layouts. The Slide Master is a crucial link in the chain. Ignoring it or formatting it incorrectly will cause inheritance problems in the rest of the presentation.

The correct way to format the Slide Master is to include as much formatting as possible that can carry over to the Layouts. Leave all placeholders in place, do not delete any. Perhaps you don’t think users will need a date or footer field, but deleting them will create problems for the users that actually do need them. You will also create problems in the future, when today’s decks become tomorrow’s legacy presentations that need to be updated with a new theme.

Analyze the design sample slides for where bulleting is needed and where it isn’t. A default Microsoft design uses bullets for every text level, but your template will be more useful if it includes a mix of bulleted and non-bulleted levels. The bullet scheme you apply on the Slide Master is automatically inherited by all the slide layouts.

On most presentations, there is a company logo that appears on most or all slides. Include that logo on the Slide Master (Of course, that logo is an indexed-color PNG right? You’re not still using JPEGs for logos, are you?). Important: Don’t touch a Slide Layout until the Slide Master is complete!


PowerPoint Construction Best Practices: The Layouts

When the Slide Master is complete, then and only then, move on to the Slide Layouts. Why? Because editing the Layouts breaks the inheritance from the Master of the edited feature. As one example, if you create a unique bullet setup on a Layout, then go to the Master and create the same setup, the edited Layout will remain out of sync. Subsequent changes to the bullets on the master will never show on the Layout, because you broke the inheritance. Any changes to the Slide Master also have be duplicated on the Layout. Even though the bullets are identical, you created twice as much work by editing the Layout before the Master.

I’ve seen some designers who delete everything on the Master so they can create Layouts that differ from each other. This, too, is a mistake. The Slide Master should be formatted to look like a typical or common slide in the presentation. Then, for any layout that has different graphics or background color, right-click on the Layout, choose Format Background and turn off the background graphics with the Hide background graphics option. This leaves the placeholders in place and they still get their formatting from the Master. Then create a different color background and/or include different graphics. Presto, a different appearance, while maintaining inheritance from the Master.

I really don’t like the Layout titles that Microsoft has assigned. First, there is the Title slide, then you have Title and Content. Except the word Title refers to 2 different things. The first layout is for the title of the presentation, which could just as easily be called the Cover slide, while the second refers to the Title placeholder on the slide layout. Most of the layouts have titles, why do only some include Title in the layout name?. I’d love to fix this, but then I would create another problem:

People will make presentations with your template. Someday those decks will be “legacy content” that needs to be updated with the next template that will inevitable follow yours. When those presentations are updated, PowerPoint will find a Cover layout in the old file and a Title layout in the new one. PowerPoint doesn’t know these are intended to be the same layout. So instead of replaced Cover with Title, it keeps both. The old deck now has a new Title layout, but it doesn’t get applied to the title slide, because that is linked to the Cover layout. The user screams. Why didn’t all the slides update with the new theme? Well, it’s your fault, because you thought you were more clever than Microsoft and you changed the layout name.

Deleting layouts isn’t so much of a sin. The Two Content and Comparison layouts are mostly redundant, your client may need one or the other, but not both. The Content with Caption and Picture with Caption layouts are fairly useless in their default form, but they’re worth reformatting if your client’s content requires something similar. Someone connected with Microsoft told me that the last 2 layouts with rotated text (Title and Vertical Text and Vertical Title and Text) were intended for use with Asian languages. Could be, so I leave them in for world-wide companies that might need Far Eastern text but delete them for smaller and local clients. Just remember: if you keep the layout, keep the name. New titles for new layouts only!


Custom Slide Layouts

I assumed everyone already knew this, but you can also create custom layouts in Slide Master view. Start by duplicating an existing Layout or creating a new one. Then choose the Insert Placeholder command to add an all-purpose Content placeholder, or one of several types of content-specific placeholders. You can add many placeholders to a layout, it’s a very flexible system.

A question that comes up frequently is whether to use Picture or Content placeholders for a photo slide layout. These 2 types of placeholders act differently, so the choice depends on what kind of action is most suitable. When you insert a picture into a content placeholder, the placeholder fits itself to the photo proportions. If the photo has a small physical size, the Content placeholder shrinks to fit the photo. The photo’s aspect ratio is always preserved.

By contrast, a Picture placeholder stays the same size. Placed photos are enlarged or reduced to fit the placeholder, and are automatically cropped to make the photo fit the aspect ratio of the placeholder. Knowing this, we can state that where a particular layout is locked down, you should use a Picture placeholder. An example might be a photo page where there is an exact 1/4″ gap between photos on all 4 sides. A Picture placeholder will maintain this layout:

PowerPoint Construction Best Practices - Picture Placeholder

Picture placeholders are better for rigid or exact layouts.

If the slide contains a single picture and the entire picture must show in its original proportions, a Content placeholder is more suitable:

PowerPoint Construction Best Practices - Content Placeholder

A flexible layout when the entire photo must show is better with a Content placeholder.

Lazy Designer Syndrome and How to Avoid It

I’ve repaired lots of presentation that show these symptoms: in a series of placeholders on a custom layout, you’ll enter text or content. You switch to a different layout, then switch back, but now the content is in different placeholders than you used originally. What’s happening? Usually, there was a lazy designer who, while editing a layout, copied and pasted formatted placeholders rather than using Slide Master>Insert Placeholder. While they were saving themselves a few minutes, they were sentencing their users to much more time rearranging slides after switching layouts.

The reason is that PowerPoint keeps track of each placeholder by its ID number in the XML. But when you copy and paste placeholders on a layout, PowerPoint does not assign a new ID number. It only does that when you choose Insert Placeholder. The result is a slide with placeholders that PowerPoint can’t tell apart. When it has to assign a piece of content to the duplicated placeholders, the result is random placement of the graphic or text.

To be fair, you can also get a similar effect when switching between layouts that have different numbers of placeholders. If the first layout has 10 placeholders and the second has only 2, PowerPoint will place the first 2 items in the right place. The remaining 8 items will still be in placeholders, but since there is no layout information, they’re plunked wherever PowerPoint wants to put them. When you reapply the original layout, all placeholders will pop back into place, with each kind of placeholder going where that type is on the layout. Unfortunately, during this process, PowerPoint re-writes the ID numbers and some pieces end up in a different order. The effect is less chaotic than lazy designer syndrome. This is also a bug you can help fix! I’ve created a suggestion at Microsoft’s PowerPoint User Voice forum explaining the issue. Please take a look and add your vote: Microsoft uses this feedback to prioritize their programming.


PowerPoint Construction Best Practices: The Slides

Now you’re finally ready to make slides, or hand the template off to your users so they can get creative. And this is the place where a well-constructed template or theme can either save your users time, while a sloppy one will keep them working ’til midnight. Do it right and the slides will be easy to produce, and they’ll work the way they’re supposed to. Just follow your mantra: Theme>Master>Layouts>Slides and all else will be bliss!

XML Hacking: Styled Text Boxes Complete

My last post began the subject of styled text boxes. There I covered the parameters contained in the first line of each level definition. Today’s entry continues by introducing the XML elements inside the level definition that format text. As a reminder, a level definition is the equivalent of a PowerPoint style. Since a text box can have up to 9 text levels, we can format 9 unique styles.


Styled Text Boxes – Enclosed Parameters

I’m using the phrase Enclosed Parameters to indicate elements that are within an a:lvl#pPr level definition, as opposed to the first line values covered in my last post. Here is a super simple level with only 2 enclosed parameters, shown in bold:

<a:lvl1pPr marL="0" indent="0">
  <a:buNone/>
  <a:defRPr sz="1400"/>
</a:lvl1pPr>

The first tag, a:buNone, sets the level to not have a bullet, while a:defRPr sets the text size to 14 points.

Next, here’s an example that shows line spacing and tab settings:

<a:lvl2pPr marL="0" indent="0">
  <a:lnSpc>
    <a:spcPct val="125000"/>
  </a:lnSpc>
  <a:spcBef>
    <a:spcPts val="1200"/>
  </a:spcBef>
  <a:spcAft>
    <a:spcPts val="500"/>
  </a:spcAft>
  <a:tabLst>
    <a:tab pos="457200" algn="l"/>
    <a:tab pos="914400" algn="l"/>
    <a:tab pos="1371600" algn="l"/>
  </a:tabLst>

In order, this block sets line spacing of 125% (or leading, for the designers), 12 points of space before and space after of 5 points. Finally, three left-aligned tabs are set. The units are EMUs, so these tabs are spaced 1/2″ apart.

Enclosed Parameters – Bullets

Out of 16 possible enclosed parameters, 11 are for bullet formatting. Creating bullets by editing XML is an exercise in frustration. It’s far easier to create bullets using the program interface and then transfer that XML to the p:defaultTextStyle section of presentation.xml.

For an overview of all level definition parameters, this page covers them: Datypic page for List Level Text Style


Styled Text Boxes – The Easy Way

Sure, you could do all of the above in a text editor, if you wanted to prove your coding prowess. But time is short and there’s a faster way to get this job done using PowerPoint’s program interface. This leverages the fact that the structure for list level text is exactly the same for p:titleStyle, p:bodyStyle and p:otherStyle as used in slideMaster1.xml, p:txBody, used in many slide layouts, and p:defaultTextStyle as seen in presentation.xml.

My preferred method is to start by making a copy of the Content with Caption slide layout, then deleting the title and content placeholder, leaving only a text placeholder preformatted with small text. Then I make 9 levels of text and format each to match a design or client specs for what the text box styles should look like. Do all your bullet formatting here. Save the file and exit PowerPoint.

Now expand the file and look in ppt/slideLayouts. The Content and Caption layout is usually slideLayout8.xml. If you duped it as suggested, open slideLayout9.xml and format the code to be humanly readable. Just below <a:lstStyle> are 9 level definitions with all the formatting you created in the program interface. Each level starts with <a:lvlXpPr where X is the level number. Copy all 9 level definitions, but not the starting <a:lstStyle> or closing </a:lstStyle> tags.

Now open ppt/presentation.xml, select all 9 level definitions (starting just below </a:defPPr>) and paste in the 9 levels from slideLayout9.xml. Save the file, zip everything back into a presentation. Each inserted text box should now have up 9 levels of styles that match the formatting you created on the duplicated layout. Delete the extra layout and you’re done.


Styled Text Boxes – What about the Font?

If you’ve tried these steps out, you might notice one glaring omission in the XML. When you format a slide layout and copy the XML, there is no font information in the level definitions. This is because the layout gets its font info from the slide master. There are 2 ways to fix this:

  • If all levels the text box are in the same font, open the presentation, create a text box, set the font, right-click on the text box and choose Set as Default Text Box.

This action fills an objectDefaults stub at the bottom of ppt/theme/theme1.xml. It looks something like this:

<a:objectDefaults>
  <a:txDef>
    <a:spPr>
      <a:noFill/>
    </a:spPr>
    <a:bodyPr wrap="square" rtlCol="0">
      <a:spAutoFit/>
    </a:bodyPr>
    <a:lstStyle>
      <a:defPPr>
        <a:defRPr dirty="0" smtClean="0">
          <a:latin typeface="+mn-lt"/>
        </a:defRPr>
      </a:defPPr>
    </a:lstStyle>
  </a:txDef>
</a:objectDefaults>

In this case typeface=”+mn-lt” sets the text box font to the Minor (hence mn) or Body theme font. The Heading theme font would appear as +mj-lt.

  • If there are different fonts for different levels, apply those fonts when formatting the duplicate slide layout.

Interesting fact: If a level is set by default to a theme font, clicking on the font dropdown and re-selecting the same theme font breaks the font inheritance from the slide master and specifies the theme font in the layout instead. Here’s the default XML from the layout level 1 again:

<a:lvl1pPr marL="0" indent="0">
  <a:buNone/>
  <a:defRPr sz="1400"/>
</a:lvl1pPr>

And here’s what it looks like after reapplying the theme font in the layout:

<a:lvl1pPr marL="0" indent="0">
  <a:buNone/>
  <a:defRPr sz="1400">
    <a:latin typeface="+mn-lt"/>
  </a:defRPr>
</a:lvl1pPr>

Styled Text Boxes = Instant Text Placeholders

I believe this hack vastly increases the utility of the text box. In effect, it becomes a text placeholder that a user can easily add to any slide. Accessing the styles works exactly the same as a text placeholder. Use the Increase List Level button (Indent More on a Mac) to move through the levels.

Here’s a visual comparison of a text placeholder and a styled text box:

Text Placeholder compared to Styled Text Box


Styled Text Boxes – Other Issues

I’ve run across a couple of minor problems that you will need to keep in mind.

  • Picture bullets aren’t going to work. These require building an XML relationship to the bullet image stored in the file, which is very hard to do manually. Don’t bother.

  • Similar to the theme font issue mentioned above, default paragraph spacing in the layout is inherited from the slide master. This means your text box paragraphs will be missing any space before or after that displays in the layout. To fix this, set the paragraph spacing for each level in the layout. It doesn’t have to change, but you still have to set it to include the spacing in the layout XML.

As always, I welcome your questions, feedback and suggestions. Keep hacking!

XML Hacking: Text Box Styles

PowerPoint’s text boxes could really use styles. But wait: they already do! Text boxes styles are built right into the file format, but there is no access to them thorough the program interface. Formatting text boxes using PowerPoint’s user interface is primitive compared to the styling that can be applied to placeholders in PowerPoint. There is no master where you can format text box defaults. The program interface only allows you to set one style, then right-click and choose Set as Default Textbox. And even this default disappears if you click on the Clear All Formatting button (Home>Font group, look for the icon with an eraser over 1 or 2 letters).


Text Box Styles XML

First, let’s clarify our terminology. Text styles in PowerPoint don’t work like any other program, because there’s no Style menu to apply to selected text. Instead, there are levels that you get to by clicking on the Increase List Level (Windows) or Indent More (Mac) buttons. Each level can have a different style.

Fortunately, with some judicious XML editing, you can create 9 preformatted levels of text for your text boxes. They can become nearly the equivalent of a text placeholder that you can add to any slide. This formatting includes line spacing, bullets, indentation, alignments and many other parameters, so this will have to be a 2-part article.

These text box styles will be saved in a theme, so they can be used in other presentations. However, if the theme is applied to Word or Excel, those programs ignore the custom styles and use their standard single-style text boxes. I guess we could expect that when all these settings are storing in a component called presentation.xml. If you’re new to this subject, read XML Hacking: An Introduction. If you’re using a Mac, you should also read XML Hacking: Editing in OS X.

The XML component that contains the text box text levels is ppt/presentation.xml. This component also contains presentation parameters like slide size, slide master ID and a list of slide IDs for all slides in the deck. Below those items is a tag called <p:defaultTextStyle> that contains 9 levels of text formatting. This structure is nearly identical to the text formatting used for default table text, covered in this article: XML Hacking: Default Table Text

Each of the text levels is identical except of a single digit in the name tag, so we can extract one level for an example that will work for all levels. When this is set up, you’ll be able to insert a text box, then click on the Increase List Level button (called Indent More in OS X) to move between styles, just like a text placeholder. Here’s a sample default level:

<a:lvl1pPr marL="0" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">
  <a:defRPr sz="2400" kern="1200">
    <a:solidFill>
      <a:schemeClr val="tx1"/>
    </a:solidFill>
    <a:latin typeface="+mn-lt"/>
    <a:ea typeface="+mn-ea"/>
    <a:cs typeface="+mn-cs"/>
  </a:defRPr>
</a:lvl1pPr>

This contains 2 different sections: the first line with a string of parameters, plus the list of additional parameters on separate lines below. It’s important to create the right data in the correct location, so for this article, I’m only going to cover the first line.


Text Box Style First Line Parameters

From left to right, the default parameters are:

  1. marL – Sets the left margin for that text level in EMUs. 914,400 EMUs equal 1 inch, while 360,000 EMUs equal 1 centimeter.
  2. algn – Horizontal alignment. A value of l means left aligned. You can also use r for right aligned, ctr for center aligned, just for justified text and dist, which distributes text evenly across the line width, kind of like an extreme form of justification.
  3. defTabSz – Default tab size, again in EMUs.
  4. rtl – Is the language right to left? 0 means no.
  5. eaLnBrk – East Asian Line Break: East Asian languages have rules about where a line break occurs. The 1 value turns this attribute on. A 0 breaks the line wherever needed, without consulting the rules.
  6. latinLnBrk – Similar to the eaLnBreak, a 0 will not break the line without a hyphen, a 1 will break the line wherevere needed without a hyphen.
  7. hangingPunct – Online documentation for this is poor and I couldn’t detect any difference in setting this to 0 or 1. I’ll post an edit when I figure out what this does.

Those are the defaults. Then there are several optional parameters that you can add manually:

  • marR – You can set the right margin of text, in EMUs.
  • indent – Set the first line indent of each paragraph, in EMUs.
  • fontAlgn – Vertical alignment. Acceptable values include auto and which both set text on the font baseline, which is the default. You can also use b to align with the bottom of the descenders (like the bottom of a g or y), t to align with the ascenders or c to center text vertically.
  • lvl – Determines the numbering level for this text level, independent of the level’s position in the hierarchy of text box styles.

The picture below illustrates 5 levels of formatting in a text box. There is no local formatting applied, all I did was type the text and click on the Increase Indent button to move between levels, exactly as with a text placeholder.

Text box styles from the first line parameters

5 levels of text box text formatted with only the first line <a:lvl#pPr> tag.

Multiple Color Themes, One Template

Multiple color themes in the same PowerPoint template are useful for companies with several divisions or for presenters who need color-coded sections. Here are 3 ways to add that capability to your presentations.


Multiple Color Themes: Using Super Themes in PowerPoint

Users sometimes get the idea for using multiple color themes from some of the Super Themes that are distributed with newer versions of PowerPoint:

Super Theme Color Variants

Super Theme Color Variants

The user sees a preview of the color palette that will be used, then picks the variant they want to use. It’s an elegant, attractive interface, but working with Super Themes is the hard way to get there. These files have extra levels of folders compared to a normal theme, so the structure is more complex. Microsoft has never published any details of the format, nor have they supplied tools to assemble them. I’ve spent many hours trying to reverse engineer them, so far without much success.

Fortunately, there are other ways to add multiple color themes, so we don’t have to use this solution. The only unique advantage a Super Theme has is that you can include both 4:3 and 16:9 versions of a presentation in the same file with undistorted artwork in both. Hopefully, you’ll see an article from me about the subject someday.


Multiple Color Themes: Hacking XML

This technique works to add multiple color themes to PowerPoint. You can also add them to Word and Excel files, but those programs won’t show them in the user interface. These extra color themes will travel with a theme saved from such a Word or Excel file, but you already knew that PowerPoint is the program to use for creating theme files. To hack the XML, start by reading XML Hacking: An Introduction. If you’re using a Mac, you should also read XML Hacking: Editing in OS X.

Now, expand your Office file to see the XML. Open the ppt folder, then open the theme folder inside that. PowerPoint saves every theme that’s ever been applied to the presentation, starting with theme1.xml, so you’ll have to check the theme name in each variant to get the right one. If you’re trying this with Word or Excel, look in word\theme or xl\theme respectively, where you will find only one theme1.xml file.

Format the XML to be readable, then go right to the bottom of the listing, where you’ll find the self-closing stub called <a:extraClrSchemeLst/>. First, open up the stub:

<a:extraClrSchemeLst>
</a:extraClrSchemeLst>

Then add a color scheme:

<a:extraClrSchemeLst>
  <a:extraClrScheme>
    <a:clrScheme name="Red-Tan Chart Colors">
      <a:dk1>
        <a:srgbClr val="000000"/>
      </a:dk1>
      <a:lt1>
        <a:srgbClr val="FFFFFF"/>
      </a:lt1>
      <a:dk2>
        <a:srgbClr val="082948"/>
      </a:dk2>
      <a:lt2>
        <a:srgbClr val="FAF9F9"/>
      </a:lt2>
      <a:accent1>
        <a:srgbClr val="C46158"/>
      </a:accent1>
      <a:accent2>
        <a:srgbClr val="E69779"/>
      </a:accent2>
      <a:accent3>
        <a:srgbClr val="699BC5"/>
      </a:accent3>
      <a:accent4>
        <a:srgbClr val="6E9C82"/>
      </a:accent4>
      <a:accent5>
        <a:srgbClr val="1F497D"/>
      </a:accent5>
      <a:accent6>
        <a:srgbClr val="4A8363"/>
      </a:accent6>
      <a:hlink>
        <a:srgbClr val="1F497D"/>
      </a:hlink>
      <a:folHlink>
        <a:srgbClr val="699BC5"/>
      </a:folHlink>
    </a:clrScheme>
  </a:extraClrScheme>
</a:extraClrSchemeLst>

The syntax is exactly the same as for the clrScheme listing that every theme includes as its main color theme, so you can simply copy and paste the whole block of XML. The theme file can hold any number of extra color schemes. When you are using the final file, you can change the theme colors by choosing View>Slide Master>Colors in PowerPoint (actual menu names change in different versions of Office).

Multiple Color Themes

Clicking on the Colors dropdown shows the extra color themes.

When you choose a new color theme, all elements keyed to the color theme will change throughout the presentation.


Multiple Color Themes: Multiple Masters (PowerPoint only)

For Word and Excel, a document can have only one color theme applied at a time, and that theme affects all pages in the file. PowerPoint allows more flexibility, since it can have multiple master slides and each of those master slides has its own color theme. This means that different parts of a PowerPoint file can have different color themes. This is often used to color-code different sections of a presentation.

In its most basic form, this is the simplest technique. No XML hacking required:

  1. In PowerPoint, choose View>Slide Master to view the masters.
  2. Right-click on the Slide Master (the larger slide at the top of the left-hand display) and choose Duplicate Slide Master. The new master is added below the slide layouts for the first master. (In Windows versions, right-click and check that each Master has the Preserve Master attribute checked, or they’ll vanish later.)
  3. Select the new master, then choose Color>Customize Colors.
  4. Revise the color theme, or apply a color theme you created earlier. OK out.

Repeat the steps above for each different color theme you need to include. In the program interface, the user will see a group of slide layouts for each slide master. Here is a presentation where only one colors changes in each color theme:

Multiple Master Color Themes

Each master has its own color theme and slide layouts.

While this is the simplest method to use, it’s not self-evident to all users that you change color themes by choosing a different set of slide layouts. So you’ll probably have to include at least an explanatory note with the template when you distribute it. But what if you want a premium solution for a high-end client? Read on…


Multiple Color Themes: XML Hacked Multiple Masters (PowerPoint only)

A solution that is simpler to use is to combine techniques 2 and 3. Create multiple masters, each with a different color theme. This will create a theme#.xml file in ppt/theme. Open all the theme#.xml file and copy the clrScheme for each to an extraClrScheme tag in all the others. So if you have 3 masters and color themes, copy the clrScheme tag for theme1.xml to an extraClrScheme tag in theme2.xml and theme3.xml. Then copy the clrScheme from theme2.xml to extraClrScheme tags in theme1.xml and theme3.xml.

The result is that it doesn’t matter so much which master you choose, you can change the color theme later. Of course, changing the color theme affects all slides based on the same master. This is an easy-to-use method for providing presentation with sections in different colors.

My thanks to Timothy Rylatt for his assistance with fact checking and corrections in this article.

XML Hacking: Locking Graphics

Locking graphics in Office documents must be #1 on most designers’ wish lists, judging by the number of requests we get. While Word and Excel already do a fairly good job of this, PowerPoint remains wide open. If you can see it, you can move, resize or delete it. Placing items on the Slide Master or Layouts helps, but this is minimal protection against a savvy user. Your users love to be “creative”, so how can we protect the brand from their enthusiasm?

Fortunately, it’s possible to provide protection for important logos and maintain slide layout integrity by editing the template XML. But this power comes with a responsibility to design the protection carefully. It can be a very thin line between a deck that is protected and one that is unusable. If you decide to protect your presentation, it is incumbent on you to test it repeatedly to ensure your users can still get work done with it.

Before trying this, please read my Introduction to XML Hacking. If you’re using OS X, it’s also important to read my notes about Editing XML in OS X.

Locking takes place mostly in the Slide Master and Layouts. A minimal approach is best, as each additional locked item will create more feedback from your users with the potential to increase tech support costs. On the Slide Master, you will probably only lock a company logo.


Locking Graphics: Logos

Start by placing a logo on the Slide Master. Of course, you’re not using a JPEG file, because you already know that’s the worst format for line art. If you still think JPEGs are the best, please read JPEG Logos? Fail! and Logo Production Secrets. After the logo is in place, expand the presentation to view the XML. Open ppt\slideMasters\slideMaster1.xml. All the placeholder coding comes first, so scroll down about halfway until you see XML that looks like this:

<p:pic>
  <p:nvPicPr>
    <p:cNvPr id="7" name="Picture 6"/>
    <p:cNvPicPr>
      <a:picLocks noChangeAspect="1"/>
    </p:cNvPicPr>
    <p:nvPr userDrawn="1"/>
  </p:nvPicPr>

To lock this, we just add one small parameter (in bold):

<p:pic>
  <p:nvPicPr>
    <p:cNvPr id="7" name="Picture 6"/>
    <p:cNvPicPr>
      <a:picLocks noChangeAspect="1" noSelect="1"/>
    </p:cNvPicPr>
    <p:nvPr userDrawn="1"/>
  </p:nvPicPr>

Test this out by re-zipping the files and opening in PowerPoint. Try to select the logo. noSelect=”1″ has the effect of making it unselectable, so the user can’t do anything creative with it, even if they open the master.


Locking Graphics: Shapes

Different graphic objects use a slightly different syntax. The noSelect=”1″ parameter remains the same, but you have to expand a tag and add a new line to include it. For all AutoShapes except lines, the default XML will resemble the following:

<p:sp>
  <p:nvSpPr>
    <p:cNvPr id="9" name="Rectangle 8"/>
    <p:cNvSpPr/>
    <p:nvPr userDrawn="1"/>
  </nvSpPr>

Editing the p:cNvSpPr tag as shown below will make the shape unselectable:

<p:sp>
  <p:nvSpPr>
    <p:cNvPr id="9" name="Rectangle 8"/>
    <p:cNvSpPr>
      <a:spLocks noSelect="1"/>
    </p:cNvSpPr>
    <p:nvPr userDrawn="1"/>
  </nvSpPr>

Locking Graphics: Lines

At the XML level, lines are referred to as Connectors rather than Shapes. The original XML will look like this:

<p:cxnSp>
  <p:nvCxnSpPr>
    <p:cNvPr id="8" name="Straight Connector 7"/>
    <p:cNvCxnSpPr/>
    <p:nvPr userDrawn="1"/>
  </nvCxnSpPr>

To lock this, edit the p:cNvCxnSpPr tag:

<p:cxnSp>
  <p:nvCxnSpPr>
    <p:cNvPr id="8" name="Straight Connector 7"/>
    <p:cNvCxnSpPr>
      <a:cxnSpLocks noSelect="1"/>
    </p:cNvCxnSpPr>
    <p:nvPr userDrawn="1"/>
  </nvCxnSpPr>

Locking Graphics: Placeholders

Placeholders are the boxes on slide layouts that can hold different types of content. The layouts are found in ppt\slideLayouts. They are numbered in the order that they appear in the left-hand list of layouts in Slide Master view. By default slideLayout1.xml is the Title slide. The XML tag is <p:sp> instead of <p:pic>, but otherwise the syntax is the same for locking. Placeholders do not inherit the lock parameters, so locking a placeholder on the master doesn’t affect the layouts and locked placeholders on the layouts have no effect on the slide placeholders.

You can see what other parameters are possible for the spLocks tag at Datypic’s a:spLocks page. There are options here to prevent grouping the image, rotating, moving or resizing it, changing it’s aspect ratio and several other less useful options. Let’s use some of the other parameters to lock down the shape. Here is the start of a Title placeholder:

<p:sp>
  <p:nvSpPr>
    <p:cNvPr id="2" name="Title 1"/>
      <p:cNvSpPr>
    <a:spLocks noGrp="1"/>
  </p:cNvSpPr>

After we add parameters to prevent moving and resizing, the XML looks like this:

<p:sp>
  <p:nvSpPr>
    <p:cNvPr id="2" name="Title 1"/>
      <p:cNvSpPr>
    <a:spLocks noGrp="1" noMove="1" noResize="1"/>
  </p:cNvSpPr>

Don’t expect that slides based on this will still have unmoveable placeholders. The lock parameters are not included when a slide is created from a layout. This locking ensures only that the layout remains the same, so when a slide is reset, it will always return to the correct format.

If the placeholders must remain in place on the slides, then you must first create the slide, then edit the XML before distributing the deck. For this, look in ppt/slides. The files are numbered in the order they appear in the presentation, so slide1.xml is usually the title. Here is the XML for a locked title placeholder.The noRot parameter prevents rotation:

<p:sp>
  <p:nvSpPr>
    <p:cNvPr id="2" name="Title 1"/>
      <p:cNvSpPr>
    <a:spLocks noGrp="1" noMove="1" noResize="1" noRot="1"/>
  </p:cNvSpPr>

When the user clicks on this, all the adjustment handles have a diagonal through them and the user is unable to change the shape size or position:

Locked Title Placeholder


Locking Graphics: Other Objects

By default, the picture and placeholders already include a p:locks or sp:locks tag, which is where we add the locking information. But what if you insert a text box on a layout for a legal disclaimer and want to make it ineditable? The text box XML initially looks like this:

<p:sp>
  <p:nvSpPr>
    <p:cNvPr id="7" name="TextBox 6"/>
    <p:cNvSpPr txBox="1"/>
    <p:nvPr userDrawn="1"/>
  </p:nvSpPr>

To lock this, we need to expand the <p:cNvSpPr txBox=”1″/> tag. In case it’s not obvious, to expand a closed tag, you must first delete the slash at the end that closes it. Then you create a new closing tag and put the <a:spLocks&gt> information between the two. The noTextEdit parameter means the text can’t be edited. Even if a clever user gets to the slide layout, they can’t change the text, though the shape is still moveable.

<p:sp>
  <p:nvSpPr>
    <p:cNvPr id="7" name="TextBox 6"/>
    <p:cNvSpPr txBox="1">
      <a:spLocks noTextEdit="1"/>
    </p:cNvSpPr>
    <p:nvPr userDrawn="1"/>
  </p:nvSpPr>

Locking Graphics: Gotchas and Exceptions

After a few months of practical testing, some real-life limitations on shape locking have become evident. Adding the noChangeAspect=”1″ has the same effect as checking the Lock aspect ratio option on the Size pane of the Format Shape dialog. But just as when you check this option manually, clicking on the shape and dragging the adjust handles will still distort the shape. On top of this, I found this page on MSDN: 2.1.1255 Part 4 Section 5.1.2.1.34, spLocks (Shape Locks). The pages states that “Office ignores attributes noChangeArrowheads and noRot when applied to a shape. PowerPoint additionally ignores the attribute noAdjustHandles when applied to a shape and noChangeShapeType when the converting the shape to a freeform.” So a user can circumvent noChangeAspect by dragging on the handles and you can’t prevent the handles from displaying either. Office simply doesn’t implement Microsoft’s own spec completely. There’s nothing you can do about this. It should be noted, that the accuracy of Microsoft’s information is not the best. Their statement that Office ignores noRot=”1″ when applied to a shape is not true, you can successfully prevent rotation with this parameter. You really have to test everything to really know what works and what doesn’t.


Locking Graphics: The Designer’s Responsibility

Powerful? Yes. But with power comes responsibility. Company presentation templates need to be revised, but after you lock items in XML, those shapes can no longer be revised through the program interface. So it’s essential that if you use these techniques, that you document your changes when you send the file to your users. Using these methods secretly to get repeat business from captive clients is dishonest and is definitely not a best practice.

XML Hacking: Graduated Color Table Borders

I’ll admit right off the bat, graduated color table borders is a trick you might need only once every ten years. But it’s a good illustration of the little touches you can add with XML Hacking that you just can’t do any other way. If you’re unfamiliar with XML hacking, please read XML Hacking: An Introduction. If you’re using a Mac, you should also read XML Hacking: Editing in OS X.

I was working on a presentation for a designer and the theme used graduated color rules. Most of the layout only need a rule below the title, which was simple to do with user interface. But then the designer included a slide that clearly needed to be a table and that table had the same graduated colors used as horizontal borders. At first, I informed him this wasn’t possible, but as I researched the issue, I found there was a way.

The answer was in a 10-year-old blog post by Mike Fried. Back then Mike was one of the engineers creating Office 2007 and his 2 posts on PowerPoint table styles have lots of good information. Toward the bottom of the article, he included garish graduated color table borders. It was enough to crack the code.

As an aside, I’d like to mention that you can find out the details on any Open Office XML parameter by Googling it. There is extensive documentation on the web, even though some of it is terse database excerpts. The essential command for a gradient line is a:gs. The GS stands for Gradient Stop, the points on the line that define where a particular color appears in the graduated line.

Googling ooxml a:gs gets you the Datypic site that lists elements and attributes, but explains almost nothing about them. However, this site can be useful because all XML elements are hyperlinked, so you can quickly find related parameters.

Further down the page is the openofficexml.com page on a:gs. This site has relatively verbose explanations of the element, a clear example of useage and definitions of the elements included in the xml object. March 2017 edit: The OpenOfficeXML site is down. You can still access it at the Internet Wayback Machine.

Finally, many searches will turn up links to the Microsoft MSDN developer pages about Open Office XML. These discuss Themes and XML in a more conversational style that is great for picking up the overall concepts. Occasionally, you’ll also find a valuable blog post, such as Lars Corneliussen’s explanation of Open Office measurements units.


Graduated Color Rules

But back to graduated color table borders! First, let’s look at a graduated color rule, which you can create using the program interface. Here is the dialog box showing the settings. The central point of the gradient has been shifted to the left to have more solid color on the right side and a rapid dropoff to white on the left:

Graduated Color Rule Settings

Here’s how the rule looks:

Graduated Color Rule

When we examine the XML for this rule, it looks like this:

<a:ln w="19050">
  <a:gradFill>
    <a:gsLst>
      <a:gs pos="0">
        <a:schemeClr val="bg1"/>
      </a:gs>
      <a:gs pos="25000">
        <a:srgbClr val="B7E6FF"/>
      </a:gs>
      <a:gs pos="100000">
        <a:schemeClr val="accent1"/>
      </a:gs>
    </a:gsLst>
    <a:lin ang="0" scaled="0"/>
  </a:gradFill>
</a:ln>

The pos (position) parameter is a percentage of rule length, with 100000 representing 100 percent. The colors are straightforward, with bg1 being the white background and accent1 the cyan. For the midway color value, I used the handy RGB Tint Calculator on this site, but then moved that value to the 25% mark.


Graduated Color Table Borders

The XML for a rule translates exactly to the XML for a table style. Here is the style for the top border, the same XML is applied to the inside border so that all interior rows show the same rule:

<a:top>
  <a:ln w="19050">
    <a:gradFill>
      <a:gsLst>
        <a:gs pos="0">
          <a:schemeClr val="bg1"/>
        </a:gs>
        <a:gs pos="25000">
          <a:srgbClr val="B7E6FF"/>
        </a:gs>
        <a:gs pos="100000">
          <a:schemeClr val="accent1"/>
        </a:gs>
      </a:gsLst>
      <a:lin ang="0" scaled="0"/>
    </a:gradFill>
  </a:ln>
</a:top>

Here’s what the final table rules look like with the table style applied:

Graduated color table borders

For more information on how to create table styles, please read XML Hacking: Custom Table Styles, XML Hacking: Table Styles Complete and XML Hacking: Default Table Text.