function MakeExamplePlugin(pluginsman) {
  var funcThis = this

  // You can change it if you want to support more types, since that the Word and Excel document generators also supporting very similar plugins:
  if (pluginsman.docType !== 'pptx' && pluginsman.docType !== 'ppsx') {
    throw new Error(
      '[pptx-example] This plugin supporting only PowerPoint based documents.'
    )
  } // Endif.

  this.ogPluginsApi = pluginsman.ogPluginsApi // Generic officegen API for plugins.
  this.msPluginsApi = pluginsman.genPrivate.plugs.type.msoffice // msoffice plugins API.
  this.pluginsman = pluginsman // Document type specific plugins API.

  this.pptxData = pluginsman.getDataStorage() // Here you can store any temporary data needed for generating the document and depending on the data filled by the user.

  this.mainPath = pluginsman.genPrivate.features.type.msoffice.main_path // The "folder" name inside the document zip that all the specific resources of this document type are stored.
  this.mainPathFile =
    pluginsman.genPrivate.features.type.msoffice.main_path_file // The name of the main real xml resource of this document.
  this.relsMain = pluginsman.genPrivate.type.msoffice.rels_main // Main rels file.
  this.relsApp = pluginsman.genPrivate.type.msoffice.rels_app // Main rels file inside the specific document type "folder".
  this.filesList = pluginsman.genPrivate.type.msoffice.files_list // Resources list xml.
  this.srcFilesList = pluginsman.genPrivate.type.msoffice.src_files_list // For storing extra files inside the document zip.

  //
  // Setup the default data needed by this plugin:
  //

  this.setData(pluginsman.genobj)

  //
  // Catch events inside the document so we can extent it:
  //

  // We want to extend the main API of the pptx document object:
  pluginsman.registerCallback('makeDocApi', function (docObj) {
    funcThis.extendPptxApi(docObj)
  })

  // We want to extend the slide object API:
  pluginsman.registerCallback('newPage', function (docData) {
    funcThis.extendPptxSlideApi(docData)
  })

  // This event tell us that we need to re-create the default data:
  pluginsman.registerCallback('setData', function (docObj) {
    funcThis.setData(docObj)
  })

  // This event tell us that the generator is about to start working:
  pluginsman.registerCallback('beforeGen', function (docObj) {
    funcThis.beforeGen(docObj)
  })

  return this
}
This function creating a pptx based plugin object.
<br /><br />
To create a new feature for the pptx document generator:
<br /><br />
<ul>
<li>Make a copy of this file and rename it to your plugin's name.</li>
<li>Create a new test for it.</li>
<li>During your test you can load your plugin using the extraPlugs options when you creating the pptx object (see the example below).
<li>Follow the instructions in this file.</li>
</ul>
@example <caption>Loading your plugin:</caption>
var yourPlugin = require('your-plugin') // Load your plugin.

var pptx = officegen({
  type: 'pptx',
  extraPlugs: [
    yourPlugin // Tell officegen to use your plugin.
  ]
})
@summary Create a new pptx plugin.
@param {object} pluginsman Access to the plugins manager for pptx documents.
@constructor
@name MakeExamplePlugin