]> granicus.if.org Git - multimarkdown/commitdiff
FIXED: Improve glossaries and abbreviations; Update QuickStart
authorFletcher T. Penney <fletcher@fletcherpenney.net>
Fri, 10 Mar 2017 19:49:21 +0000 (14:49 -0500)
committerFletcher T. Penney <fletcher@fletcherpenney.net>
Fri, 10 Mar 2017 19:49:21 +0000 (14:49 -0500)
18 files changed:
QuickStart.fodt
QuickStart.html
QuickStart.pdf
QuickStart.txt
Sources/libMultiMarkdown/html.c
Sources/libMultiMarkdown/latex.c
Sources/libMultiMarkdown/odf.c
Sources/libMultiMarkdown/writer.c
tests/MMD6Tests/Abbreviations.fodt
tests/MMD6Tests/Abbreviations.html
tests/MMD6Tests/Abbreviations.htmlc
tests/MMD6Tests/Abbreviations.tex
tests/MMD6Tests/Abbreviations.text
tests/MMD6Tests/Glossaries.fodt
tests/MMD6Tests/Glossaries.html
tests/MMD6Tests/Glossaries.htmlc
tests/MMD6Tests/Glossaries.tex
tests/MMD6Tests/Glossaries.text

index 6f243162b95ae66127004af9a25251ecf420d8da..37ec55ade7735624668c9f564f69b149124620b6 100644 (file)
 <?xml version="1.0" encoding="UTF-8"?>
-<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
-     xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
-     xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
-     xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
-     xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
-     xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
-     xmlns:xlink="http://www.w3.org/1999/xlink"
-     xmlns:dc="http://purl.org/dc/elements/1.1/"
-     xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
-     xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
-     xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
-     xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
-     xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
-     xmlns:math="http://www.w3.org/1998/Math/MathML"
-     xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
-     xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
-     xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
-     xmlns:ooo="http://openoffice.org/2004/office"
-     xmlns:ooow="http://openoffice.org/2004/writer"
-     xmlns:oooc="http://openoffice.org/2004/calc"
-     xmlns:dom="http://www.w3.org/2001/xml-events"
-     xmlns:xforms="http://www.w3.org/2002/xforms"
-     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-     xmlns:rpt="http://openoffice.org/2005/report"
-     xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2"
-     xmlns:xhtml="http://www.w3.org/1999/xhtml"
-     xmlns:grddl="http://www.w3.org/2003/g/data-view#"
-     xmlns:tableooo="http://openoffice.org/2009/table"
-     xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0"
-     xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0"
-     xmlns:css3t="http://www.w3.org/TR/css3-text/"
-     office:version="1.2"
-     grddl:transformation="http://docs.oasis-open.org/office/1.2/xslt/odf2rdf.xsl"
-     office:mimetype="application/vnd.oasis.opendocument.text">
-<office:font-face-decls>
-   <style:font-face style:name="Courier New" svg:font-family="'Courier New'"
-                    style:font-adornments="Regular"
-                    style:font-family-generic="modern"
-                    style:font-pitch="fixed"/>
-</office:font-face-decls>
-<office:styles>
-<style:style style:name="Standard" style:family="paragraph" style:class="text">
-      <style:paragraph-properties fo:margin-top="0in" fo:margin-bottom="0.15in"     fo:text-align="justify" style:justify-single-word="false"/>
-   </style:style>
-<style:style style:name="Preformatted_20_Text" style:display-name="Preformatted Text"
-             style:family="paragraph"
-             style:parent-style-name="Standard"
-             style:class="html">
-   <style:paragraph-properties fo:margin-top="0in" fo:margin-bottom="0in" fo:text-align="start"
-                               style:justify-single-word="false"/>
-   <style:text-properties style:font-name="Courier New" fo:font-size="11pt"
-                          style:font-name-asian="Courier New"
-                          style:font-size-asian="11pt"
-                          style:font-name-complex="Courier New"
-                          style:font-size-complex="11pt"/>
-</style:style>
-<style:style style:name="Source_20_Text" style:display-name="Source Text"
-             style:family="text">
-   <style:text-properties style:font-name="Courier New" style:font-name-asian="Courier New"
-                          style:font-name-complex="Courier New"
-                          fo:font-size="11pt"/>
-</style:style>
-<style:style style:name="List" style:family="paragraph"
-             style:parent-style-name="Standard"
-             style:class="list">
+
+<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta>
+       <dc:title>MultiMarkdown v6 Quick Start Guide</dc:title>
+       
+       
+<dc:date>2017-03-10T14:48:35.565769000</dc:date><dc:creator>Fletcher Penney</dc:creator><meta:editing-duration>PT4S</meta:editing-duration><meta:editing-cycles>1</meta:editing-cycles><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="5" meta:paragraph-count="76" meta:word-count="1786" meta:character-count="10882" meta:non-whitespace-character-count="9163"/><meta:generator>LibreOffice/5.0.3.2$MacOSX_X86_64 LibreOffice_project/e5f16313668ac592c1bfb310f4390624e3dbfb75</meta:generator><meta:user-defined meta:name="author">Fletcher T. Penney</meta:user-defined><meta:user-defined meta:name="version">6.0-b</meta:user-defined></office:meta>
+ <office:settings>
+  <config:config-item-set config:name="ooo:view-settings">
+   <config:config-item config:name="ViewAreaTop" config:type="long">0</config:config-item>
+   <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
+   <config:config-item config:name="ViewAreaWidth" config:type="long">16298</config:config-item>
+   <config:config-item config:name="ViewAreaHeight" config:type="long">17762</config:config-item>
+   <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
+   <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
+   <config:config-item-map-indexed config:name="Views">
+    <config:config-item-map-entry>
+     <config:config-item config:name="ViewId" config:type="string">view2</config:config-item>
+     <config:config-item config:name="ViewLeft" config:type="long">2501</config:config-item>
+     <config:config-item config:name="ViewTop" config:type="long">2925</config:config-item>
+     <config:config-item config:name="VisibleLeft" config:type="long">0</config:config-item>
+     <config:config-item config:name="VisibleTop" config:type="long">0</config:config-item>
+     <config:config-item config:name="VisibleRight" config:type="long">16297</config:config-item>
+     <config:config-item config:name="VisibleBottom" config:type="long">17761</config:config-item>
+     <config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
+     <config:config-item config:name="ViewLayoutColumns" config:type="short">0</config:config-item>
+     <config:config-item config:name="ViewLayoutBookMode" config:type="boolean">false</config:config-item>
+     <config:config-item config:name="ZoomFactor" config:type="short">80</config:config-item>
+     <config:config-item config:name="IsSelectedFrame" config:type="boolean">false</config:config-item>
+    </config:config-item-map-entry>
+   </config:config-item-map-indexed>
+  </config:config-item-set>
+  <config:config-item-set config:name="ooo:configuration-settings">
+   <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
+   <config:config-item config:name="PrintPageBackground" config:type="boolean">true</config:config-item>
+   <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
+   <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
+   <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
+   <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
+   <config:config-item config:name="PrintFaxName" config:type="string"/>
+   <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="ClippedPictures" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="FloattableNomargins" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="UnbreakableNumberings" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="TabOverflow" config:type="boolean">true</config:config-item>
+   <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
+   <config:config-item config:name="PrintSingleJobs" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="SmallCapsPercentage66" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
+   <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
+   <config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
+   <config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
+   <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
+   <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
+   <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
+   <config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="RsidRoot" config:type="int">2066055</config:config-item>
+   <config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">true</config:config-item>
+   <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
+   <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
+   <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
+   <config:config-item config:name="MathBaselineAlignment" config:type="boolean">true</config:config-item>
+   <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="PrinterName" config:type="string"/>
+   <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
+   <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
+   <config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
+   <config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
+   <config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
+   <config:config-item config:name="Rsid" config:type="int">2066055</config:config-item>
+   <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
+   <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="PrintEmptyPages" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
+   <config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
+   <config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
+   <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
+   <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
+   <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
+   <config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item>
+  </config:config-item-set>
+ </office:settings>
+ <office:scripts>
+  <office:script script:language="ooo:Basic">
+   <ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/>
+  </office:script>
+ </office:scripts>
+ <office:font-face-decls>
+  <style:font-face style:name="Courier New" svg:font-family="&apos;Courier New&apos;" style:font-adornments="Regular" style:font-family-generic="modern" style:font-pitch="fixed"/>
+  <style:font-face style:name="Liberation Serif" svg:font-family="&apos;Liberation Serif&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
+  <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+  <style:font-face style:name="Arial Unicode MS" svg:font-family="&apos;Arial Unicode MS&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+  <style:default-style style:family="graphic">
+   <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.1181in" draw:shadow-offset-y="0.1181in" draw:start-line-spacing-horizontal="0.1114in" draw:start-line-spacing-vertical="0.1114in" draw:end-line-spacing-horizontal="0.1114in" draw:end-line-spacing-vertical="0.1114in" style:flow-with-text="false"/>
+   <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
+    <style:tab-stops/>
+   </style:paragraph-properties>
+   <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Arial Unicode MS" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Arial Unicode MS" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+  </style:default-style>
+  <style:default-style style:family="paragraph">
+   <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="0.4925in" style:writing-mode="page"/>
+   <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Arial Unicode MS" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Arial Unicode MS" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2"/>
+  </style:default-style>
+  <style:default-style style:family="table">
+   <style:table-properties table:border-model="collapsing"/>
+  </style:default-style>
+  <style:default-style style:family="table-row">
+   <style:table-row-properties fo:keep-together="auto"/>
+  </style:default-style>
+  <style:style style:name="Standard" style:family="paragraph" style:class="text">
+   <style:paragraph-properties fo:margin-top="0in" fo:margin-bottom="0.15in" loext:contextual-spacing="false" fo:text-align="justify" style:justify-single-word="false"/>
+  </style:style>
+  <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="text">
+   <style:paragraph-properties fo:margin-top="0.1665in" fo:margin-bottom="0.0835in" loext:contextual-spacing="false" fo:keep-with-next="always"/>
+   <style:text-properties style:font-name="Liberation Sans" fo:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable" fo:font-size="14pt" style:font-name-asian="Arial Unicode MS" style:font-family-asian="&apos;Arial Unicode MS&apos;" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="14pt" style:font-name-complex="Arial Unicode MS" style:font-family-complex="&apos;Arial Unicode MS&apos;" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="14pt"/>
+  </style:style>
+  <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
+   <style:paragraph-properties fo:margin-top="0in" fo:margin-bottom="0.0972in" loext:contextual-spacing="false" fo:line-height="120%"/>
+  </style:style>
+  <style:style style:name="List" style:family="paragraph" style:parent-style-name="Standard" style:class="list">
    <style:paragraph-properties fo:text-align="start" style:justify-single-word="false"/>
    <style:text-properties style:font-size-asian="12pt"/>
-</style:style>
-<style:style style:name="Quotations" style:family="paragraph"
-             style:parent-style-name="Standard"
-             style:class="html">
-   <style:paragraph-properties fo:margin-left="0.3937in" fo:margin-right="0.3937in" fo:margin-top="0in"
-                               fo:margin-bottom="0.1965in"
-                               fo:text-align="justify"                               style:justify-single-word="false"                               fo:text-indent="0in"
-                               style:auto-text-indent="false"/>
-</style:style>
-<style:style style:name="Table_20_Heading" style:display-name="Table Heading"
-             style:family="paragraph"
-             style:parent-style-name="Table_20_Contents"
-             style:class="extra">
-   <style:paragraph-properties fo:text-align="center" style:justify-single-word="false"
-                               text:number-lines="false"
-                               text:line-number="0"/>
-   <style:text-properties fo:font-weight="bold" style:font-weight-asian="bold"
-                          style:font-weight-complex="bold"/>
-</style:style>
-<style:style style:name="Horizontal_20_Line" style:display-name="Horizontal Line"
-             style:family="paragraph"
-             style:parent-style-name="Standard"
-             style:class="html">
-   <style:paragraph-properties fo:margin-top="0in" fo:margin-bottom="0.1965in"
-                               style:border-line-width-bottom="0.0008in 0.0138in 0.0008in"
-                               fo:padding="0in"
-                               fo:border-left="none"
-                               fo:border-right="none"
-                               fo:border-top="none"
-                               fo:border-bottom="0.0154in double #808080"
-                               text:number-lines="false"
-                               text:line-number="0"
-                               style:join-border="false"/>
+  </style:style>
+  <style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+   <style:paragraph-properties fo:margin-top="0.0835in" fo:margin-bottom="0.0835in" loext:contextual-spacing="false" text:number-lines="false" text:line-number="0"/>
+   <style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-size-asian="12pt" style:font-style-asian="italic" style:font-size-complex="12pt" style:font-style-complex="italic"/>
+  </style:style>
+  <style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">
+   <style:paragraph-properties text:number-lines="false" text:line-number="0"/>
+   <style:text-properties style:font-size-asian="12pt"/>
+  </style:style>
+  <style:style style:name="Preformatted_20_Text" style:display-name="Preformatted Text" style:family="paragraph" style:parent-style-name="Standard" style:class="html">
+   <style:paragraph-properties fo:margin-top="0in" fo:margin-bottom="0in" loext:contextual-spacing="false" fo:text-align="start" style:justify-single-word="false"/>
+   <style:text-properties style:font-name="Courier New" fo:font-family="&apos;Courier New&apos;" style:font-style-name="Regular" style:font-family-generic="modern" style:font-pitch="fixed" fo:font-size="11pt" style:font-name-asian="Courier New" style:font-family-asian="&apos;Courier New&apos;" style:font-style-name-asian="Regular" style:font-family-generic-asian="modern" style:font-pitch-asian="fixed" style:font-size-asian="11pt" style:font-name-complex="Courier New" style:font-family-complex="&apos;Courier New&apos;" style:font-style-name-complex="Regular" style:font-family-generic-complex="modern" style:font-pitch-complex="fixed" style:font-size-complex="11pt"/>
+  </style:style>
+  <style:style style:name="Quotations" style:family="paragraph" style:parent-style-name="Standard" style:class="html">
+   <style:paragraph-properties fo:margin-left="0.3937in" fo:margin-right="0.3937in" fo:margin-top="0in" fo:margin-bottom="0.1965in" loext:contextual-spacing="false" fo:text-align="justify" style:justify-single-word="false" fo:text-indent="0in" style:auto-text-indent="false"/>
+  </style:style>
+  <style:style style:name="Table_20_Contents" style:display-name="Table Contents" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+   <style:paragraph-properties text:number-lines="false" text:line-number="0"/>
+  </style:style>
+  <style:style style:name="Table_20_Heading" style:display-name="Table Heading" style:family="paragraph" style:class="extra">
+   <style:paragraph-properties fo:text-align="center" style:justify-single-word="false" text:number-lines="false" text:line-number="0"/>
+   <style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
+  </style:style>
+  <style:style style:name="Horizontal_20_Line" style:display-name="Horizontal Line" style:family="paragraph" style:parent-style-name="Standard" style:class="html">
+   <style:paragraph-properties fo:margin-top="0in" fo:margin-bottom="0.1965in" loext:contextual-spacing="false" style:border-line-width-bottom="0.0008in 0.0138in 0.0008in" fo:padding="0in" fo:border-left="none" fo:border-right="none" fo:border-top="none" fo:border-bottom="1.11pt double #808080" text:number-lines="false" text:line-number="0" style:join-border="false"/>
    <style:text-properties fo:font-size="6pt" style:font-size-asian="6pt" style:font-size-complex="6pt"/>
-</style:style>
-<style:style style:name="Footnote_20_anchor" style:display-name="Footnote anchor"              style:family="text">    <style:text-properties style:text-position="super 58%"/> </style:style>
-<style:style style:name="TOC_Item" style:family="paragraph" style:parent-style-name="Standard">
- <style:paragraph-properties>
-  <style:tab-stops>
-   <style:tab-stop style:position="6.7283in" style:type="right" style:leader-style="dotted" style:leader-text="."/>
-  </style:tab-stops>
- </style:paragraph-properties>
-</style:style>
+  </style:style>
+  <style:style style:name="TOC_5f_Item" style:display-name="TOC_Item" style:family="paragraph" style:parent-style-name="Standard">
+   <style:paragraph-properties>
+    <style:tab-stops>
+     <style:tab-stop style:position="6.7283in" style:type="right" style:leader-style="dotted" style:leader-text="."/>
+    </style:tab-stops>
+   </style:paragraph-properties>
+  </style:style>
+  <style:style style:name="Header" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+   <style:paragraph-properties text:number-lines="false" text:line-number="0">
+    <style:tab-stops>
+     <style:tab-stop style:position="3.4626in" style:type="center"/>
+     <style:tab-stop style:position="6.9252in" style:type="right"/>
+    </style:tab-stops>
+   </style:paragraph-properties>
+  </style:style>
+  <style:style style:name="Heading_20_2" style:display-name="Heading 2" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="2" style:class="text">
+   <style:paragraph-properties fo:margin-top="0.139in" fo:margin-bottom="0.0835in" loext:contextual-spacing="false"/>
+   <style:text-properties fo:font-size="115%" fo:font-weight="bold" style:font-size-asian="115%" style:font-weight-asian="bold" style:font-size-complex="115%" style:font-weight-complex="bold"/>
+  </style:style>
+  <style:style style:name="Footnote" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+   <style:paragraph-properties fo:margin-left="0.2354in" fo:margin-right="0in" fo:text-indent="-0.2354in" style:auto-text-indent="false" text:number-lines="false" text:line-number="0"/>
+   <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/>
+  </style:style>
+  <style:style style:name="Endnote" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+   <style:paragraph-properties fo:margin-left="0.2354in" fo:margin-right="0in" fo:text-indent="-0.2354in" style:auto-text-indent="false" text:number-lines="false" text:line-number="0"/>
+   <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/>
+  </style:style>
+  <style:style style:name="Heading_20_3" style:display-name="Heading 3" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="3" style:class="text">
+   <style:paragraph-properties fo:margin-top="0.0972in" fo:margin-bottom="0.0835in" loext:contextual-spacing="false"/>
+   <style:text-properties fo:font-size="101%" fo:font-weight="bold" style:font-size-asian="101%" style:font-weight-asian="bold" style:font-size-complex="101%" style:font-weight-complex="bold"/>
+  </style:style>
+  <style:style style:name="Heading_20_4" style:display-name="Heading 4" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="4" style:class="text">
+   <style:paragraph-properties fo:margin-top="0.0835in" fo:margin-bottom="0.0835in" loext:contextual-spacing="false"/>
+   <style:text-properties fo:font-size="95%" fo:font-style="italic" fo:font-weight="bold" style:font-size-asian="95%" style:font-style-asian="italic" style:font-weight-asian="bold" style:font-size-complex="95%" style:font-style-complex="italic" style:font-weight-complex="bold"/>
+  </style:style>
+  <style:style style:name="Contents_20_Heading" style:display-name="Contents Heading" style:family="paragraph" style:parent-style-name="Heading" style:class="index">
+   <style:paragraph-properties fo:margin-left="0in" fo:margin-right="0in" fo:text-indent="0in" style:auto-text-indent="false" text:number-lines="false" text:line-number="0"/>
+   <style:text-properties fo:font-size="16pt" fo:font-weight="bold" style:font-size-asian="16pt" style:font-weight-asian="bold" style:font-size-complex="16pt" style:font-weight-complex="bold"/>
+  </style:style>
+  <style:style style:name="Contents_20_3" style:display-name="Contents 3" style:family="paragraph" style:parent-style-name="Index" style:class="index">
+   <style:paragraph-properties fo:margin-left="0.3929in" fo:margin-right="0in" fo:text-indent="0in" style:auto-text-indent="false">
+    <style:tab-stops>
+     <style:tab-stop style:position="6.5319in" style:type="right" style:leader-style="dotted" style:leader-text="."/>
+    </style:tab-stops>
+   </style:paragraph-properties>
+  </style:style>
+  <style:style style:name="Contents_20_4" style:display-name="Contents 4" style:family="paragraph" style:parent-style-name="Index" style:class="index">
+   <style:paragraph-properties fo:margin-left="0.5898in" fo:margin-right="0in" fo:text-indent="0in" style:auto-text-indent="false">
+    <style:tab-stops>
+     <style:tab-stop style:position="6.3354in" style:type="right" style:leader-style="dotted" style:leader-text="."/>
+    </style:tab-stops>
+   </style:paragraph-properties>
+  </style:style>
+  <style:style style:name="Source_20_Text" style:display-name="Source Text" style:family="text">
+   <style:text-properties style:font-name="Courier New" fo:font-family="&apos;Courier New&apos;" style:font-style-name="Regular" style:font-family-generic="modern" style:font-pitch="fixed" fo:font-size="11pt" style:font-name-asian="Courier New" style:font-family-asian="&apos;Courier New&apos;" style:font-style-name-asian="Regular" style:font-family-generic-asian="modern" style:font-pitch-asian="fixed" style:font-name-complex="Courier New" style:font-family-complex="&apos;Courier New&apos;" style:font-style-name-complex="Regular" style:font-family-generic-complex="modern" style:font-pitch-complex="fixed"/>
+  </style:style>
+  <style:style style:name="Footnote_20_anchor" style:display-name="Footnote anchor" style:family="text">
+   <style:text-properties style:text-position="super 58%"/>
+  </style:style>
+  <style:style style:name="Footnote_20_Symbol" style:display-name="Footnote Symbol" style:family="text"/>
+  <style:style style:name="Endnote_20_Symbol" style:display-name="Endnote Symbol" style:family="text"/>
+  <style:style style:name="Internet_20_link" style:display-name="Internet link" style:family="text">
+   <style:text-properties fo:color="#000080" fo:language="zxx" fo:country="none" style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color" style:language-asian="zxx" style:country-asian="none" style:language-complex="zxx" style:country-complex="none"/>
+  </style:style>
+  <style:style style:name="Standard" style:family="text"/>
+  <style:style style:name="Index_20_Link" style:display-name="Index Link" style:family="text"/>
+  <text:outline-style style:name="Outline">
+   <text:outline-level-style text:level="1" style:num-format="">
+    <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.3in" fo:text-indent="-0.3in" fo:margin-left="0.3in"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="2" style:num-format="">
+    <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.4in" fo:text-indent="-0.4in" fo:margin-left="0.4in"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="3" style:num-format="">
+    <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.5in" fo:text-indent="-0.5in" fo:margin-left="0.5in"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="4" style:num-format="">
+    <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.6in" fo:text-indent="-0.6in" fo:margin-left="0.6in"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="5" style:num-format="">
+    <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.7in" fo:text-indent="-0.7in" fo:margin-left="0.7in"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="6" style:num-format="">
+    <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.8in" fo:text-indent="-0.8in" fo:margin-left="0.8in"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="7" style:num-format="">
+    <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.9in" fo:text-indent="-0.9in" fo:margin-left="0.9in"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="8" style:num-format="">
+    <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1in" fo:text-indent="-1in" fo:margin-left="1in"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="9" style:num-format="">
+    <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.1in" fo:text-indent="-1.1in" fo:margin-left="1.1in"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="10" style:num-format="">
+    <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.2in" fo:text-indent="-1.2in" fo:margin-left="1.2in"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+  </text:outline-style>
   <text:notes-configuration text:note-class="footnote" text:default-style-name="Footnote" text:citation-style-name="Footnote_20_Symbol" text:citation-body-style-name="Footnote_20_anchor" text:master-page-name="Footnote" style:num-format="a" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="page"/>
-  <text:notes-configuration text:note-class="endnote" text:default-style-name="Endnote" text:citation-style-name="Endnote_20_Symbol" text:citation-body-style-name="Endnote_20_anchor" text:master-page-name="Endnote" style:num-format="1" text:start-value="0"/>
-</office:styles>
-<office:automatic-styles>   <style:style style:name="MMD-Italic" style:family="text">
-      <style:text-properties fo:font-style="italic" style:font-style-asian="italic"
-                             style:font-style-complex="italic"/>
-   </style:style>
-   <style:style style:name="MMD-Bold" style:family="text">
-      <style:text-properties fo:font-weight="bold" style:font-weight-asian="bold"
-                             style:font-weight-complex="bold"/>
-   </style:style>
-   <style:style style:name="MMD-Superscript" style:family="text">
-      <style:text-properties style:text-position="super 58%"/>
-   </style:style>
-   <style:style style:name="MMD-Subscript" style:family="text">
-      <style:text-properties style:text-position="sub 58%"/>
-   </style:style>
-   <style:style style:name="Strike" style:family="text">
-      <style:text-properties style:text-line-through-style="solid" />
-   </style:style>
-   <style:style style:name="Underline" style:family="text">
-      <style:text-properties style:text-underline-style="solid" style:text-underline-color="font-color"/>
-   </style:style>
-   <style:style style:name="Highlight" style:family="text">
-      <style:text-properties fo:background-color="#FFFF00" />
-   </style:style>
-   <style:style style:name="Comment" style:family="text">
-      <style:text-properties fo:color="#0000BB" />
-   </style:style>
-<style:style style:name="MMD-Table" style:family="paragraph" style:parent-style-name="Standard">
-   <style:paragraph-properties fo:margin-top="0in" fo:margin-bottom="0.05in"/>
-</style:style>
-<style:style style:name="MMD-Table-Center" style:family="paragraph" style:parent-style-name="MMD-Table">
+  <text:notes-configuration text:note-class="endnote" text:default-style-name="Endnote" text:citation-style-name="Endnote_20_Symbol" text:master-page-name="Endnote" style:num-format="1" text:start-value="0"/>
+  <text:linenumbering-configuration text:number-lines="false" text:offset="0.1965in" style:num-format="1" text:number-position="left" text:increment="5"/>
+ </office:styles>
+ <office:automatic-styles>
+  <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard">
+   <style:paragraph-properties fo:margin-top="0in" fo:margin-bottom="0.05in" loext:contextual-spacing="false"/>
+  </style:style>
+  <style:style style:name="P2" style:family="paragraph" style:parent-style-name="MMD-Table">
    <style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>
-</style:style>
-<style:style style:name="MMD-Table-Right" style:family="paragraph" style:parent-style-name="MMD-Table">
-   <style:paragraph-properties fo:text-align="right" style:justify-single-word="false"/>
-</style:style>
-<style:style style:name="P2" style:family="paragraph" style:parent-style-name="Standard"
-             style:list-style-name="L2">
-<style:paragraph-properties fo:text-align="start" style:justify-single-word="false"/>
-</style:style>
-<style:style style:name="fr1" style:family="graphic" style:parent-style-name="Frame">
-   <style:graphic-properties style:print-content="true" style:vertical-pos="top"
-                             style:vertical-rel="baseline"
-                             fo:padding="0in"
-                             fo:border="none"
-                             style:shadow="none"/>
-</style:style>
-<style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard"
-             style:list-style-name="L1"/>
-<text:list-style style:name="L1">
-       <text:list-level-style-bullet text:level="1" text:style-name="Numbering_20_Symbols" style:num-suffix="." text:bullet-char="•">
-               <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
-                       <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.5in" fo:text-indent="-0.25in" fo:margin-left="0.5in"/>
-               </style:list-level-properties>
-       </text:list-level-style-bullet>
-       <text:list-level-style-bullet text:level="2" text:style-name="Numbering_20_Symbols" style:num-suffix="." text:bullet-char="◦">
-               <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
-                       <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.75in" fo:text-indent="-0.25in" fo:margin-left="0.75in"/>
-               </style:list-level-properties>
-       </text:list-level-style-bullet>
-       <text:list-level-style-bullet text:level="3" text:style-name="Numbering_20_Symbols" style:num-suffix="." text:bullet-char="▪">
-               <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
-                       <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1in" fo:text-indent="-0.25in" fo:margin-left="1in"/>
-               </style:list-level-properties>
-       </text:list-level-style-bullet>
-       <text:list-level-style-number text:level="4" style:num-suffix="." style:num-format="1">
-               <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
-                       <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.25in" fo:text-indent="-0.25in" fo:margin-left="1.25in"/>
-               </style:list-level-properties>
-       </text:list-level-style-number>
-       <text:list-level-style-number text:level="5" style:num-suffix="." style:num-format="1">
-               <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
-                       <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.5in" fo:text-indent="-0.25in" fo:margin-left="1.5in"/>
-               </style:list-level-properties>
-       </text:list-level-style-number>
-       <text:list-level-style-number text:level="6" style:num-suffix="." style:num-format="1">
-               <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
-                       <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.75in" fo:text-indent="-0.25in" fo:margin-left="1.75in"/>
-               </style:list-level-properties>
-       </text:list-level-style-number>
-       <text:list-level-style-number text:level="7" style:num-suffix="." style:num-format="1">
-               <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
-                       <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2in" fo:text-indent="-0.25in" fo:margin-left="2in"/>
-               </style:list-level-properties>
-       </text:list-level-style-number>
-       <text:list-level-style-number text:level="8" style:num-suffix="." style:num-format="1">
-               <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
-                       <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.25in" fo:text-indent="-0.25in" fo:margin-left="2.25in"/>
-               </style:list-level-properties>
-       </text:list-level-style-number>
-       <text:list-level-style-number text:level="9" style:num-suffix="." style:num-format="1">
-               <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
-                       <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.5in" fo:text-indent="-0.25in" fo:margin-left="2.5in"/>
-               </style:list-level-properties>
-       </text:list-level-style-number>
-       <text:list-level-style-number text:level="10" style:num-suffix="." style:num-format="1">
-               <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
-                       <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.75in" fo:text-indent="-0.25in" fo:margin-left="2.75in"/>
-               </style:list-level-properties>
-       </text:list-level-style-number>
-</text:list-style>
-<text:list-style style:name="L2">
-       <text:list-level-style-number text:level="1" text:style-name="Standard" style:num-suffix="." style:num-format="1">
-               <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
-                       <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.5in" fo:text-indent="-0.25in" fo:margin-left="0.5in"/>
-               </style:list-level-properties>
-       </text:list-level-style-number>
-       <text:list-level-style-number text:level="2" text:style-name="Standard" style:num-suffix="." style:num-format="1">
-               <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
-                       <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.75in" fo:text-indent="-0.25in" fo:margin-left="0.75in"/>
-               </style:list-level-properties>
-       </text:list-level-style-number>
-       <text:list-level-style-number text:level="3" text:style-name="Standard" style:num-suffix="." style:num-format="1">
-               <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
-                       <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1in" fo:text-indent="-0.25in" fo:margin-left="1in"/>
-               </style:list-level-properties>
-       </text:list-level-style-number>
-       <text:list-level-style-number text:level="4" text:style-name="Standard" style:num-suffix="." style:num-format="1">
-               <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
-                       <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.25in" fo:text-indent="-0.25in" fo:margin-left="1.25in"/>
-               </style:list-level-properties>
-       </text:list-level-style-number>
-       <text:list-level-style-number text:level="5" text:style-name="Standard" style:num-suffix="." style:num-format="1">
-               <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
-                       <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.5in" fo:text-indent="-0.25in" fo:margin-left="1.5in"/>
-               </style:list-level-properties>
-       </text:list-level-style-number>
-       <text:list-level-style-number text:level="6" text:style-name="Standard" style:num-suffix="." style:num-format="1">
-               <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
-                       <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.75in" fo:text-indent="-0.25in" fo:margin-left="1.75in"/>
-               </style:list-level-properties>
-       </text:list-level-style-number>
-       <text:list-level-style-number text:level="7" text:style-name="Standard" style:num-suffix="." style:num-format="1">
-               <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
-                       <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2in" fo:text-indent="-0.25in" fo:margin-left="2in"/>
-               </style:list-level-properties>
-       </text:list-level-style-number>
-       <text:list-level-style-number text:level="8" text:style-name="Standard" style:num-suffix="." style:num-format="1">
-               <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
-                       <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.25in" fo:text-indent="-0.25in" fo:margin-left="2.25in"/>
-               </style:list-level-properties>
-       </text:list-level-style-number>
-       <text:list-level-style-number text:level="9" text:style-name="Standard" style:num-suffix="." style:num-format="1">
-               <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
-                       <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.5in" fo:text-indent="-0.25in" fo:margin-left="2.5in"/>
-               </style:list-level-properties>
-       </text:list-level-style-number>
-       <text:list-level-style-number text:level="10" text:style-name="Standard" style:num-suffix="." style:num-format="1">
-               <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
-                       <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.75in" fo:text-indent="-0.25in" fo:margin-left="2.75in"/>
-               </style:list-level-properties>
-       </text:list-level-style-number>
-</text:list-style>
-</office:automatic-styles>
+  </style:style>
+  <style:style style:name="P3" style:family="paragraph" style:parent-style-name="MMD-Table">
+   <style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/>
+  </style:style>
+  <style:style style:name="P4" style:family="paragraph" style:parent-style-name="Standard">
+   <style:paragraph-properties fo:text-align="start" style:justify-single-word="false"/>
+  </style:style>
+  <style:style style:name="P5" style:family="paragraph" style:parent-style-name="Contents_20_3">
+   <style:paragraph-properties>
+    <style:tab-stops>
+     <style:tab-stop style:position="6.5319in" style:type="right" style:leader-style="dotted" style:leader-text="."/>
+    </style:tab-stops>
+   </style:paragraph-properties>
+  </style:style>
+  <style:style style:name="P6" style:family="paragraph" style:parent-style-name="Contents_20_4">
+   <style:paragraph-properties>
+    <style:tab-stops>
+     <style:tab-stop style:position="6.3354in" style:type="right" style:leader-style="dotted" style:leader-text="."/>
+    </style:tab-stops>
+   </style:paragraph-properties>
+  </style:style>
+  <style:style style:name="P7" style:family="paragraph" style:parent-style-name="Standard" style:list-style-name="L1"/>
+  <style:style style:name="P8" style:family="paragraph" style:parent-style-name="Standard" style:list-style-name="L1">
+   <style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
+  </style:style>
+  <style:style style:name="T1" style:family="text">
+   <style:text-properties fo:font-style="italic" style:font-style-asian="italic" style:font-style-complex="italic"/>
+  </style:style>
+  <style:style style:name="T2" style:family="text">
+   <style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
+  </style:style>
+  <style:style style:name="T3" style:family="text">
+   <style:text-properties style:text-position="super 58%"/>
+  </style:style>
+  <style:style style:name="T4" style:family="text">
+   <style:text-properties style:text-position="sub 58%"/>
+  </style:style>
+  <style:style style:name="T5" style:family="text">
+   <style:text-properties style:text-line-through-style="solid" style:text-line-through-type="single"/>
+  </style:style>
+  <style:style style:name="T6" style:family="text">
+   <style:text-properties style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color"/>
+  </style:style>
+  <style:style style:name="T7" style:family="text">
+   <style:text-properties fo:background-color="#ffff00" loext:char-shading-value="0"/>
+  </style:style>
+  <style:style style:name="T8" style:family="text">
+   <style:text-properties fo:color="#0000bb"/>
+  </style:style>
+  <style:style style:name="Sect1" style:family="section">
+   <style:section-properties style:editable="false">
+    <style:columns fo:column-count="1" fo:column-gap="0in"/>
+   </style:section-properties>
+  </style:style>
+  <text:list-style style:name="L1">
+   <text:list-level-style-number text:level="1" text:style-name="Standard" style:num-suffix="." style:num-format="1">
+    <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.5in" fo:text-indent="-0.25in" fo:margin-left="0.5in"/>
+    </style:list-level-properties>
+   </text:list-level-style-number>
+   <text:list-level-style-number text:level="2" text:style-name="Standard" style:num-suffix="." style:num-format="1">
+    <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.75in" fo:text-indent="-0.25in" fo:margin-left="0.75in"/>
+    </style:list-level-properties>
+   </text:list-level-style-number>
+   <text:list-level-style-number text:level="3" text:style-name="Standard" style:num-suffix="." style:num-format="1">
+    <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1in" fo:text-indent="-0.25in" fo:margin-left="1in"/>
+    </style:list-level-properties>
+   </text:list-level-style-number>
+   <text:list-level-style-number text:level="4" text:style-name="Standard" style:num-suffix="." style:num-format="1">
+    <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.25in" fo:text-indent="-0.25in" fo:margin-left="1.25in"/>
+    </style:list-level-properties>
+   </text:list-level-style-number>
+   <text:list-level-style-number text:level="5" text:style-name="Standard" style:num-suffix="." style:num-format="1">
+    <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.5in" fo:text-indent="-0.25in" fo:margin-left="1.5in"/>
+    </style:list-level-properties>
+   </text:list-level-style-number>
+   <text:list-level-style-number text:level="6" text:style-name="Standard" style:num-suffix="." style:num-format="1">
+    <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.75in" fo:text-indent="-0.25in" fo:margin-left="1.75in"/>
+    </style:list-level-properties>
+   </text:list-level-style-number>
+   <text:list-level-style-number text:level="7" text:style-name="Standard" style:num-suffix="." style:num-format="1">
+    <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2in" fo:text-indent="-0.25in" fo:margin-left="2in"/>
+    </style:list-level-properties>
+   </text:list-level-style-number>
+   <text:list-level-style-number text:level="8" text:style-name="Standard" style:num-suffix="." style:num-format="1">
+    <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.25in" fo:text-indent="-0.25in" fo:margin-left="2.25in"/>
+    </style:list-level-properties>
+   </text:list-level-style-number>
+   <text:list-level-style-number text:level="9" text:style-name="Standard" style:num-suffix="." style:num-format="1">
+    <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.5in" fo:text-indent="-0.25in" fo:margin-left="2.5in"/>
+    </style:list-level-properties>
+   </text:list-level-style-number>
+   <text:list-level-style-number text:level="10" text:style-name="Standard" style:num-suffix="." style:num-format="1">
+    <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.75in" fo:text-indent="-0.25in" fo:margin-left="2.75in"/>
+    </style:list-level-properties>
+   </text:list-level-style-number>
+  </text:list-style>
+  <style:page-layout style:name="pm1">
+   <style:page-layout-properties fo:page-width="8.5in" fo:page-height="11in" style:num-format="1" style:print-orientation="portrait" fo:margin-top="0.7874in" fo:margin-bottom="0.7874in" fo:margin-left="0.7874in" fo:margin-right="0.7874in" style:writing-mode="lr-tb" style:footnote-max-height="0in">
+    <style:footnote-sep style:width="0.0071in" style:distance-before-sep="0.0398in" style:distance-after-sep="0.0398in" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+   </style:page-layout-properties>
+   <style:header-style/>
+   <style:footer-style/>
+  </style:page-layout>
+  <style:page-layout style:name="pm2">
+   <style:page-layout-properties fo:page-width="8.5in" fo:page-height="11in" style:num-format="1" style:print-orientation="portrait" fo:margin-top="0.7874in" fo:margin-bottom="0.7874in" fo:margin-left="0.7874in" fo:margin-right="0in" style:writing-mode="lr-tb" style:footnote-max-height="0in">
+    <style:footnote-sep style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+   </style:page-layout-properties>
+   <style:header-style>
+    <style:header-footer-properties fo:min-height="0.1965in" fo:margin-left="0in" fo:margin-right="0in" fo:margin-bottom="0in"/>
+   </style:header-style>
+   <style:footer-style/>
+  </style:page-layout>
+  <style:page-layout style:name="pm3">
+   <style:page-layout-properties fo:page-width="8.5in" fo:page-height="11in" style:num-format="1" style:print-orientation="portrait" fo:margin-top="0.7874in" fo:margin-bottom="0.7874in" fo:margin-left="0.7874in" fo:margin-right="0in" style:writing-mode="lr-tb" style:footnote-max-height="0in">
+    <style:footnote-sep style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+   </style:page-layout-properties>
+   <style:header-style/>
+   <style:footer-style/>
+  </style:page-layout>
+ </office:automatic-styles>
  <office:master-styles>
-  <style:master-page style:name="Endnote" >
-    <style:header><text:h text:outline-level="2">Bibliography</text:h></style:header></style:master-page>
-  <style:master-page style:name="Footnote" style:page-layout-name="pm2"/>
+  <style:master-page style:name="Standard" style:page-layout-name="pm1"/>
+  <style:master-page style:name="Endnote" style:page-layout-name="pm2">
+   <style:header>
+    <text:h text:style-name="Heading_20_2" text:outline-level="2">Bibliography</text:h>
+   </style:header>
+  </style:master-page>
+  <style:master-page style:name="Footnote" style:page-layout-name="pm3"/>
  </office:master-styles>
-<office:meta>
-       <dc:title>MultiMarkdown v6 Quick Start Guide</dc:title>
-       <meta:user-defined meta:name="author">Fletcher T. Penney</meta:user-defined>
-       <meta:user-defined meta:name="version">6.0-b</meta:user-defined>
-</office:meta>
-<office:body>
-<office:text>
-<text:table-of-content text:style-name="Sect1" text:protected="true" text:name="Table of Contents1">
-<text:table-of-content-source text:outline-level="10">
-<text:index-title-template text:style-name="Contents_20_Heading">Table of Contents</text:index-title-template>
-</text:table-of-content-source>
-<text:index-body>
-<text:index-title text:style-name="Sect1" text:name="Table of Contents1_Head">
-<text:p text:style-name="Contents_20_Heading">Table of Contents</text:p>
-</text:index-title>
-<text:p text:style-name="TOC_Item"><text:a xlink:type="simple" xlink:href="#introduction" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Introduction  <text:tab/>1</text:a></text:p>
-<text:p text:style-name="TOC_Item"><text:a xlink:type="simple" xlink:href="#performance" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Performance  <text:tab/>1</text:a></text:p>
-<text:p text:style-name="TOC_Item"><text:a xlink:type="simple" xlink:href="#parsetree" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Parse Tree  <text:tab/>1</text:a></text:p>
-<text:p text:style-name="TOC_Item"><text:a xlink:type="simple" xlink:href="#features" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Features  <text:tab/>1</text:a></text:p>
-<text:p text:style-name="TOC_Item"><text:a xlink:type="simple" xlink:href="#abbreviationsoracronyms" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Abbreviations (Or Acronyms)  <text:tab/>1</text:a></text:p>
-<text:p text:style-name="TOC_Item"><text:a xlink:type="simple" xlink:href="#citations" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Citations  <text:tab/>1</text:a></text:p>
-<text:p text:style-name="TOC_Item"><text:a xlink:type="simple" xlink:href="#criticmarkup" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">CriticMarkup  <text:tab/>1</text:a></text:p>
-<text:p text:style-name="TOC_Item"><text:a xlink:type="simple" xlink:href="#emphandstrong" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Emph and Strong  <text:tab/>1</text:a></text:p>
-<text:p text:style-name="TOC_Item"><text:a xlink:type="simple" xlink:href="#fencedcodeblocks" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Fenced Code Blocks  <text:tab/>1</text:a></text:p>
-<text:p text:style-name="TOC_Item"><text:a xlink:type="simple" xlink:href="#glossaryterms" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Glossary Terms  <text:tab/>1</text:a></text:p>
-<text:p text:style-name="TOC_Item"><text:a xlink:type="simple" xlink:href="#internationalization" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Internationalization  <text:tab/>1</text:a></text:p>
-<text:p text:style-name="TOC_Item"><text:a xlink:type="simple" xlink:href="#metadata" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Metadata  <text:tab/>1</text:a></text:p>
-<text:p text:style-name="TOC_Item"><text:a xlink:type="simple" xlink:href="#tableofcontents" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Table of Contents  <text:tab/>1</text:a></text:p>
-<text:p text:style-name="TOC_Item"><text:a xlink:type="simple" xlink:href="#futuresteps" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Future Steps  <text:tab/>1</text:a></text:p>
-</text:index-body>
-</text:table-of-content>
-
-
-<text:h text:outline-level="3"><text:bookmark text:name="introduction"/>Introduction </text:h>
-
-<text:p text:style-name="Standard">Version: 6.0-b</text:p>
-
-<text:p text:style-name="Standard">This document serves as a description of MultiMarkdown (MMD) v6, as well as a sample
-document to demonstrate the various features. Specifically, differences from
-MMD v5 will be pointed out.</text:p>
-
-<text:h text:outline-level="3"><text:bookmark text:name="performance"/>Performance </text:h>
-
-<text:p text:style-name="Standard">A big motivating factor leading to the development of MMD v6 was
-performance. When MMD first migrated from Perl to C (based on <text:a xlink:type="simple" xlink:href="https://github.com/jgm/peg-markdown">peg-
-markdown</text:a>), it was among the fastest
-Markdown parsers available. That was many years ago, and the &#8220;competition&#8221;
-has made a great deal of progress since that time.</text:p>
-
-<text:p text:style-name="Standard">When developing MMD v6, one of my goals was to keep MMD at least in the
-ballpark of the fastest processors. Of course, being <text:span text:style-name="MMD-Italic">the</text:span> fastest would be
-fantastic, but I was more concerned with ensuring that the code was easily
-understood, and easily updated with new features in the future.</text:p>
-
-<text:p text:style-name="Standard">MMD v3 &#8211; v5 used a PEG<text:note text:id="gn1" text:note-class="glossary"><text:note-body><text:p text:style-name="Footnote">Parsing Expression Grammar <text:a xlink:type="simple" xlink:href="https://en.wikipedia.org/wiki/Parsing_expression_grammar">https://en.wikipedia.org/wiki/Parsing_expression_grammar</text:a></text:p></text:note-body></text:note> to handle the parsing. This made it easy to
-understand the relationship between the MMD grammar and the parsing code,
-since they were one and the same. However, the parsing code generated by
-the parsers was not particularly fast, and was prone to troublesome edge
-cases with terrible performance characteristics.</text:p>
-
-<text:p text:style-name="Standard">The first step in MMD v6 parsing is to break the source text into a series
-of tokens, which may consist of plain text, whitespace, or special characters
-such as &#8216;*&#8217;, &#8216;[&#8217;, etc. This chain of tokens is then used to perform the
-actual parsing.</text:p>
-
-<text:p text:style-name="Standard">MMD v6 divides the parsing into two separate phases, which actually fits
-more with Markdown&#8217;s design philosophically.</text:p>
-
-<text:list text:style-name="L2">
-<text:list-item>
-<text:p text:style-name="Standard">Block parsing consists of identifying the &#8220;type&#8221; of each line of the
-source text, and grouping the lines into blocks (e.g. paragraphs, lists,
-blockquotes, etc.) Some blocks are a single line (e.g. ATX headers), and
-others can be many lines long. The block parsing in MMD v6 is handled
-by a parser generated by <text:a xlink:type="simple" xlink:href="http://www.hwaci.com/sw/lemon/">lemon</text:a>. This
-parser allows the block structure to be more readily understood by
-non-programmers, but the generated parser is still fast.</text:p></text:list-item>
-
-<text:list-item>
-<text:p text:style-name="Standard">Span parsing consists of identifying Markdown/MMD structures that occur
-inside of blocks, such as links, images, strong, emph, etc. Most of these
-structures require matching pairs of tokens to specify where the span starts
-and where it ends. Most of these spans allow arbitrary levels of nesting as
-well. This made parsing them correctly in the PEG-based code difficult and
-slow. MMD v6 uses a different approach that is accurate and has good
-performance characteristics even with edge cases. Basically, it keeps a stack
-of each &#8220;opening&#8221; token as it steps through the token chain. When a &#8220;closing&#8221;
-token is found, it is paired with the most recent appropriate opener on the
-stack. Any tokens in between the opener and closer are removed, as they are
-not able to be matched any more. To avoid unnecessary searches for non-
-existent openers, the parser keeps track of which opening tokens have been
-discovered. This allows the parser to continue moving forwards without having
-to go backwards and re-parse any previously visited tokens.</text:p></text:list-item>
-
-</text:list>
-
-<text:p text:style-name="Standard">The result of this redesigned MMD parser is that it can parse short
-documents more quickly than <text:a xlink:type="simple" xlink:href="http://commonmark.org/">CommonMark</text:a>, and takes
-only 15% &#8211; 20% longer to parse long documents. I have not delved too deeply
-into this, but I presume that CommonMark has a bit more &#8220;set-up&#8221; time that
-becomes expensive when parsing a short document (e.g. a paragraph or two). But
-this cost becomes negligible when parsing longer documents (e.g. file sizes of
-1 MB). So depending on your use case, CommonMark may well be faster than
-MMD, but we&#8217;re talking about splitting hairs here&#8230;. Recent comparisons
-show MMD v6 taking approximately 4.37 seconds to parse a 108 MB file
-(approximately 24.8 MB/second), and CommonMark took 3.72 seconds for the same
-file (29.2 MB/second). For comparison, MMD v5.4 took approximately 94
-second for the same file (1.15 MB/second).</text:p>
-
-<text:p text:style-name="Standard">For a more realistic file of approx 28 kb (the source of the Markdown Syntax
-web page), both MMD and CommonMark parse it too quickly to accurately
-measure. In fact, it requires a file consisting of the original file copied
-32 times over (0.85 MB) before <text:span text:style-name="Source_20_Text">/usr/bin/env time</text:span> reports a time over the
-minimum threshold of 0.01 seconds for either program.</text:p>
-
-<text:p text:style-name="Standard">There is still potentially room for additional optimization in MMD.
-However, even if I can&#8217;t close the performance gap with CommonMark on longer
-files, the additional features of MMD compared with Markdown in addition to
-the increased legibility of the source code of MMD (in my biased opinion
-anyway) make this project worthwhile.</text:p>
-
-<text:h text:outline-level="3"><text:bookmark text:name="parsetree"/>Parse Tree </text:h>
-
-<text:p text:style-name="Standard">MMD v6 performs its parsing in the following steps:</text:p>
-
-<text:list text:style-name="L2">
-<text:list-item>
-<text:p text:style-name="Standard">Start with a null-terminated string of source text (C style string)</text:p></text:list-item>
-
-<text:list-item>
-<text:p text:style-name="Standard">Lex string into token chain</text:p></text:list-item>
-
-<text:list-item>
-<text:p text:style-name="Standard">Parse token chain into blocks</text:p></text:list-item>
-
-<text:list-item>
-<text:p text:style-name="Standard">Parse tokens within each block into span level structures (e.g. strong,
-emph, etc.)</text:p></text:list-item>
-
-<text:list-item>
-<text:p text:style-name="Standard">Export the token tree into the desired output format (e.g. HTML, LaTeX,
-etc.) and return the resulting C style string</text:p>
-
-<text:p text:style-name="Standard"><text:span text:style-name="MMD-Bold">OR</text:span></text:p></text:list-item>
-
-<text:list-item>
-<text:p text:style-name="Standard">Use the resulting token tree for your own purposes.</text:p></text:list-item>
-
-</text:list>
-
-<text:p text:style-name="Standard">The token tree (AST<text:note text:id="gn2" text:note-class="glossary"><text:note-body><text:p text:style-name="Footnote">Abstract Syntax Tree <text:a xlink:type="simple" xlink:href="https://en.wikipedia.org/wiki/Abstract_syntax_tree">https://en.wikipedia.org/wiki/Abstract_syntax_tree</text:a></text:p></text:note-body></text:note>) includes starting offsets and length of each token,
-allowing you to use MMD as part of a syntax highlighter. MMD v5 did not
-have this functionality in the public version, in part because the PEG parsers
-used did not provide reliable offset positions, requiring a great deal of
-effort when I adapted MMD for use in <text:a xlink:type="simple" xlink:href="http://multimarkdown.com/">MultiMarkdown
-Composer</text:a>.</text:p>
-
-<text:p text:style-name="Standard">These steps are managed using the <text:span text:style-name="Source_20_Text">mmd_engine</text:span> &#8220;object&#8221;. An individual
-<text:span text:style-name="Source_20_Text">mmd_engine</text:span> cannot be used by multiple threads simultaneously, so if
-libMultiMarkdown is to be used in a multithreaded program, a separate
-<text:span text:style-name="Source_20_Text">mmd_engine</text:span> should be created for each thread. Alternatively, just use the
-slightly more abstracted <text:span text:style-name="Source_20_Text">mmd_convert_string()</text:span> function that handles creating
-and destroying the <text:span text:style-name="Source_20_Text">mmd_engine</text:span> automatically.</text:p>
-
-<text:h text:outline-level="3"><text:bookmark text:name="features"/>Features </text:h>
-
-<text:h text:outline-level="4"><text:bookmark text:name="abbreviationsoracronyms"/>Abbreviations (Or Acronyms) </text:h>
-
-<text:p text:style-name="Standard">This file includes the use of MMD as an abbreviation for MultiMarkdown. The
-abbreviation will be expanded on the first use, and the shortened form will be
-used on subsequent occurrences.</text:p>
-
-<text:p text:style-name="Standard">Abbreviations can be specified using inline or reference syntax. The inline
-variant requires that the abbreviation be wrapped in parentheses and
-immediately follows the <text:span text:style-name="Source_20_Text">&gt;</text:span>.</text:p>
-
-<text:p text:style-name="Preformatted Text">[>MMD] is an abbreviation.  So is [>(MD) Markdown].<text:line-break/><text:line-break/>[>MMD]: MultiMarkdown<text:line-break/></text:p>
-
-<text:h text:outline-level="4"><text:bookmark text:name="citations"/>Citations </text:h>
-
-<text:p text:style-name="Standard">Citations can be specified using an inline syntax, just like inline footnotes.</text:p>
-
-<text:h text:outline-level="4"><text:bookmark text:name="criticmarkup"/>CriticMarkup </text:h>
-
-<text:p text:style-name="Standard">MMD v6 has improved support for <text:a xlink:type="simple" xlink:href="http://criticmarkup.com/">CriticMarkup</text:a>, both in terms of parsing, and
-in terms of support for each output format. You can <text:span text:style-name="Underline">insert text</text:span>,
-<text:span text:style-name="Strike">delete text</text:span>, substitute <text:span text:style-name="Strike">one thing</text:span><text:span text:style-name="Underline">for another</text:span>, <text:span text:style-name="Highlight">highlight text</text:span>,
-and <text:span text:style-name="Comment">leave comments</text:span> in the text.</text:p>
-
-<text:h text:outline-level="4"><text:bookmark text:name="emphandstrong"/>Emph and Strong </text:h>
-
-<text:p text:style-name="Standard">The basics of emphasis and strong emphasis are unchanged, but the parsing
-engine has been improved to be more accurate, particularly in various edge
-cases where proper parsing can be difficult.</text:p>
-
-<text:h text:outline-level="4"><text:bookmark text:name="fencedcodeblocks"/>Fenced Code Blocks </text:h>
-
-<text:p text:style-name="Standard">Fenced code blocks are fundamentally the same as MMD v5, except:</text:p>
-
-<text:list text:style-name="L2">
-<text:list-item>
-<text:p text:style-name="Standard">The leading and trailing fences can be 3, 4, or 5 backticks in length. That
-should be sufficient to account for complex documents without requiring a more
-complex parser.</text:p></text:list-item>
-
-<text:list-item>
-<text:p text:style-name="Standard">If there is no trailing fence, then everything after the leading fence is
-considered to be part of the code block.</text:p></text:list-item>
-
-</text:list>
-
-<text:h text:outline-level="4"><text:bookmark text:name="glossaryterms"/>Glossary Terms </text:h>
-
-<text:p text:style-name="Standard">If there are terms in your document you wish to define in a glossary<text:note text:id="gn3" text:note-class="glossary"><text:note-body><text:p text:style-name="Footnote">The
-glossary collects information about important terms used in your document</text:p></text:note-body></text:note> at
-the end of your document, you can define them using the glossary syntax.</text:p>
-
-<text:p text:style-name="Standard">Glossary terms can be specified using inline or reference syntax. The inline
-variant requires that the abbreviation be wrapped in parentheses and
-immediately follows the <text:span text:style-name="Source_20_Text">?</text:span>.</text:p>
-
-<text:p text:style-name="Preformatted Text">[?(glossary) The glossary collects information about important<text:line-break/>terms used in your document] is a glossary term.<text:line-break/><text:line-break/>[?glossary] is also a glossary term.<text:line-break/><text:line-break/>[?glossary]: The glossary collects information about important<text:line-break/>terms used in your document<text:line-break/></text:p>
-
-<text:h text:outline-level="4"><text:bookmark text:name="internationalization"/>Internationalization </text:h>
-
-<text:p text:style-name="Standard">MMD v6 includes support for substituting certain text phrases in other
-languages. This only affects the HTML format.</text:p>
-
-<text:h text:outline-level="4"><text:bookmark text:name="metadata"/>Metadata </text:h>
-
-<text:p text:style-name="Standard">Metadata in MMD v6 includes new support for LaTeX &#8211; the <text:span text:style-name="Source_20_Text">latex config</text:span> key
-allows you to automatically setup of multiple <text:span text:style-name="Source_20_Text">latex include</text:span> files at once.
-The default setups that I use would typically consist of one LaTeX file to be
-included at the top of the file, one to be included right at the beginning of
-the document, and one to be included at the end of the document. If you want
-to specify the latex files separately, you can use <text:span text:style-name="Source_20_Text">latex leader</text:span>, <text:span text:style-name="Source_20_Text">latex<text:line-break/>begin</text:span>, and <text:span text:style-name="Source_20_Text">latex footer</text:span>.</text:p>
-
-<text:h text:outline-level="4"><text:bookmark text:name="tableofcontents"/>Table of Contents </text:h>
-
-<text:p text:style-name="Standard">By placing <text:span text:style-name="Source_20_Text">{{TOC}}</text:span> in your document, you can insert an automatically
-generated Table of Contents in your document. As of MMD v6, the native
-Table of Contents functionality is used when exporting to LaTeX or
-OpenDocument formats.</text:p>
-
-<text:h text:outline-level="3"><text:bookmark text:name="futuresteps"/>Future Steps </text:h>
-
-<text:p text:style-name="Standard">Some features I plan to implement at some point:</text:p>
-
-<text:list text:style-name="L2">
-<text:list-item>
-<text:p text:style-name="Standard">MMD v5 used to automatically identify abbreviated terms throughout the
-document and substitute them automatically. I plan to reimplement this
-functionality, but will probably improve upon it to include glossary terms,
-and possibly even support for indexing documents in LaTeX (and possibly
-OpenOffice).</text:p></text:list-item>
-
-<text:list-item>
-<text:p text:style-name="Standard">OPML export support is not available in v6. I plan on adding improved
-support for this at some point. I was hoping to be able to re-use the
-existing v6 parser but it might be simpler to use the approach from v5 and
-earlier, which was to have a separate parser tuned to only identify headers
-and &#8220;stuff between headers&#8221;.</text:p></text:list-item>
-
-<text:list-item>
-<text:p text:style-name="Standard">Improved EPUB support. Currently, EPUB support is provided by a separate
-<text:a xlink:type="simple" xlink:href="https://github.com/fletcher/MMD-ePub">tool</text:a>. At some point, I would like to
-better integrate this into MMD itself.</text:p></text:list-item>
-
-</text:list>
-</office:text>
-</office:body>
-</office:document>
+ <office:body>
+  <office:text text:use-soft-page-breaks="true">
+   <text:sequence-decls>
+    <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+    <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+    <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+    <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+   </text:sequence-decls>
+   <text:table-of-content text:style-name="Sect1" text:protected="true" text:name="Table of Contents1">
+    <text:table-of-content-source text:outline-level="10">
+     <text:index-title-template text:style-name="Contents_20_Heading">Table of Contents</text:index-title-template>
+     <text:table-of-content-entry-template text:outline-level="1" text:style-name="Contents_20_1">
+      <text:index-entry-link-start text:style-name="Index_20_Link"/>
+      <text:index-entry-chapter/>
+      <text:index-entry-text/>
+      <text:index-entry-tab-stop style:type="right" style:leader-char="."/>
+      <text:index-entry-page-number/>
+      <text:index-entry-link-end/>
+     </text:table-of-content-entry-template>
+     <text:table-of-content-entry-template text:outline-level="2" text:style-name="Contents_20_2">
+      <text:index-entry-link-start text:style-name="Index_20_Link"/>
+      <text:index-entry-chapter/>
+      <text:index-entry-text/>
+      <text:index-entry-tab-stop style:type="right" style:leader-char="."/>
+      <text:index-entry-page-number/>
+      <text:index-entry-link-end/>
+     </text:table-of-content-entry-template>
+     <text:table-of-content-entry-template text:outline-level="3" text:style-name="Contents_20_3">
+      <text:index-entry-link-start text:style-name="Index_20_Link"/>
+      <text:index-entry-chapter/>
+      <text:index-entry-text/>
+      <text:index-entry-tab-stop style:type="right" style:leader-char="."/>
+      <text:index-entry-page-number/>
+      <text:index-entry-link-end/>
+     </text:table-of-content-entry-template>
+     <text:table-of-content-entry-template text:outline-level="4" text:style-name="Contents_20_4">
+      <text:index-entry-link-start text:style-name="Index_20_Link"/>
+      <text:index-entry-chapter/>
+      <text:index-entry-text/>
+      <text:index-entry-tab-stop style:type="right" style:leader-char="."/>
+      <text:index-entry-page-number/>
+      <text:index-entry-link-end/>
+     </text:table-of-content-entry-template>
+     <text:table-of-content-entry-template text:outline-level="5" text:style-name="Contents_20_5">
+      <text:index-entry-link-start text:style-name="Index_20_Link"/>
+      <text:index-entry-chapter/>
+      <text:index-entry-text/>
+      <text:index-entry-tab-stop style:type="right" style:leader-char="."/>
+      <text:index-entry-page-number/>
+      <text:index-entry-link-end/>
+     </text:table-of-content-entry-template>
+     <text:table-of-content-entry-template text:outline-level="6" text:style-name="Contents_20_6">
+      <text:index-entry-link-start text:style-name="Index_20_Link"/>
+      <text:index-entry-chapter/>
+      <text:index-entry-text/>
+      <text:index-entry-tab-stop style:type="right" style:leader-char="."/>
+      <text:index-entry-page-number/>
+      <text:index-entry-link-end/>
+     </text:table-of-content-entry-template>
+     <text:table-of-content-entry-template text:outline-level="7" text:style-name="Contents_20_7">
+      <text:index-entry-link-start text:style-name="Index_20_Link"/>
+      <text:index-entry-chapter/>
+      <text:index-entry-text/>
+      <text:index-entry-tab-stop style:type="right" style:leader-char="."/>
+      <text:index-entry-page-number/>
+      <text:index-entry-link-end/>
+     </text:table-of-content-entry-template>
+     <text:table-of-content-entry-template text:outline-level="8" text:style-name="Contents_20_8">
+      <text:index-entry-link-start text:style-name="Index_20_Link"/>
+      <text:index-entry-chapter/>
+      <text:index-entry-text/>
+      <text:index-entry-tab-stop style:type="right" style:leader-char="."/>
+      <text:index-entry-page-number/>
+      <text:index-entry-link-end/>
+     </text:table-of-content-entry-template>
+     <text:table-of-content-entry-template text:outline-level="9" text:style-name="Contents_20_9">
+      <text:index-entry-link-start text:style-name="Index_20_Link"/>
+      <text:index-entry-chapter/>
+      <text:index-entry-text/>
+      <text:index-entry-tab-stop style:type="right" style:leader-char="."/>
+      <text:index-entry-page-number/>
+      <text:index-entry-link-end/>
+     </text:table-of-content-entry-template>
+     <text:table-of-content-entry-template text:outline-level="10" text:style-name="Contents_20_10">
+      <text:index-entry-link-start text:style-name="Index_20_Link"/>
+      <text:index-entry-chapter/>
+      <text:index-entry-text/>
+      <text:index-entry-tab-stop style:type="right" style:leader-char="."/>
+      <text:index-entry-page-number/>
+      <text:index-entry-link-end/>
+     </text:table-of-content-entry-template>
+    </text:table-of-content-source>
+    <text:index-body>
+     <text:index-title text:style-name="Sect1" text:name="Table of Contents1_Head">
+      <text:p text:style-name="Contents_20_Heading">Table of Contents</text:p>
+     </text:index-title>
+     <text:p text:style-name="P5"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc577_2026241144" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Introduction<text:tab/>1</text:a></text:p>
+     <text:p text:style-name="P5"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc579_2026241144" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Performance<text:tab/>1</text:a></text:p>
+     <text:p text:style-name="P5"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc581_2026241144" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Parse Tree<text:tab/>3</text:a></text:p>
+     <text:p text:style-name="P5"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc583_2026241144" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Features<text:tab/>3</text:a></text:p>
+     <text:p text:style-name="P6"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc585_2026241144" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Abbreviations (Or Acronyms)<text:tab/>3</text:a></text:p>
+     <text:p text:style-name="P6"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc587_2026241144" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Citations<text:tab/>4</text:a></text:p>
+     <text:p text:style-name="P6"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc589_2026241144" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">CriticMarkup<text:tab/>4</text:a></text:p>
+     <text:p text:style-name="P6"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc591_2026241144" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Emph and Strong<text:tab/>4</text:a></text:p>
+     <text:p text:style-name="P6"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc593_2026241144" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Fenced Code Blocks<text:tab/>4</text:a></text:p>
+     <text:p text:style-name="P6"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc595_2026241144" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Glossary Terms<text:tab/>4</text:a></text:p>
+     <text:p text:style-name="P6"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc597_2026241144" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Internationalization<text:tab/>4</text:a></text:p>
+     <text:p text:style-name="P6"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc599_2026241144" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Metadata<text:tab/>5</text:a></text:p>
+     <text:p text:style-name="P6"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc601_2026241144" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Table of Contents<text:tab/>5</text:a></text:p>
+     <text:p text:style-name="P5"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc603_2026241144" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">Future Steps<text:tab/>5</text:a></text:p>
+    </text:index-body>
+   </text:table-of-content>
+   <text:h text:style-name="Heading_20_3" text:outline-level="3"><text:bookmark text:name="introduction"/><text:bookmark-start text:name="__RefHeading___Toc577_2026241144"/>Introduction <text:bookmark-end text:name="__RefHeading___Toc577_2026241144"/></text:h>
+   <text:p text:style-name="Standard">Version: 6.0-b</text:p>
+   <text:p text:style-name="Standard">This document serves as a description of MultiMarkdown (MMD) v6, as well as a sample document to demonstrate the various features. Specifically, differences from MMD v5 will be pointed out.</text:p>
+   <text:h text:style-name="Heading_20_3" text:outline-level="3"><text:bookmark text:name="performance"/><text:bookmark-start text:name="__RefHeading___Toc579_2026241144"/>Performance <text:bookmark-end text:name="__RefHeading___Toc579_2026241144"/></text:h>
+   <text:p text:style-name="Standard">A big motivating factor leading to the development of MMD v6 was performance. When MMD first migrated from Perl to C (based on <text:a xlink:type="simple" xlink:href="https://github.com/jgm/peg-markdown" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">peg- markdown</text:a>), it was among the fastest Markdown parsers available. That was many years ago, and the “competition” has made a great deal of progress since that time.</text:p>
+   <text:p text:style-name="Standard">When developing MMD v6, one of my goals was to keep MMD at least in the ballpark of the fastest processors. Of course, being <text:span text:style-name="T1">the</text:span> fastest would be fantastic, but I was more concerned with ensuring that the code was easily understood, and easily updated with new features in the future.</text:p>
+   <text:p text:style-name="Standard">MMD v3 – v5 used a PEG<text:note text:id="ftn1" text:note-class="footnote"><text:note-citation>a</text:note-citation><text:note-body>
+      <text:p text:style-name="Footnote">Parsing Expression Grammar <text:a xlink:type="simple" xlink:href="https://en.wikipedia.org/wiki/Parsing_expression_grammar" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">https://en.wikipedia.org/wiki/Parsing_expression_grammar</text:a></text:p></text:note-body></text:note> to handle the parsing. This made it easy to understand the relationship between the MMD grammar and the parsing code, since they were one and the same. However, the <text:soft-page-break/>parsing code generated by the parsers was not particularly fast, and was prone to troublesome edge cases with terrible performance characteristics.</text:p>
+   <text:p text:style-name="Standard">The first step in MMD v6 parsing is to break the source text into a series of tokens, which may consist of plain text, whitespace, or special characters such as ‘*’, ‘[’, etc. This chain of tokens is then used to perform the actual parsing.</text:p>
+   <text:p text:style-name="Standard">MMD v6 divides the parsing into two separate phases, which actually fits more with Markdown’s design philosophically.</text:p>
+   <text:list xml:id="list5864793695062672106" text:style-name="L1">
+    <text:list-item>
+     <text:p text:style-name="P7">Block parsing consists of identifying the “type” of each line of the source text, and grouping the lines into blocks (e.g. paragraphs, lists, blockquotes, etc.) Some blocks are a single line (e.g. ATX headers), and others can be many lines long. The block parsing in MMD v6 is handled by a parser generated by <text:a xlink:type="simple" xlink:href="http://www.hwaci.com/sw/lemon/" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">lemon</text:a>. This parser allows the block structure to be more readily understood by non-programmers, but the generated parser is still fast.</text:p>
+    </text:list-item>
+    <text:list-item>
+     <text:p text:style-name="P7">Span parsing consists of identifying Markdown/MMD structures that occur inside of blocks, such as links, images, strong, emph, etc. Most of these structures require matching pairs of tokens to specify where the span starts and where it ends. Most of these spans allow arbitrary levels of nesting as well. This made parsing them correctly in the PEG-based code difficult and slow. MMD v6 uses a different approach that is accurate and has good performance characteristics even with edge cases. Basically, it keeps a stack of each “opening” token as it steps through the token chain. When a “closing” token is found, it is paired with the most recent appropriate opener on the stack. Any tokens in between the opener and closer are removed, as they are not able to be matched any more. To avoid unnecessary searches for non- existent openers, the parser keeps track of which opening tokens have been discovered. This allows the parser to continue moving forwards without having to go backwards and re-parse any previously visited tokens.</text:p>
+    </text:list-item>
+   </text:list>
+   <text:p text:style-name="Standard">The result of this redesigned MMD parser is that it can parse short documents more quickly than <text:a xlink:type="simple" xlink:href="http://commonmark.org/" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">CommonMark</text:a>, and takes only 15% – 20% longer to parse long documents. I have not delved too deeply into this, but I presume that CommonMark has a bit more “set-up” time that becomes expensive when parsing a short document (e.g. a paragraph or two). But this cost becomes negligible when parsing longer documents (e.g. file sizes of 1 MB). So depending on your use case, CommonMark may well be faster than MMD, but we’re talking about splitting hairs here…. Recent comparisons show MMD v6 taking approximately 4.37 seconds to parse a 108 MB file (approximately 24.8 MB/second), and CommonMark took 3.72 seconds for the same file (29.2 MB/second). For comparison, MMD v5.4 took approximately 94 second for the same file (1.15 MB/second).</text:p>
+   <text:p text:style-name="Standard">For a more realistic file of approx 28 kb (the source of the Markdown Syntax web page), both MMD and CommonMark parse it too quickly to accurately measure. In fact, it requires a file consisting of the original file copied 32 times over (0.85 MB) before <text:span text:style-name="Source_20_Text">/usr/bin/env time</text:span> reports a time over the minimum threshold of 0.01 seconds for either program.</text:p>
+   <text:p text:style-name="Standard">There is still potentially room for additional optimization in MMD. However, even if I can’t close the performance gap with CommonMark on longer files, the additional features of MMD compared with Markdown in addition to the increased legibility of the source code of MMD (in my biased opinion anyway) make this project worthwhile.</text:p>
+   <text:h text:style-name="Heading_20_3" text:outline-level="3"><text:bookmark text:name="parsetree"/><text:bookmark-start text:name="__RefHeading___Toc581_2026241144"/><text:soft-page-break/>Parse Tree <text:bookmark-end text:name="__RefHeading___Toc581_2026241144"/></text:h>
+   <text:p text:style-name="Standard">MMD v6 performs its parsing in the following steps:</text:p>
+   <text:list xml:id="list144832536442021" text:style-name="L1">
+    <text:list-item>
+     <text:p text:style-name="P7">Start with a null-terminated string of source text (C style string)</text:p>
+    </text:list-item>
+    <text:list-item>
+     <text:p text:style-name="P7">Lex string into token chain</text:p>
+    </text:list-item>
+    <text:list-item>
+     <text:p text:style-name="P7">Parse token chain into blocks</text:p>
+    </text:list-item>
+    <text:list-item>
+     <text:p text:style-name="P7">Parse tokens within each block into span level structures (e.g. strong, emph, etc.)</text:p>
+    </text:list-item>
+    <text:list-item>
+     <text:p text:style-name="P7">Export the token tree into the desired output format (e.g. HTML, LaTeX, etc.) and return the resulting C style string</text:p>
+     <text:p text:style-name="P8">OR</text:p>
+    </text:list-item>
+    <text:list-item>
+     <text:p text:style-name="P7">Use the resulting token tree for your own purposes.</text:p>
+    </text:list-item>
+   </text:list>
+   <text:p text:style-name="Standard">The token tree (AST<text:note text:id="ftn2" text:note-class="footnote"><text:note-citation>a</text:note-citation><text:note-body>
+      <text:p text:style-name="Footnote">Abstract Syntax Tree <text:a xlink:type="simple" xlink:href="https://en.wikipedia.org/wiki/Abstract_syntax_tree" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">https://en.wikipedia.org/wiki/Abstract_syntax_tree</text:a></text:p></text:note-body></text:note>) includes starting offsets and length of each token, allowing you to use MMD as part of a syntax highlighter. MMD v5 did not have this functionality in the public version, in part because the PEG parsers used did not provide reliable offset positions, requiring a great deal of effort when I adapted MMD for use in <text:a xlink:type="simple" xlink:href="http://multimarkdown.com/" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">MultiMarkdown Composer</text:a>.</text:p>
+   <text:p text:style-name="Standard">These steps are managed using the <text:span text:style-name="Source_20_Text">mmd_engine</text:span> “object”. An individual <text:span text:style-name="Source_20_Text">mmd_engine</text:span> cannot be used by multiple threads simultaneously, so if libMultiMarkdown is to be used in a multithreaded program, a separate <text:span text:style-name="Source_20_Text">mmd_engine</text:span> should be created for each thread. Alternatively, just use the slightly more abstracted <text:span text:style-name="Source_20_Text">mmd_convert_string()</text:span> function that handles creating and destroying the <text:span text:style-name="Source_20_Text">mmd_engine</text:span> automatically.</text:p>
+   <text:h text:style-name="Heading_20_3" text:outline-level="3"><text:bookmark text:name="features"/><text:bookmark-start text:name="__RefHeading___Toc583_2026241144"/>Features <text:bookmark-end text:name="__RefHeading___Toc583_2026241144"/></text:h>
+   <text:h text:style-name="Heading_20_4" text:outline-level="4"><text:bookmark text:name="abbreviationsoracronyms"/><text:bookmark-start text:name="__RefHeading___Toc585_2026241144"/>Abbreviations (Or Acronyms) <text:bookmark-end text:name="__RefHeading___Toc585_2026241144"/></text:h>
+   <text:p text:style-name="Standard">This file includes the use of MMD as an abbreviation for MultiMarkdown. The abbreviation will be expanded on the first use, and the shortened form will be used on subsequent occurrences.</text:p>
+   <text:p text:style-name="Standard">Abbreviations can be specified using inline or reference syntax. The inline variant requires that the abbreviation be wrapped in parentheses and immediately follows the <text:span text:style-name="Source_20_Text">&gt;</text:span>.</text:p>
+   <text:p text:style-name="Preformatted_20_Text">[&gt;MMD] is an abbreviation. So is [&gt;(MD) Markdown].<text:line-break/><text:line-break/>[&gt;MMD]: MultiMarkdown<text:line-break/></text:p>
+   <text:p text:style-name="Standard">There is also a “shortcut” method for abbreviations that is similar to the approach used in prior versions of MMD. You specify the definition for the abbreviation in the usual manner, but MMD will automatically identify each instance where the abbreviation is used and substitute it automatically. In this case, the abbreviation is limited to a more basic character set which includes letters, numbers, periods, and hyphens, but not much else. For more complex abbreviations, you must explicitly mark uses of the abbreviation.</text:p>
+   <text:h text:style-name="Heading_20_4" text:outline-level="4"><text:bookmark text:name="citations"/><text:bookmark-start text:name="__RefHeading___Toc587_2026241144"/><text:soft-page-break/>Citations <text:bookmark-end text:name="__RefHeading___Toc587_2026241144"/></text:h>
+   <text:p text:style-name="Standard">Citations can be specified using an inline syntax, just like inline footnotes.</text:p>
+   <text:h text:style-name="Heading_20_4" text:outline-level="4"><text:bookmark text:name="criticmarkup"/><text:bookmark-start text:name="__RefHeading___Toc589_2026241144"/>CriticMarkup <text:bookmark-end text:name="__RefHeading___Toc589_2026241144"/></text:h>
+   <text:p text:style-name="Standard">MMD v6 has improved support for <text:a xlink:type="simple" xlink:href="http://criticmarkup.com/" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">CriticMarkup</text:a>, both in terms of parsing, and in terms of support for each output format. You can <text:span text:style-name="T6">insert text</text:span>, <text:span text:style-name="T5">delete text</text:span>, substitute <text:span text:style-name="T5">one thing</text:span><text:span text:style-name="T6">for another</text:span>, <text:span text:style-name="T7">highlight text</text:span>, and <text:span text:style-name="T8">leave comments</text:span> in the text.</text:p>
+   <text:h text:style-name="Heading_20_4" text:outline-level="4"><text:bookmark text:name="emphandstrong"/><text:bookmark-start text:name="__RefHeading___Toc591_2026241144"/>Emph and Strong <text:bookmark-end text:name="__RefHeading___Toc591_2026241144"/></text:h>
+   <text:p text:style-name="Standard">The basics of emphasis and strong emphasis are unchanged, but the parsing engine has been improved to be more accurate, particularly in various edge cases where proper parsing can be difficult.</text:p>
+   <text:h text:style-name="Heading_20_4" text:outline-level="4"><text:bookmark text:name="fencedcodeblocks"/><text:bookmark-start text:name="__RefHeading___Toc593_2026241144"/>Fenced Code Blocks <text:bookmark-end text:name="__RefHeading___Toc593_2026241144"/></text:h>
+   <text:p text:style-name="Standard">Fenced code blocks are fundamentally the same as MMD v5, except:</text:p>
+   <text:list xml:id="list144832569156609" text:style-name="L1">
+    <text:list-item>
+     <text:p text:style-name="P7">The leading and trailing fences can be 3, 4, or 5 backticks in length. That should be sufficient to account for complex documents without requiring a more complex parser.</text:p>
+    </text:list-item>
+    <text:list-item>
+     <text:p text:style-name="P7">If there is no trailing fence, then everything after the leading fence is considered to be part of the code block.</text:p>
+    </text:list-item>
+   </text:list>
+   <text:h text:style-name="Heading_20_4" text:outline-level="4"><text:bookmark text:name="glossaryterms"/><text:bookmark-start text:name="__RefHeading___Toc595_2026241144"/>Glossary Terms <text:bookmark-end text:name="__RefHeading___Toc595_2026241144"/></text:h>
+   <text:p text:style-name="Standard">If there are terms in your document you wish to define in a glossary<text:note text:id="ftn3" text:note-class="footnote"><text:note-citation>a</text:note-citation><text:note-body>
+      <text:p text:style-name="Footnote">The glossary collects information about important terms used in your document</text:p></text:note-body></text:note> at the end of your document, you can define them using the glossary syntax.</text:p>
+   <text:p text:style-name="Standard">Glossary terms can be specified using inline or reference syntax. The inline variant requires that the abbreviation be wrapped in parentheses and immediately follows the <text:span text:style-name="Source_20_Text">?</text:span>.</text:p>
+   <text:p text:style-name="Preformatted_20_Text">[?(glossary) The glossary collects information about important<text:line-break/>terms used in your document] is a glossary term.<text:line-break/><text:line-break/>[?glossary] is also a glossary term.<text:line-break/><text:line-break/>[?glossary]: The glossary collects information about important<text:line-break/>terms used in your document<text:line-break/></text:p>
+   <text:p text:style-name="Standard">Much like abbreviations, there is also a “shortcut” method that is similar to the approach used in prior versions of MMD. You specify the definition for the glossary term in the usual manner, but MMD will automatically identify each instance where the term is used and substitute it automatically. In this case, the term is limited to a more basic character set which includes letters, numbers, periods, and hyphens, but not much else. For more complex glossary terms, you must explicitly mark uses of the term.</text:p>
+   <text:h text:style-name="Heading_20_4" text:outline-level="4"><text:bookmark text:name="internationalization"/><text:bookmark-start text:name="__RefHeading___Toc597_2026241144"/>Internationalization <text:bookmark-end text:name="__RefHeading___Toc597_2026241144"/></text:h>
+   <text:p text:style-name="Standard">MMD v6 includes support for substituting certain text phrases in other languages. This only affects the HTML format.</text:p>
+   <text:h text:style-name="Heading_20_4" text:outline-level="4"><text:bookmark text:name="metadata"/><text:bookmark-start text:name="__RefHeading___Toc599_2026241144"/><text:soft-page-break/>Metadata <text:bookmark-end text:name="__RefHeading___Toc599_2026241144"/></text:h>
+   <text:p text:style-name="Standard">Metadata in MMD v6 includes new support for LaTeX – the <text:span text:style-name="Source_20_Text">latex config</text:span> key allows you to automatically setup of multiple <text:span text:style-name="Source_20_Text">latex include</text:span> files at once. The default setups that I use would typically consist of one LaTeX file to be included at the top of the file, one to be included right at the beginning of the document, and one to be included at the end of the document. If you want to specify the latex files separately, you can use <text:span text:style-name="Source_20_Text">latex leader</text:span>, <text:span text:style-name="Source_20_Text">latex<text:line-break/>begin</text:span>, and <text:span text:style-name="Source_20_Text">latex footer</text:span>.</text:p>
+   <text:h text:style-name="Heading_20_4" text:outline-level="4"><text:bookmark text:name="tableofcontents"/><text:bookmark-start text:name="__RefHeading___Toc601_2026241144"/>Table of Contents <text:bookmark-end text:name="__RefHeading___Toc601_2026241144"/></text:h>
+   <text:p text:style-name="Standard">By placing <text:span text:style-name="Source_20_Text">{{TOC}}</text:span> in your document, you can insert an automatically generated Table of Contents in your document. As of MMD v6, the native Table of Contents functionality is used when exporting to LaTeX or OpenDocument formats.</text:p>
+   <text:h text:style-name="Heading_20_3" text:outline-level="3"><text:bookmark text:name="futuresteps"/><text:bookmark-start text:name="__RefHeading___Toc603_2026241144"/>Future Steps <text:bookmark-end text:name="__RefHeading___Toc603_2026241144"/></text:h>
+   <text:p text:style-name="Standard">Some features I plan to implement at some point:</text:p>
+   <text:list xml:id="list144831327570823" text:style-name="L1">
+    <text:list-item>
+     <text:p text:style-name="P7">MMD v5 used to automatically identify abbreviated terms throughout the document and substitute them automatically. I plan to reimplement this functionality, but will probably improve upon it to include glossary terms, and possibly even support for indexing documents in LaTeX (and possibly OpenOffice).</text:p>
+    </text:list-item>
+    <text:list-item>
+     <text:p text:style-name="P7">OPML export support is not available in v6. I plan on adding improved support for this at some point. I was hoping to be able to re-use the existing v6 parser but it might be simpler to use the approach from v5 and earlier, which was to have a separate parser tuned to only identify headers and “stuff between headers”.</text:p>
+    </text:list-item>
+    <text:list-item>
+     <text:p text:style-name="P7">Improved EPUB support. Currently, EPUB support is provided by a separate <text:a xlink:type="simple" xlink:href="https://github.com/fletcher/MMD-ePub" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">tool</text:a>. At some point, I would like to better integrate this into MMD itself.</text:p>
+    </text:list-item>
+   </text:list>
+  </office:text>
+ </office:body>
+</office:document>
\ No newline at end of file
index 7fa3ff9f52c766f90b2625e246f14b2942f46f9b..ebb2b722b60415f1a2f210b2bed37e3eb6bc9d51 100644 (file)
@@ -78,7 +78,7 @@ non-programmers, but the generated parser is still fast.</p></li>
 inside of blocks, such as links, images, strong, emph, etc. Most of these
 structures require matching pairs of tokens to specify where the span starts
 and where it ends. Most of these spans allow arbitrary levels of nesting as
-well. This made parsing them correctly in the PEG-based code difficult and
+well. This made parsing them correctly in the <a href="#gn:1" title="see glossary" class="glossary">PEG</a>-based code difficult and
 slow. <abbr title="MultiMarkdown">MMD</abbr> v6 uses a different approach that is accurate and has good
 performance characteristics even with edge cases. Basically, it keeps a stack
 of each &#8220;opening&#8221; token as it steps through the token chain. When a &#8220;closing&#8221;
@@ -134,9 +134,9 @@ etc.) and return the resulting C style string</p>
 
 <p>The token tree (<a href="#gn:2" id="gnref:2" title="see glossary" class="glossary">AST</a>) includes starting offsets and length of each token,
 allowing you to use <abbr title="MultiMarkdown">MMD</abbr> as part of a syntax highlighter. <abbr title="MultiMarkdown">MMD</abbr> v5 did not
-have this functionality in the public version, in part because the PEG parsers
+have this functionality in the public version, in part because the <a href="#gn:1" title="see glossary" class="glossary">PEG</a> parsers
 used did not provide reliable offset positions, requiring a great deal of
-effort when I adapted MMD for use in <a href="http://multimarkdown.com/">MultiMarkdown
+effort when I adapted <abbr title="MultiMarkdown">MMD</abbr> for use in <a href="http://multimarkdown.com/">MultiMarkdown
 Composer</a>.</p>
 
 <p>These steps are managed using the <code>mmd_engine</code> &#8220;object&#8221;. An individual
@@ -163,6 +163,14 @@ immediately follows the <code>&gt;</code>.</p>
 [>MMD]: MultiMarkdown
 </code></pre>
 
+<p>There is also a &#8220;shortcut&#8221; method for abbreviations that is similar to the
+approach used in prior versions of <abbr title="MultiMarkdown">MMD</abbr>. You specify the definition for the
+abbreviation in the usual manner, but <abbr title="MultiMarkdown">MMD</abbr> will automatically identify each
+instance where the abbreviation is used and substitute it automatically. In
+this case, the abbreviation is limited to a more basic character set which
+includes letters, numbers, periods, and hyphens, but not much else. For more
+complex abbreviations, you must explicitly mark uses of the abbreviation.</p>
+
 <h4 id="citations">Citations </h4>
 
 <p>Citations can be specified using an inline syntax, just like inline footnotes.</p>
@@ -210,6 +218,14 @@ terms used in your document] is a glossary term.
 terms used in your document
 </code></pre>
 
+<p>Much like abbreviations, there is also a &#8220;shortcut&#8221; method that is similar to
+the approach used in prior versions of <abbr title="MultiMarkdown">MMD</abbr>. You specify the definition for
+the glossary term in the usual manner, but <abbr title="MultiMarkdown">MMD</abbr> will automatically identify
+each instance where the term is used and substitute it automatically. In this
+case, the term is limited to a more basic character set which includes
+letters, numbers, periods, and hyphens, but not much else. For more complex
+glossary terms, you must explicitly mark uses of the term.</p>
+
 <h4 id="internationalization">Internationalization </h4>
 
 <p><abbr title="MultiMarkdown">MMD</abbr> v6 includes support for substituting certain text phrases in other
index eda4faa423b220c5f58b77a0856cc5a4445db7c7..ef6aa0361e16aefe158fcfac856e9e9e29e2d433 100644 (file)
Binary files a/QuickStart.pdf and b/QuickStart.pdf differ
index 4818a01a631911f673f1730cf07e5ab3432998b1..dae3a657444833664ac89e2b7336aef543880b09 100644 (file)
@@ -12,53 +12,53 @@ Base Header Level:  3
 
 Version: [%version]
 
-This document serves as a description of [>MMD] v6, as well as a sample
+This document serves as a description of MMD v6, as well as a sample
 document to demonstrate the various features.  Specifically, differences from
-[>MMD] v5 will be pointed out.
+MMD v5 will be pointed out.
 
 
 # Performance # 
 
-A big motivating factor leading to the development of [>MMD] v6 was
-performance.  When [>MMD] first migrated from Perl to C (based on [peg-
+A big motivating factor leading to the development of MMD v6 was
+performance.  When MMD first migrated from Perl to C (based on [peg-
 markdown](https://github.com/jgm/peg-markdown)), it was among the fastest
 Markdown parsers available.  That was many years ago, and the "competition"
 has made a great deal of progress since that time.
 
-When developing [>MMD] v6, one of my goals was to keep [>MMD] at least in the
+When developing MMD v6, one of my goals was to keep MMD at least in the
 ballpark of the fastest processors.  Of course, being *the* fastest would be
 fantastic, but I was more concerned with ensuring that the code was easily
 understood, and easily updated with new features in the future.
 
-[>MMD] v3 -- v5 used a [?PEG] to handle the parsing.  This made it easy to
-understand the relationship between the [>MMD] grammar and the parsing code,
+MMD v3 -- v5 used a PEG to handle the parsing.  This made it easy to
+understand the relationship between the MMD grammar and the parsing code,
 since they were one and the same.  However, the parsing code generated by
 the parsers was not particularly fast, and was prone to troublesome edge
 cases with terrible performance characteristics.
 
-The first step in [>MMD] v6 parsing is to break the source text into a series
+The first step in MMD v6 parsing is to break the source text into a series
 of tokens, which may consist of plain text, whitespace, or special characters
 such as '*', '[', etc.  This chain of tokens is then used to perform the
 actual parsing.
 
-[>MMD] v6 divides the parsing into two separate phases, which actually fits
+MMD v6 divides the parsing into two separate phases, which actually fits
 more with Markdown's design philosophically.
 
 1. Block parsing consists of identifying the "type" of each line of the 
 source text, and grouping the lines into blocks (e.g. paragraphs, lists,
 blockquotes, etc.)  Some blocks are a single line (e.g. ATX headers), and
-others can be many lines long.  The block parsing in [>MMD] v6 is handled
+others can be many lines long.  The block parsing in MMD v6 is handled
 by a parser generated by [lemon](http://www.hwaci.com/sw/lemon/).  This
 parser allows the block structure to be more readily understood by 
 non-programmers, but the generated parser is still fast.
 
 
-2. Span parsing consists of identifying Markdown/[>MMD] structures that occur
+2. Span parsing consists of identifying Markdown/MMD structures that occur
 inside of blocks, such as links, images, strong, emph, etc.  Most of these
 structures require matching pairs of tokens to specify where the span starts
 and where it ends.  Most of these spans allow arbitrary levels of nesting as
 well.  This made parsing them correctly in the PEG-based code difficult and
-slow.  [>MMD] v6 uses a different approach that is accurate and has good
+slow.  MMD v6 uses a different approach that is accurate and has good
 performance characteristics even with edge cases.  Basically, it keeps a stack
 of each "opening" token as it steps through the token chain.  When a "closing"
 token is found, it is paired with the most recent appropriate opener on the
@@ -68,35 +68,35 @@ existent openers, the parser keeps track of which opening tokens have been
 discovered.  This allows the parser to continue moving forwards without having
 to go backwards and re-parse any previously visited tokens.
 
-The result of this redesigned [>MMD] parser is that it can parse short
+The result of this redesigned MMD parser is that it can parse short
 documents more quickly than [CommonMark](http://commonmark.org/), and takes
 only 15% -- 20% longer to parse long documents.  I have not delved too deeply
 into this, but I presume that CommonMark has a bit more "set-up" time that
 becomes expensive when parsing a short document (e.g. a paragraph or two). But
 this cost becomes negligible when parsing longer documents (e.g. file sizes of
 1 MB).  So depending on your use case, CommonMark may well be faster than
-[>MMD], but we're talking about splitting hairs here....  Recent comparisons
-show [>MMD] v6 taking approximately 4.37 seconds to parse a 108 MB file
+MMD, but we're talking about splitting hairs here....  Recent comparisons
+show MMD v6 taking approximately 4.37 seconds to parse a 108 MB file
 (approximately 24.8 MB/second), and CommonMark took 3.72 seconds for the same
-file (29.2 MB/second).  For comparison, [>MMD] v5.4 took approximately 94
+file (29.2 MB/second).  For comparison, MMD v5.4 took approximately 94
 second for the same file (1.15 MB/second).
 
 For a more realistic file of approx 28 kb (the source of the Markdown Syntax
-web page), both [>MMD] and CommonMark parse it too quickly to accurately
+web page), both MMD and CommonMark parse it too quickly to accurately
 measure.  In fact, it requires a file consisting of the original file copied
 32 times over (0.85 MB) before `/usr/bin/env time` reports a time over the
 minimum threshold of 0.01 seconds for either program.
 
-There is still potentially room for additional optimization in [>MMD].
+There is still potentially room for additional optimization in MMD.
 However, even if I can't close the performance gap with CommonMark on longer
-files, the additional features of [>MMD] compared with Markdown in addition to
-the increased legibility of the source code of [>MMD] (in my biased opinion
+files, the additional features of MMD compared with Markdown in addition to
+the increased legibility of the source code of MMD (in my biased opinion
 anyway) make this project worthwhile.
 
 
 # Parse Tree #
 
-[>MMD] v6 performs its parsing in the following steps:
+MMD v6 performs its parsing in the following steps:
 
 1. Start with a null-terminated string of source text (C style string)
 
@@ -115,7 +115,7 @@ etc.) and return the resulting C style string
 6. Use the resulting token tree for your own purposes.
 
 The token tree ([?AST]) includes starting offsets and length of each token,
-allowing you to use [>MMD] as part of a syntax highlighter.  [>MMD] v5 did not
+allowing you to use MMD as part of a syntax highlighter.  MMD v5 did not
 have this functionality in the public version, in part because the PEG parsers
 used did not provide reliable offset positions, requiring a great deal of
 effort when I adapted MMD for use in [MultiMarkdown
@@ -133,7 +133,7 @@ and destroying the `mmd_engine` automatically.
 
 ## Abbreviations (Or Acronyms) ##
 
-This file includes the use of [>MMD] as an abbreviation for MultiMarkdown. The
+This file includes the use of MMD as an abbreviation for MultiMarkdown. The
 abbreviation will be expanded on the first use, and the shortened form will be
 used on subsequent occurrences.
 
@@ -145,6 +145,14 @@ immediately follows the `>`.
 
        [>MMD]: MultiMarkdown
 
+There is also a "shortcut" method for abbreviations that is similar to the
+approach used in prior versions of MMD.  You specify the definition for the
+abbreviation in the usual manner, but MMD will automatically identify each
+instance where the abbreviation is used and substitute it automatically.  In
+this case, the abbreviation is limited to a more basic character set which
+includes letters, numbers, periods, and hyphens, but not much else.  For more
+complex abbreviations, you must explicitly mark uses of the abbreviation.
+
 
 ## Citations ##
 
@@ -153,7 +161,7 @@ Citations can be specified using an inline syntax, just like inline footnotes.
 
 ## CriticMarkup ##
 
-[>MMD] v6 has improved support for [CriticMarkup], both in terms of parsing, and
+MMD v6 has improved support for [CriticMarkup], both in terms of parsing, and
 in terms of support for each output format.  You can {++insert text++},
 {--delete text--}, substitute {~~one thing~>for another~~}, {==highlight text==},
 and {>>leave comments<<} in the text.
@@ -168,7 +176,7 @@ cases where proper parsing can be difficult.
 
 ## Fenced Code Blocks ##
 
-Fenced code blocks are fundamentally the same as [>MMD] v5, except:
+Fenced code blocks are fundamentally the same as MMD v5, except:
 
 1. The leading and trailing fences can be 3, 4, or 5 backticks in length. That
 should be sufficient to account for complex documents without requiring a more
@@ -196,16 +204,24 @@ immediately follows the `?`.
        [?glossary]: The glossary collects information about important
        terms used in your document
 
+Much like abbreviations, there is also a "shortcut" method that is similar to
+the approach used in prior versions of MMD.  You specify the definition for
+the glossary term in the usual manner, but MMD will automatically identify
+each instance where the term is used and substitute it automatically.  In this
+case, the term is limited to a more basic character set which includes
+letters, numbers, periods, and hyphens, but not much else.  For more complex
+glossary terms, you must explicitly mark uses of the term.
+
 
 ## Internationalization ##
 
-[>MMD] v6 includes support for substituting certain text phrases in other
+MMD v6 includes support for substituting certain text phrases in other
 languages.  This only affects the HTML format.
 
 
 ## Metadata ##
 
-Metadata in [>MMD] v6 includes new support for LaTeX -- the `latex config` key
+Metadata in MMD v6 includes new support for LaTeX -- the `latex config` key
 allows you to automatically setup of multiple `latex include` files at once.
 The default setups that I use would typically consist of one LaTeX file to be
 included at the top of the file, one to be included right at the beginning of
@@ -217,7 +233,7 @@ begin`, and `latex footer`.
 ## Table of Contents ##
 
 By placing `{{TOC}}` in your document, you can insert an automatically
-generated Table of Contents in your document.  As of [>MMD] v6, the native
+generated Table of Contents in your document.  As of MMD v6, the native
 Table of Contents functionality is used when exporting to LaTeX or
 OpenDocument formats.
 
@@ -226,7 +242,7 @@ OpenDocument formats.
 
 Some features I plan to implement at some point:
 
-1. [>MMD] v5 used to automatically identify abbreviated terms throughout the
+1. MMD v5 used to automatically identify abbreviated terms throughout the
 document and substitute them automatically.  I plan to reimplement this
 functionality, but will probably improve upon it to include glossary terms,
 and possibly even support for indexing documents in LaTeX (and possibly
@@ -240,7 +256,7 @@ and "stuff between headers".
 
 3. Improved EPUB support.  Currently, EPUB support is provided by a separate
 [tool](https://github.com/fletcher/MMD-ePub).  At some point, I would like to
-better integrate this into [>MMD] itself.
+better integrate this into MMD itself.
 
 
 
index a1f836ee4649f6f74b4b9b1f3f5f314dccfea27a..de07093f0222c870ac90ef0d31596f7761135bbc 100644 (file)
@@ -1295,7 +1295,12 @@ void mmd_export_token_html(DString * out, const char * source, token * t, scratc
                                if (temp_short == -1) {
                                        // This instance is not properly formed
                                        print_const("[?");
-                                       mmd_export_token_tree_html(out, source, t->child->next, scratch);
+
+                    if (t->child)
+                        mmd_export_token_tree_html(out, source, t->child->next, scratch);
+                    else
+                        print_token(t);
+                        
                                        print_const("]");
                                        break;
                                }
index f59fdabfbb86d9e71f19d96cefaf35ac2affef9a..3161fcbfa5b397ff7e76a44fd34f44b68eb8e356 100644 (file)
@@ -1219,7 +1219,12 @@ void mmd_export_token_latex(DString * out, const char * source, token * t, scrat
                                if (temp_short == -1) {
                                        // This instance is not properly formed
                                        print_const("[?");
-                                       mmd_export_token_tree_latex(out, source, t->child->next, scratch);
+                                       
+                                       if (t->child)
+                                               mmd_export_token_tree_latex(out, source, t->child->next, scratch);
+                                       else
+                                               print_token(t);
+
                                        print_const("]");
                                        break;
                                }
@@ -1231,7 +1236,7 @@ void mmd_export_token_latex(DString * out, const char * source, token * t, scrat
                                        // This is a re-use of a previously used note
 
                                        print("\\gls{");
-                                       print(temp_note->label_text);
+                                       print(temp_note->clean_text);
                                        print("}");
                                } else {
                                        // This is the first time this note was used
@@ -1239,12 +1244,12 @@ void mmd_export_token_latex(DString * out, const char * source, token * t, scrat
                                        if (temp_short3 == scratch->inline_glossaries_to_free->size) {
                                                // This is a reference definition
                                                print_const("\\gls{");
-                                               print(temp_note->label_text);
+                                               print(temp_note->clean_text);
                                                print_const("}");
                                        } else {
                                                // This is an inline definition
                                                print_const("\\newglossaryentry{");
-                                               print(temp_note->label_text);
+                                               print(temp_note->clean_text);
 
                                                print_const("}{name=");
                                                print(temp_note->clean_text);
@@ -1254,7 +1259,7 @@ void mmd_export_token_latex(DString * out, const char * source, token * t, scrat
                                                // We skip over temp_note->content, since that is the term in use
                                                mmd_export_token_tree_latex(out, source, temp_note->content, scratch);
                                                print_const("}}\\gls{");
-                                               print(temp_note->label_text);
+                                               print(temp_note->clean_text);
                                                print_const("}");
                                        }
                                }
@@ -1710,7 +1715,7 @@ void mmd_define_glossaries_latex(DString * out, const char * source, scratch_pad
        HASH_ITER(hh, scratch->glossary_hash, f, f_tmp) {
                // Add this glossary definition
                print_const("\\longnewglossaryentry{");
-               print(f->note->label_text);
+               print(f->note->clean_text);
 
                print_const("}{name=");
                print(f->note->clean_text);
index 2f687a7487bb6f440996537d99d387b4892e577a..96e6d6fc201e0368f9ce9e14dc1a163683426c79 100644 (file)
@@ -1201,7 +1201,7 @@ void mmd_export_token_odf(DString * out, const char * source, token * t, scratch
                                                print_const(")");
                                        } else {
                                                // This is an inline definition
-                                               mmd_export_token_tree_odf(out, source, temp_note->content, scratch);
+                                               mmd_print_string_odf(out, temp_note->clean_text);
                                                print_const(" (");
                                                mmd_print_string_odf(out, temp_note->label_text); 
                                                print_const(")");
index 02ed040b7542fd52e4d3727659f48b7bd253d367..a1788c202beb4e93dcad5eced058747e40874953 100644 (file)
@@ -704,6 +704,14 @@ void store_citation(scratch_pad * scratch, footnote * f) {
 void store_glossary(scratch_pad * scratch, footnote * f) {
        fn_holder * temp_holder;
 
+       // Store by `clean_text`?
+       HASH_FIND_STR(scratch->glossary_hash, f->clean_text, temp_holder);
+
+       if (!temp_holder) {
+               temp_holder = fn_holder_new(f);
+               HASH_ADD_KEYPTR(hh, scratch->glossary_hash, f->clean_text, strlen(f->clean_text), temp_holder);
+       }
+
        // Store by `label_text`?
        HASH_FIND_STR(scratch->glossary_hash, f->label_text, temp_holder);
 
@@ -1259,6 +1267,8 @@ void process_definition_block(mmd_engine * e, token * block) {
                                        f = footnote_new(e->dstr->str, label, block->child, false);
                                        if (f && f->clean_text)
                                                memmove(f->clean_text, &(f->clean_text)[1],strlen(f->clean_text));
+                                       //if (f && f->label_text)
+                               //              memmove(f->label_text, &(f->label_text)[1],strlen(f->label_text));
 
                                        stack_push(e->glossary_stack, f);
                                        break;
@@ -1560,7 +1570,7 @@ void identify_global_search_terms(mmd_engine * e, scratch_pad * scratch) {
                trie_insert(ac, f->label_text, PAIR_BRACKET_ABBREVIATION);
        }
 
-       // Add glossary to search trie
+       // Add glossary to search trie (without leading '?')
        for (int i = 0; i < e->glossary_stack->size; ++i)
        {
                f = stack_peek_index(e->glossary_stack, i);
@@ -1982,11 +1992,11 @@ void glossary_from_bracket(const char * source, scratch_pad * scratch, token * t
 
        if (t->child) {
                text = text_inside_pair(source, t);
+        memmove(text, &text[1], strlen(text));
        } else {
-               text = malloc(t->len + 2);
-               text[0] = '?';
-               memcpy(&text[1], &source[t->start], t->len);
-               text[t->len + 1] = '\0';
+               text = malloc(t->len + 1);
+               memcpy(text, &source[t->start], t->len);
+               text[t->len] = '\0';
        }
 
        short glossary_id = extract_glossary_from_stack(scratch, text);
index 35ccef2ddc01f5e207783563b408f6c3ebc12d61..03c46f0b55863216a9cae8c838b5561a3e1f1fce 100644 (file)
 bar</text:p>
 
 <text:p text:style-name="Standard">foo bar</text:p>
+
+<text:p text:style-name="Standard">BAZ (baz)</text:p>
 </office:text>
 </office:body>
 </office:document>
index 9f580e00a95da0fd79a7b1613ce23796f7702d84..b0a176950fc1edb45f1efa22ace2990440fe6fd6 100644 (file)
@@ -37,6 +37,8 @@
 
 <p><abbr title="FOO">foo</abbr> <abbr title="BAR">bar</abbr></p>
 
+<p>BAZ (<abbr title="BAZ">baz</abbr>)</p>
+
 </body>
 </html>
 
index 6e5db014560d6d7fa2c108b9286a833d23ee9529..d37882419947a84b4fffca6574d7a0024fa1843c 100644 (file)
@@ -32,4 +32,6 @@ bar</p>
 
 <p>foo bar</p>
 
+<p>[>(baz) BAZ]</p>
+
 <p>[>foo bar]: FOO BAR</p>
index fce43692eb1e2793b1d7431a395982f37c434e1d..00ba9d6e1646e5399730a06370d4f388c71322cc 100644 (file)
@@ -55,5 +55,7 @@ fo'o fo'o
 
 \gls{foo} \gls{bar}
 
+\newacronym{baz}{baz}{BAZ}\gls{baz}
+
 \input{mmd6-article-footer}
 \end{document}
index 44950193c515053fc25ff2cb9677d88e32773695..c8b2b17b610c851ec11c524cd01411720eaa0060 100644 (file)
@@ -32,6 +32,8 @@ bar
 
 foo  bar
 
+[>(baz) BAZ]
+
 
 [>foo]: FOO
 [>f.o.o.]: F.O.O.
index 4e50cd638235a94778688151940f044da81ae024..5ae3c39e801be15d857cc5363c0cf02f1bd87ebd 100644 (file)
 </office:meta>
 <office:body>
 <office:text>
-<text:p text:style-name="Standard">foo<text:note text:id="gn1" text:note-class="glossary"><text:note-body><text:p text:style-name="Footnote">Reference</text:p></text:note-body></text:note></text:p>
+<text:p text:style-name="Standard">foo<text:note text:id="gn1" text:note-class="glossary"><text:note-body><text:p text:style-name="Footnote">FOO</text:p></text:note-body></text:note> foo</text:p>
 
-<text:p text:style-name="Standard">bar<text:note text:id="gn2" text:note-class="glossary"><text:note-body><text:p text:style-name="Footnote">Inline</text:p></text:note-body></text:note></text:p>
+<text:p text:style-name="Standard">f.o.o.<text:note text:id="gn2" text:note-class="glossary"><text:note-body><text:p text:style-name="Footnote">F.O.O.</text:p></text:note-body></text:note> f.o.o.</text:p>
 
-<text:p text:style-name="Standard">Foo Bar<text:note text:id="gn3" text:note-class="glossary"><text:note-body><text:p text:style-name="Footnote">Reference</text:p>
+<text:p text:style-name="Standard">f-o-o f-o-o</text:p>
 
-<text:p text:style-name="Footnote">With second para.</text:p></text:note-body></text:note></text:p>
+<text:p text:style-name="Standard">f o o<text:note text:id="gn3" text:note-class="glossary"><text:note-body><text:p text:style-name="Footnote">F O O</text:p></text:note-body></text:note> f o o</text:p>
 
-<text:p text:style-name="Standard">foo</text:p>
-
-<text:p text:style-name="Standard">[?bar]</text:p>
+<text:p text:style-name="Standard">fo&#8217;o fo&#8217;o</text:p>
 
 <text:p text:style-name="Standard">5</text:p>
 
-<text:p text:style-name="Standard">foo</text:p>
+<text:p text:style-name="Standard">bar<text:note text:id="gn4" text:note-class="glossary"><text:note-body><text:p text:style-name="Footnote">BAR</text:p></text:note-body></text:note> bar</text:p>
+
+<text:p text:style-name="Standard">b.a.r.<text:note text:id="gn5" text:note-class="glossary"><text:note-body><text:p text:style-name="Footnote">B.A.R.</text:p></text:note-body></text:note> b.a.r.</text:p>
+
+<text:p text:style-name="Standard">b-a-r<text:note text:id="gn6" text:note-class="glossary"><text:note-body><text:p text:style-name="Footnote">B&#8211;A&#8211;R</text:p></text:note-body></text:note> b-a-r</text:p>
+
+<text:p text:style-name="Standard">b a r<text:note text:id="gn7" text:note-class="glossary"><text:note-body><text:p text:style-name="Footnote">B A R</text:p></text:note-body></text:note> b a r</text:p>
+
+<text:p text:style-name="Standard">ba'r<text:note text:id="gn8" text:note-class="glossary"><text:note-body><text:p text:style-name="Footnote">BA'R</text:p></text:note-body></text:note> ba'r</text:p>
+
+<text:p text:style-name="Standard">10</text:p>
+
+<text:p text:style-name="Standard">foo bar<text:note text:id="gn9" text:note-class="glossary"><text:note-body><text:p text:style-name="Footnote">FOO BAR</text:p>
+
+<text:p text:style-name="Footnote">BAR FOO</text:p></text:note-body></text:note></text:p>
+
+<text:p text:style-name="Standard">foo
+bar</text:p>
+
+<text:p text:style-name="Standard">foo bar</text:p>
 
-<text:p text:style-name="Standard">Foo Bar</text:p>
+<text:p text:style-name="Standard">baz<text:note text:id="gn10" text:note-class="glossary"><text:note-body><text:p text:style-name="Footnote">BAZ</text:p></text:note-body></text:note></text:p>
 </office:text>
 </office:body>
 </office:document>
index 49eb2e76c281d11a009dbca171e921a904faf17a..bc10423b80c07ba7f6a1a5262464e13bfb5c7ff5 100644 (file)
@@ -6,38 +6,83 @@
 </head>
 <body>
 
-<p><a href="#gn:1" id="gnref:1" title="see glossary" class="glossary">foo</a></p>
+<p><a href="#gn:1" id="gnref:1" title="see glossary" class="glossary">foo</a> <a href="#gn:1" title="see glossary" class="glossary">foo</a></p>
 
-<p><a href="#gn:2" id="gnref:2" title="see glossary" class="glossary">bar</a></p>
+<p><a href="#gn:2" id="gnref:2" title="see glossary" class="glossary">f.o.o.</a> <a href="#gn:2" title="see glossary" class="glossary">f.o.o.</a></p>
 
-<p><a href="#gn:3" id="gnref:3" title="see glossary" class="glossary">Foo Bar</a></p>
+<p>f-o-o f-o-o</p>
 
-<p><a href="#gn:1" title="see glossary" class="glossary">foo</a></p>
+<p><a href="#gn:3" id="gnref:3" title="see glossary" class="glossary">f o o</a> <a href="#gn:3" title="see glossary" class="glossary">f o o</a></p>
 
-<p>[?bar]</p>
+<p>fo&#8217;o fo&#8217;o</p>
 
 <p>5</p>
 
-<p><a href="#gn:1" title="see glossary" class="glossary">foo</a></p>
+<p><a href="#gn:4" id="gnref:4" title="see glossary" class="glossary">bar</a> <a href="#gn:4" title="see glossary" class="glossary">bar</a></p>
 
-<p><a href="#gn:3" title="see glossary" class="glossary">Foo Bar</a></p>
+<p><a href="#gn:5" id="gnref:5" title="see glossary" class="glossary">b.a.r.</a> <a href="#gn:5" title="see glossary" class="glossary">b.a.r.</a></p>
+
+<p><a href="#gn:6" id="gnref:6" title="see glossary" class="glossary">b-a-r</a> <a href="#gn:6" title="see glossary" class="glossary">b-a-r</a></p>
+
+<p><a href="#gn:7" id="gnref:7" title="see glossary" class="glossary">b a r</a> <a href="#gn:7" title="see glossary" class="glossary">b a r</a></p>
+
+<p><a href="#gn:8" id="gnref:8" title="see glossary" class="glossary">ba'r</a> <a href="#gn:8" title="see glossary" class="glossary">ba'r</a></p>
+
+<p>10</p>
+
+<p><a href="#gn:9" id="gnref:9" title="see glossary" class="glossary">foo bar</a></p>
+
+<p><a href="#gn:1" title="see glossary" class="glossary">foo</a>
+<a href="#gn:4" title="see glossary" class="glossary">bar</a></p>
+
+<p><a href="#gn:1" title="see glossary" class="glossary">foo</a> <a href="#gn:4" title="see glossary" class="glossary">bar</a></p>
+
+<p><a href="#gn:10" id="gnref:10" title="see glossary" class="glossary">baz</a></p>
 
 <div class="glossary">
 <hr />
 <ol>
 
 <li id="gn:1">
-foo: <p>Reference <a href="#gnref:1" title="return to body" class="reverseglossary">&#160;&#8617;</a></p>
+foo: <p>FOO <a href="#gnref:1" title="return to body" class="reverseglossary">&#160;&#8617;</a></p>
 </li>
 
 <li id="gn:2">
-bar: <p>Inline <a href="#gnref:2" title="return to body" class="reverseglossary">&#160;&#8617;</a></p>
+f.o.o.: <p>F.O.O. <a href="#gnref:2" title="return to body" class="reverseglossary">&#160;&#8617;</a></p>
 </li>
 
 <li id="gn:3">
-Foo Bar: <p>Reference</p>
+f o o: <p>F O O <a href="#gnref:3" title="return to body" class="reverseglossary">&#160;&#8617;</a></p>
+</li>
+
+<li id="gn:4">
+bar: <p>BAR <a href="#gnref:4" title="return to body" class="reverseglossary">&#160;&#8617;</a></p>
+</li>
+
+<li id="gn:5">
+b.a.r.: <p>B.A.R. <a href="#gnref:5" title="return to body" class="reverseglossary">&#160;&#8617;</a></p>
+</li>
+
+<li id="gn:6">
+b-a-r: <p>B&#8211;A&#8211;R <a href="#gnref:6" title="return to body" class="reverseglossary">&#160;&#8617;</a></p>
+</li>
+
+<li id="gn:7">
+b a r: <p>B A R <a href="#gnref:7" title="return to body" class="reverseglossary">&#160;&#8617;</a></p>
+</li>
+
+<li id="gn:8">
+ba'r: <p>BA'R <a href="#gnref:8" title="return to body" class="reverseglossary">&#160;&#8617;</a></p>
+</li>
+
+<li id="gn:9">
+foo bar: <p>FOO BAR</p>
+
+<p>BAR FOO <a href="#gnref:9" title="return to body" class="reverseglossary">&#160;&#8617;</a></p>
+</li>
 
-<p>With second para. <a href="#gnref:3" title="return to body" class="reverseglossary">&#160;&#8617;</a></p>
+<li id="gn:10">
+baz: <p>BAZ <a href="#gnref:10" title="return to body" class="reverseglossary">&#160;&#8617;</a></p>
 </li>
 
 </ol>
index 13555178067bf07db0f0a85a4ef1b9e47b138384..758ace15f38d6d5d727ffbcf387c64a96d0d1e9d 100644 (file)
@@ -1,21 +1,39 @@
 <p>Title:      Glossaries
 latex config:  article</p>
 
-<p><a href="Reference">?foo</a></p>
+<p>foo foo</p>
 
-<p>[?(bar) Inline]</p>
+<p>f.o.o. f.o.o.</p>
 
-<p><a href="Reference">?Foo Bar</a></p>
+<p>f-o-o f-o-o</p>
 
-<p><a href="Reference">?foo</a></p>
+<p>f o o f o o</p>
 
-<p>[?bar]</p>
+<p>fo'o fo'o</p>
 
 <p>5</p>
 
-<p>foo</p>
+<p><a href="BAR">?bar</a> <a href="BAR">?bar</a></p>
 
-<p>Foo Bar</p>
+<p><a href="B.A.R.">?b.a.r.</a> <a href="B.A.R.">?b.a.r.</a></p>
 
-<pre><code>With second para.
-</code></pre>
+<p><a href="B-A-R">?b-a-r</a> <a href="B-A-R">?b-a-r</a></p>
+
+<p><a href="BAR">?b a r</a> <a href="BAR">?b a r</a></p>
+
+<p><a href="BA'R">?ba'r</a> <a href="BA'R">?ba'r</a></p>
+
+<p>10</p>
+
+<p>foo bar</p>
+
+<p>foo
+bar</p>
+
+<p>foo bar</p>
+
+<p>[?(baz) BAZ]</p>
+
+<p>[?foo bar]: FOO BAR</p>
+
+<pre><code>BAR FOO</code></pre>
index 2001950f7f48d54f024777a15b278ad1d6727273..f88fb73134abd03715b1fcb830a73b9583459ce2 100644 (file)
@@ -1,30 +1,83 @@
 \input{mmd6-article-leader}
 \def\mytitle{Glossaries}
-\longnewglossaryentry{foo}{name=foo}{Reference}
+\longnewglossaryentry{foo}{name=foo}{FOO}
 
-\longnewglossaryentry{foobar}{name=Foo Bar}{
+\longnewglossaryentry{f.o.o.}{name=f.o.o.}{
 
-Reference
+F.O.O.}
 
-With second para.}
+\longnewglossaryentry{f-o-o}{name=f-o-o}{
+
+F--O--O}
+
+\longnewglossaryentry{f o o}{name=f o o}{
+
+F O O}
+
+\longnewglossaryentry{fo'o}{name=fo'o}{
+
+FO'O}
+
+\longnewglossaryentry{bar}{name=bar}{
+
+BAR}
+
+\longnewglossaryentry{b.a.r.}{name=b.a.r.}{
+
+B.A.R.}
+
+\longnewglossaryentry{b-a-r}{name=b-a-r}{
+
+B--A--R}
+
+\longnewglossaryentry{b a r}{name=b a r}{
+
+B A R}
+
+\longnewglossaryentry{ba'r}{name=ba'r}{
+
+BA'R}
+
+\longnewglossaryentry{foo bar}{name=foo bar}{
+
+FOO BAR
+
+BAR FOO}
 
 \input{mmd6-article-begin}
 
-\gls{foo}
+\gls{foo} \gls{foo}
 
-\newglossaryentry{bar}{name=bar, description={Inline}}\gls{bar}
+\gls{f.o.o.} \gls{f.o.o.}
 
-\gls{foobar}
+f-o-o f-o-o
 
-\gls{foo}
+\gls{f o o} \gls{f o o}
 
-[?bar]
+fo'o fo'o
 
 5
 
+\gls{bar} \gls{bar}
+
+\gls{b.a.r.} \gls{b.a.r.}
+
+\gls{b-a-r} \gls{b-a-r}
+
+\gls{b a r} \gls{b a r}
+
+\gls{ba'r} \gls{ba'r}
+
+10
+
+\gls{foo bar}
+
 \gls{foo}
+\gls{bar}
+
+\gls{foo} \gls{bar}
 
-\gls{foobar}
+\newglossaryentry{baz}{name=baz, description={BAZ}}\gls{baz}
 
 \input{mmd6-article-footer}
 \end{document}
index 5d529ea6e6ed11a4b6339f04ad6a5cb5d6b3c394..09547e2be106dc496bd82c7b3dc7e07c1b97a369 100644 (file)
@@ -1,25 +1,53 @@
 Title: Glossaries
 latex config:  article
 
-[?foo]
+foo foo
 
-[?(bar) Inline]
+f.o.o. f.o.o.
 
-[?Foo Bar]
+f-o-o f-o-o
 
-[?foo]
+f o o f o o
 
-[?bar]
+fo'o fo'o
 
 5
 
+[?bar] [?bar]
+
+[?b.a.r.] [?b.a.r.]
+
+[?b-a-r] [?b-a-r]
+
+[?b a r] [?b a r]
+
+[?ba'r] [?ba'r]
+
+10
+
+foo bar
+
 foo
+bar
+
+foo  bar
+
+[?(baz) BAZ]
+
 
-Foo Bar
 
+[?foo]: FOO
+[?f.o.o.]: F.O.O.
+[?f-o-o]: F-O-O
+[?f o o]: F O O
+[?fo'o]: FO'O
 
-[?foo]: Reference
+[?bar]: BAR
+[?b.a.r.]: B.A.R.
+[?b-a-r]: B-A-R
+[?b a r]: B A R
+[?ba'r]: BA'R
 
-[?Foo Bar]: Reference
+[?foo bar]: FOO BAR
 
-       With second para.
+       BAR FOO
\ No newline at end of file