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

16 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!

    • PowerPoint is designed for presenting, so if you use it for other purposes, you’ll have to tolerate it’s shortcomings in those areas. Consider using Word or Microsoft Publisher instead, they’re built for long-form documents.

      PowerPoint list styles are baked into the program and cannot be altered. You can work around this by creating custom slide layouts, with each custom layout have a different set of 9 outline list levels. The other layout formatting can be identical. This gives users alternative sets of 9 styles to work with, they just have to switch layouts to change the style set.

      You can also augment the number of styles available by adding 9 levels of styling to text boxes. That gives a user a total of 18 possibles styles per slide. Here are the articles: OOXML Hacking: Text Box Styles
      OOXML Hacking: Styled Text Boxes Complete

      • As of now, we have the text box styles matching the default layouts cause it’s our attempt to force consistency.

        I do have default text styles applied to shapes as well but in theory, could those be an additional 9 styles?

        I think for their needs (even though I told them to use word instead), I’ll probably provide them some custom text boxes . It’s not ideal but it should address their need. Was just hoping there was some other way I had not explored yet. Guess not. Thank you as always for your insight!

  7. Hi John, this is really interesting, and I’ve played with this, based on this article.
    Do you know of a way to edit or add custom bullet button entries? Most people seem to just click the bullet button instead of using the type levels, which is painful, given that we have very specific bullet formats in your corporate PowerPoint. Setting up an entry manually, only seems to be relevant to the text you have set it up for. Even if it could be available in each text placeholder would be good.

    • You format custom bullet styles the same way you do with numbering styles, by creating them on the Slide Master. The best practice is to create all the bullets and numbers you are likely to need in the actual Slide Master (It appears as the larger thumbnail at the top of the thumbnail list in Slide Master view). Then those levels are automatically inherited by each slide layout. Modify the bullets or numbering for each slide layout if necessary.

      If you follow this workflow, all text and content placeholders on each slide will inherit the bulleting and numbering from its layout. If you want a really complete solution, add the same levels of bullets/numbers to text boxes as well. Text boxes can have the same 9 levels of outline levels as placeholders. Here are my articles on how to do that:
      OOXML Hacking: Text Box Styles
      OOXML Hacking: Styled Text Boxes Complete

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.