0

I'm currently building my own PowerPoint Super Theme file by combining several .thmx-files manually.

To get this to work the xml need some manually edit, I have got the hang of it except for how the UID for the id/vid properties.

Bare with me as I'm not really a programmer, more trial&error...

At the end of each theme1.xml file there is an UID-id property. I assume this represent the id of Super Theme as this id need to be the same for all theme files in the Super Theme.

I tried to reuse the id from a theme-file I saved from PowerPoint, but that doesn't work, I assume this some how is recognized as a Single theme-file. I also tried to borrow a UID from an existing super theme file I, that works unless the theme file has already been used on my system.

In similar fashion there is a vid property, this represent the Variant of the Super Theme and is located in next to the id in the theme1.xml and also in the themeVariantManager.xml that list all Variants of the Super Theme. Again I tried to use the vid from the file I saved from PowerPoint, but that doesn't work. But if I borrow the vid's form another Super Theme file I get it to work.

So I really would like to know how to generate a UID to use for my id and vid so I can create them as needed.

Example of the how the id and vid is used in theme1.xml

<a:extLst>
    <a:ext uri="{05A4C25C-085E-4340-85A3-A5531E510DB2}">
        <thm15:themeFamily xmlns:thm15="http://schemas.microsoft.com/office/thememl/2012/main" name="MM Petrol" id="{62F939B6-93AF-4DB8-9C6B-D6C7DFDC589F}" vid="{EC7F02AD-9687-440F-A9DF-FAA6F22270D7}"/>
    </a:ext>
</a:extLst>

Example of the how vid is used in the themeVariantManager.xml

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<t:themeVariantManager xmlns:t="http://schemas.microsoft.com/office/thememl/2012/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
  <t:themeVariantLst>
    <t:themeVariant name="Grey" vid="{B8502691-933B-45FE-8764-BA278511EF27}" cx="12192000" cy="6858000" r:id="rId1" />
    <t:themeVariant name="Petrol" vid="{EC7F02AD-9687-440F-A9DF-FAA6F22270D7}" cx="12192000" cy="6858000" r:id="rId2" />
    <t:themeVariant name="Grey" vid="{B8502691-933B-45FE-8764-BA278511EF27}" cx="9144000" cy="6858000" r:id="rId3" />
    <t:themeVariant name="Petrol" vid="{EC7F02AD-9687-440F-A9DF-FAA6F22270D7}" cx="9144000" cy="6858000" r:id="rId4" />
  </t:themeVariantLst>
</t:themeVariantManager>

I tried searching for help on the topic but I'm oout of luck there. I found this that only took me so far... Editing Super Themes with XML

Thanks in advance...

Jakob

3 Answers3

0

As always, once you post you figure out your answer... I kept the .thmx files from where I took the UID in the same directory. Then having 2 .thmx files using the same UID kind of defeat the idea of an UID, so powerpoint was confused to what file was referred to and picked the wrong one.

Doing the same routine as I tried first, but removing the original .thmx files from the theme directory solved my problem.

0

I assume you've figured this out, but id's are just random identifiers, as long as they are consistent within the super theme file and not equal to another id in another thmx file, it should work. A few notes which can help you:

  • A super theme contains a base theme (for backwards compatibility) in theme folder, and rest of the themes in the themeVariants folder.
  • Each super theme has a theme family id, and this gets saved to the pptx documents, so that the App can choose the right theme from the theme gallery and populate theme variants when such a pptx is opened. It has to be identical in each theme variant.
  • Each variant group has an variant-id to show different variations in the theme variants gallery. If you want each variant to support multiple sizes, you can give the same variant id to the themes with different sizes, and the closest match to the source will be selected within that group automatically, and it will only show once in the variants gallery

In your example code, I can see the Grey variant has different size but is pointing to the same relationship id rId1, which will be a problem (similar to Petrol)

So, some common suggestions,

  • have every theme you have a unique theme family id you generate.
  • have every theme group (a group of themes which may have similar features but supporting multiple sizes, for example a theme variant for 16:9 sizes, and anohter varint could be supporting 4:3 slide sizes), have the same unique theme variant id you generate.
  • Start with the the base(default) theme (so that the default theme files are in \theme folder)
  • Add all your other themes into themeVariants\variantX folders, (variant1, variant2 etc).
  • Create/edit the themeVariantManager.xml as you prepared, listing all the thmx files you've added. Use the same theme variant id that you defined for each group.
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<t:themeVariantManager xmlns:t="http://schemas.microsoft.com/office/thememl/2012/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
    <t:themeVariantLst>
        <t:themeVariant name="Ion" vid="{292E63A9-BB86-4E3D-B92A-7223C6510D2E}" cx="12192000" cy="6858000" r:id="rId1" />
        <t:themeVariant name="Ion" vid="{BACC050B-8757-4460-95D8-E37B46A6B421}" cx="12192000" cy="6858000" r:id="rId2" />
        <t:themeVariant name="Ion" vid="{A207AED3-9ABC-4A18-9978-A59B65688B15}" cx="12192000" cy="6858000" r:id="rId3" />
        <t:themeVariant name="Ion" vid="{5A2F9111-B2DB-470C-BA56-608F9B658826}" cx="12192000" cy="6858000" r:id="rId4" />
        <t:themeVariant name="Ion" vid="{292E63A9-BB86-4E3D-B92A-7223C6510D2E}" cx="9144000" cy="6858000" r:id="rId5" />
        <t:themeVariant name="Ion" vid="{BACC050B-8757-4460-95D8-E37B46A6B421}" cx="9144000" cy="6858000" r:id="rId6" />
        <t:themeVariant name="Ion" vid="{A207AED3-9ABC-4A18-9978-A59B65688B15}" cx="9144000" cy="6858000" r:id="rId7" />
        <t:themeVariant name="Ion" vid="{5A2F9111-B2DB-470C-BA56-608F9B658826}" cx="9144000" cy="6858000" r:id="rId8" />
    </t:themeVariantLst>
</t:themeVariantManager>
  • Create/edit the themeVariantManager.xml.rels file with paths to each variant, with the relationship id you define.
<?xml version="1.0" encoding="utf-8"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
    <Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="/theme/theme/themeManager.xml" Id="rId1" />
    <Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="/themeVariants/variant1/theme/theme/themeManager.xml" Id="rId2" />
    <Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="/themeVariants/variant2/theme/theme/themeManager.xml" Id="rId3" />
    <Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="/themeVariants/variant3/theme/theme/themeManager.xml" Id="rId4" />
    <Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="/themeVariants/variant4/theme/theme/themeManager.xml" Id="rId5" />
    <Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="/themeVariants/variant5/theme/theme/themeManager.xml" Id="rId6" />
    <Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="/themeVariants/variant6/theme/theme/themeManager.xml" Id="rId7" />
    <Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="/themeVariants/variant7/theme/theme/themeManager.xml" Id="rId8" />
</Relationships>

(Look at the rid's defined in these two files. Let me know if anything is unclear.)

Onur Onder
  • 306
  • 1
  • 4
  • Thanks, I noticed the bad row id's later on. I edited them now so they show correct if someone would look at it for reference. – Jakob Åsell Nov 24 '20 at 23:30
0

I'm surprised there is so little info about these considering these has been around since 2013 if I understand correct.

Perhaps you, or someone, else can share some recommendation whether using SuperTheme (.tmx) or Templates (.potx) as company setup, pro's & con's like.

What I understand the Theme can only store layout, colors and format defaults, but with the option of having several that you can switch easily between. And Templates could include one or more Slide masters, each with different colors, but not so each to switch between. However the Templates can include a number of pre-made slides.

But I don't see that these can be combined, i.e. that a Template could used a Theme. Then you need to create a regular slide (.pptx) and work from that.

  • The main point here is correct, templates include theme+some slides. Themes do not contain slides. Super themes contain multiple themes together but they are not saved into the pptx files. So to leverage super themes you need to have the super theme installed/copied to custom themes folder on the machine it will be used. You can have a template that is using a variant of a super theme, assuming that super theme is installed/added to that computer. When sharing a pptx file, only the applied/selected variant of a theme will be shared, not the super theme. I hope this helps. – Onur Onder Nov 24 '20 at 23:44