OOXML 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.

As an alternative to hacking the XML, you can select text and run a VBA snippet to set one of these styles:

Sub NumberStyling()
  With ActiveWindow.Selection.ShapeRange(1).TextFrame2.TextRange.ParagraphFormat.Bullet
    .Type = msoBulletNumbered
    .Style = msoBulletArabicParenBoth
  End With
End Sub

Edit the .Style = msoBulletArabicParenBoth line to one of the style names below, adding msoBullet to the front of the name to get the VBA parameter. So thaiNumParenBoth becomes msoBulletThaiNumParenBoth in VBA. Thanks to John SR Wilson for the VBA.

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

Brandwares can help set up complex numbering and bulleting schemes for PowerPoint and Word. Contact me at production@brandwares.com with your project needs.

6:03 pm

12 thoughts on “OOXML Hacking: PowerPoint Numbering Styles

  1. Hi,
    Is it possible to change the default option of this window. For example if the user clicks the button to insert directly the latin ‘i’ instead of the 1.

    • In the section for a:lvl1pPr, set the bullet like this: a:buAutoNum type=”romanLcPeriod”. Then the first level of text will default to lower case Roman numerals.

      Unfortunately, the display of available numbering styles is hard-coded into PowerPoint, so it can’t be customized.

  2. Hello,

    Very useful article – thank you. Occasionally I have a client who wants to automate appended characters; example below, where we have two spaces and a forward slash after any text that plays a subtitle role:

    My Subtitle Style /

    I’ve looked to see if I could use a bullet and append it rather than prepend-ing it — but just for the subtitle role, not the other bullet lists to be included in the theme. PowerPoint doesn’t want to let me put the bullet on the right, while keeping the language to English. Can this be done via XML hack, or are we simply going to need to leave user notes and hope that people follow them?

    Thanks in advance!

    • Your experiments are correct, you can’t get a bullet on the right without changing the language. I can’t think of any way to do this through XML. My approach to solving this would be to write a macro to do the formatting. After entering the text, the user would press a keyboard shortcut that would add 2 spaces and a forward slash. I done similar workarounds for custom footer numbering.

      Here’s some example code from answers.microsoft.com that shows how a macro can place a bullet on the right of the heading. Look for the second answer from John SR Wilson.

      That said, this is simple to implement in Word but more of a chore in PowerPoint. You would have to create a .pptm file, write the code, then assign it to a QAT button (since custom keyboard shortcuts are otherwise quite difficult in PowerPoint). Brandwares can create this for you if you’re not familiar with VBA, just email me at production at brandwares dot com for a free estimate.

  3. Great tips! Is there a general rule of thumb one should aim for when considering the total file size of a PowerPoint (2016+) file?

    • Thanks!
      A theme or template that uses PowerPoint shapes where possible and vector (EMF) logos should normally be in the 200k to 400k size. If the design uses complex gradient graphics and or photos, file size will quickly shoot up above a megabyte. For final presentations, file size is directly related to the number of photos and can easily get up into 10s of megabytes.

  4. Thanks for this! When I specify bullets/numbering styles in lvl1pPr, lvl2pPr, … inside p:defaultTextStyle in presentation.xml, then every new text box I create in that presentation has an empty bulleted/numbered list in it. Is there any way to hack the OOXML so that new text boxes will *not* initially have an empty list in them, but that *when* I create a bulleted/numbered list, it will use the specified styles?

    • A new text box has only the first text level visible. If you format that first level to not have a bullet, it will never have a bullet unless you add one.

      Other text levels can have bullets or numbers. Normally what you do is change the text level when you want a bulleted or numbered style, rather than trying to add a bullet or number to an unnumbered level.

  5. Hi John, its me again.

    I’ve been told we want to default our numbered lists to be arabic #, a tab, and then text.

    So no period, no parenthesis, nada after the number itself.

    Within ppt, if you have a new text box and type 1, then tab, and then text, when you hit enter, it will continue a numbered list in this style.

    so the style that we want is achievable within the program, however it requires all users to start the list manually. Is there any way to assign this list format as the default style for a text box? its not one of the 7 options and I dont see a way to modify those options. I just want a list without the period.

    thanks again!

    • Both the ArabicPlain and ArabicDbPlain styles have a number without a period. the article above points out, you don’t access these styles with the user interface. Instead you hack the XML, adding a parameter like this:

      <a:buAutoNum type="arabicPlain"/>
  6. Hi John, it’s me again.

    I got a question regarding lists. For years now I tell people to never use the list buttons because we want them to use the styles we’ve built into templates; unfortunately that does lead to some conflict of design philosophy and practicality as we hijack some of the 9 levels to be non “list” and some complain they cannot create lists deep enough to for their needs. Putting aside that no ppt slide in a presentation needs to go 4 sub levels down, we do sometimes use ppt as a long form format not meant for “presenting” and some users could benefit from a second style for such text.

    Rather than creating a second master which would only lead to exponential chaos, is there any way to create custom lists to add to the “list library” section you see when clicking the list buttons. If I am able to create a few branded options consistent with how we would want the formatting, users could generate these as hoc lists in a more consistent format because as of now, they are all over as they’re otherwise manual over-rides of the deck’s master styles…. And resetting a slide may kill all their formatting.

    Thanks!

Leave a Reply

*Required fields. Your email address will not be published.

Posting XML? To enter XML code, please replace all less than signs "<" with "&lt;" and greater than signs ">" with "&gt;". Otherwise, Wordpress will strip them out and you will see only a blank area where your code would have appeared.