]> granicus.if.org Git - multimarkdown/commitdiff
version bump
authorFletcher T. Penney <fletcher@fletcherpenney.net>
Sat, 1 Sep 2018 20:00:33 +0000 (16:00 -0400)
committerFletcher T. Penney <fletcher@fletcherpenney.net>
Sat, 1 Sep 2018 20:00:33 +0000 (16:00 -0400)
12 files changed:
CMakeLists.txt
DevelopmentNotes/DevelopmentNotes.epub
DevelopmentNotes/DevelopmentNotes.fodt
DevelopmentNotes/DevelopmentNotes.html
DevelopmentNotes/DevelopmentNotes.pdf
DevelopmentNotes/DevelopmentNotes.txt
QuickStart/QuickStart.epub
QuickStart/QuickStart.fodt
QuickStart/QuickStart.html
QuickStart/QuickStart.pdf
QuickStart/QuickStart.txt
README.md

index 7ff61ad3eec2a552a4617505902346a67e8dbd38..a738a35ee1cdab57e31c30c48898f795c197d406 100644 (file)
@@ -8,10 +8,10 @@ cmake_minimum_required (VERSION 2.6)
 set (My_Project_Title "MultiMarkdown")
 set (My_Project_Description "Lightweight markup processor to produce HTML, LaTeX, and more.")
 set (My_Project_Author "Fletcher T. Penney")
-set (My_Project_Revised_Date "2018-03-28")
+set (My_Project_Revised_Date "2018-09-01")
 set (My_Project_Version_Major 6)
-set (My_Project_Version_Minor 3)
-set (My_Project_Version_Patch 2)
+set (My_Project_Version_Minor 4)
+set (My_Project_Version_Patch 0)
 
 set (My_Project_Version "${My_Project_Version_Major}.${My_Project_Version_Minor}.${My_Project_Version_Patch}")
 
index 82fd3045dac2659bcdb54374eba5c988567fdee3..c60fc7e81678e5100748dc44a5b2d5e1b2096080 100644 (file)
Binary files a/DevelopmentNotes/DevelopmentNotes.epub and b/DevelopmentNotes/DevelopmentNotes.epub differ
index d597347836d08050ccf1f0fadf8286adb9c44f2c..a1be665537afcd82eebb4ce330f30f4aa8dbe0d0 100644 (file)
@@ -276,19 +276,19 @@ office:mimetype="application/vnd.oasis.opendocument.text">
 <office:meta>
        <dc:title>MultiMarkdown v6 Development Notes</dc:title>
        <dc:creator>Fletcher T. Penney</dc:creator>
-       <meta:user-defined meta:name="date">2018-03-38</meta:user-defined>
+       <meta:user-defined meta:name="date">2018-09-01</meta:user-defined>
        <meta:user-defined meta:name="uuid">dd2d8e76-dc2d-416d-9acd-5395d20871c2</meta:user-defined>
 </office:meta>
 <office:body>
 <office:text>
-<text:h text:outline-level="3"><text:bookmark text:name="introduction"/>Introduction </text:h>
+<text:h text:outline-level="3"><text:bookmark text:name="introduction"/>Introduction</text:h>
 
 <text:p text:style-name="Standard">This document includes some notes on the development of MultiMarkdown (MMD) v6. Most of it
 will be interesting only to other developers or those needing to choose the
 absolute &#8220;best&#8221; Markdown (MD) implementation for their needs &#8211; it is not required
 reading to understand how the software works.</text:p>
 
-<text:h text:outline-level="4"><text:bookmark text:name="whyanewversion"/>Why a New Version? </text:h>
+<text:h text:outline-level="4"><text:bookmark text:name="whyanewversion"/>Why a New Version?</text:h>
 
 <text:p text:style-name="Standard">MultiMarkdown version 5 was released in November of 2015, but the codebase was
 essentially the same as that of v4 &#8211; and that was released in beta in April
@@ -319,7 +319,7 @@ had been using <text:a xlink:type="simple" xlink:href="https://github.com/ooc-la
 into parser code. It worked well overall, but lacked some features I needed,
 requiring a lot of workarounds.)</text:p>
 
-<text:h text:outline-level="3"><text:bookmark text:name="firstattempt"/>First Attempt </text:h>
+<text:h text:outline-level="3"><text:bookmark text:name="firstattempt"/>First Attempt</text:h>
 
 <text:p text:style-name="Standard">My first attempt started by hand-crafting a parser that scanned through the
 document a line at a time, deciding what to do with each line as it found
@@ -449,7 +449,7 @@ don&#8217;t follow the rules above. I&#8217;ll continue to work on this.</text:p
 <text:p text:style-name="Standard">In the end, I scrapped this effort, but kept the lessons learned in the token
 pairing algorithm.</text:p>
 
-<text:h text:outline-level="3"><text:bookmark text:name="secondattempt"/>Second Attempt </text:h>
+<text:h text:outline-level="3"><text:bookmark text:name="secondattempt"/>Second Attempt</text:h>
 
 <text:p text:style-name="Standard">I tried again this past Fall. This time, I approached the problem with lots
 of reading. <text:span text:style-name="MMD-Italic">Lots and lots</text:span> of reading &#8211; tons of websites, computer science
@@ -517,13 +517,13 @@ anyway, if not better.</text:p>
 about how to create the grammar used. But so far, it has been able to handle
 everything I have thrown at it.</text:p>
 
-<text:h text:outline-level="3"><text:bookmark text:name="optimization"/>Optimization </text:h>
+<text:h text:outline-level="3"><text:bookmark text:name="optimization"/>Optimization</text:h>
 
 <text:p text:style-name="Standard">One of my goals for MMD 6 was performance. So I&#8217;ve paid attention to speed
 along the way, and have tried to use a few tricks to keep things fast. Here
 are some things I&#8217;ve learned along the way. In no particular order:</text:p>
 
-<text:h text:outline-level="4"><text:bookmark text:name="memoryallocation"/>Memory Allocation </text:h>
+<text:h text:outline-level="4"><text:bookmark text:name="memoryallocation"/>Memory Allocation</text:h>
 
 <text:p text:style-name="Standard">When parsing a long document, a <text:span text:style-name="MMD-Italic">lot</text:span> of token structures are created. Each
 one requires a small bit of memory to be allocated. In aggregate, that time
@@ -552,7 +552,7 @@ reduces the number of tokens that need to be processed later on. The only
 downside is remember to check for a single space character in a few instances
 where it matters.</text:p>
 
-<text:h text:outline-level="4"><text:bookmark text:name="properinputbuffering"/>Proper input buffering </text:h>
+<text:h text:outline-level="4"><text:bookmark text:name="properinputbuffering"/>Proper input buffering</text:h>
 
 <text:p text:style-name="Standard">When I first began last spring, I was amazed to see how much time was being
 spent by MultiMarkdown simply reading the input file. Then I discovered it
@@ -561,14 +561,14 @@ buffered read approach and the time to read the file went to almost nothing. I
 experimented with different buffer sizes, but they did not seem to make a
 measurable difference.</text:p>
 
-<text:h text:outline-level="4"><text:bookmark text:name="outputbuffering"/>Output Buffering </text:h>
+<text:h text:outline-level="4"><text:bookmark text:name="outputbuffering"/>Output Buffering</text:h>
 
 <text:p text:style-name="Standard">I experimented with different approaches to creating the output after parsing.
 I tried printing directly to <text:span text:style-name="Source_20_Text">stdout</text:span>, and even played with different
 buffering settings. None of those seemed to work well, and all were slower
 than using the <text:span text:style-name="Source_20_Text">d_string</text:span> approach (formerly called <text:span text:style-name="Source_20_Text">GString</text:span> in MMD 5).</text:p>
 
-<text:h text:outline-level="4"><text:bookmark text:name="fastsearches"/>Fast Searches </text:h>
+<text:h text:outline-level="4"><text:bookmark text:name="fastsearches"/>Fast Searches</text:h>
 
 <text:p text:style-name="Standard">After getting basic Markdown functionality complete, I discovered during
 testing that the time required to parse a document grew exponentially as the
@@ -583,7 +583,7 @@ a link (or footnote, etc.) by &#8220;name&#8221; rather than searching through a
 This allowed me to get MMD&#8217;s performance back to O(n), taking roughly twice as
 much time to process a document that is twice as long.</text:p>
 
-<text:h text:outline-level="4"><text:bookmark text:name="efficientutilityfunctions"/>Efficient Utility Functions </text:h>
+<text:h text:outline-level="4"><text:bookmark text:name="efficientutilityfunctions"/>Efficient Utility Functions</text:h>
 
 <text:p text:style-name="Standard">It is frequently necessary when parsing Markdown to check what sort of
 character we are dealing with at a certain position &#8211; a letter, whitespace,
@@ -594,7 +594,7 @@ programming time, and saved time tracking down bugs from handling things
 slightly differently under different circumstances. I also suspect it
 improved performance, but don&#8217;t have the data to back it up.</text:p>
 
-<text:h text:outline-level="4"><text:bookmark text:name="testingwhilewriting"/>Testing While Writing </text:h>
+<text:h text:outline-level="4"><text:bookmark text:name="testingwhilewriting"/>Testing While Writing</text:h>
 
 <text:p text:style-name="Standard">I developed several chunks of code in parallel while creating MMD 6. The vast
 majority of it was developed largely in a <text:a xlink:type="simple" xlink:href="https://en.wikipedia.org/wiki/Test-driven_development">test-driven development</text:a> approach.
@@ -608,7 +608,7 @@ allowed me to ensure new features work properly and that old features aren&#8217
 broken. At this time, there are 29 text files in the test suite, and many
 more to come.</text:p>
 
-<text:h text:outline-level="4"><text:bookmark text:name="otherlessons"/>Other Lessons </text:h>
+<text:h text:outline-level="4"><text:bookmark text:name="otherlessons"/>Other Lessons</text:h>
 
 <text:p text:style-name="Standard">Some things that didn&#8217;t do me any good&#8230;.</text:p>
 
@@ -626,7 +626,7 @@ automatically, there was no noticeable performance change, and I didn&#8217;t ha
 the tools to measure whether I could have improved memory usage at all. Not
 sure this would be worth the effort &#8211; much lower hanging fruit available.</text:p>
 
-<text:h text:outline-level="3"><text:bookmark text:name="performance"/>Performance </text:h>
+<text:h text:outline-level="3"><text:bookmark text:name="performance"/>Performance</text:h>
 
 <text:p text:style-name="Standard">Basic tests show that currently MMD 6 takes about 20&#8211;25% longer the CommonMark
 0.27.0 to process long files (e.g. 0.2 MB). However, it is around 5% <text:span text:style-name="MMD-Italic">faster</text:span>
@@ -667,9 +667,9 @@ more challenging and see whether they can be reworked to improve performance.</t
 I&#8217;m sure there&#8217;s still a lot of room for further improvement to be made.
 Suggestions welcome!</text:p>
 
-<text:h text:outline-level="3"><text:bookmark text:name="testing"/>Testing </text:h>
+<text:h text:outline-level="3"><text:bookmark text:name="testing"/>Testing</text:h>
 
-<text:h text:outline-level="4"><text:bookmark text:name="testsuite"/>Test Suite </text:h>
+<text:h text:outline-level="4"><text:bookmark text:name="testsuite"/>Test Suite</text:h>
 
 <text:p text:style-name="Standard">The development of MMD v6 was heavily, but not absolutely, influenced by the
 philosophy of test-driven development. While coding, I made use of test
@@ -682,7 +682,7 @@ documents that will continue to be updated as new bugs and edge cases are
 identified. This helps make proper integration testing of the entire
 application with every release.</text:p>
 
-<text:h text:outline-level="4"><text:bookmark text:name="fuzztesting"/>Fuzz Testing </text:h>
+<text:h text:outline-level="4"><text:bookmark text:name="fuzztesting"/>Fuzz Testing</text:h>
 
 <text:p text:style-name="Standard">I was not familiar with the concept of
 <text:a xlink:type="simple" xlink:href="https://en.wikipedia.org/wiki/Fuzzing">Fuzz Testing</text:a> until a user mentioned
@@ -710,7 +710,7 @@ versions. Do this over and over and over, and some interesting edge cases are
 sometimes identified. I have found some interesting edge cases this way.
 Definitely a useful tool!</text:p>
 
-<text:h text:outline-level="4"><text:bookmark text:name="unittesting"/>Unit Testing </text:h>
+<text:h text:outline-level="4"><text:bookmark text:name="unittesting"/>Unit Testing</text:h>
 
 <text:p text:style-name="Standard">Some of the original development was done with unit testing in some other
 tools I developed. This code formed the basis of a few parts of MMD.
@@ -718,7 +718,7 @@ Otherwise, it was hard to see how to really create very good unit tests for
 the development of MMD. So there is really not much unit testing built into
 the code or used during the development.</text:p>
 
-<text:h text:outline-level="3"><text:bookmark text:name="dependencieslibraries"/>Dependencies/Libraries </text:h>
+<text:h text:outline-level="3"><text:bookmark text:name="dependencieslibraries"/>Dependencies/Libraries</text:h>
 
 <text:p text:style-name="Standard">MMD v6 has no external dependencies when compiling, aside from the standard
 libraries for C development (Except that it will use <text:span text:style-name="Source_20_Text">libcurl</text:span> if available in
@@ -760,9 +760,162 @@ TextBundle/TextPack, OpenDocument, etc.</text:p></text:list-item>
 
 </text:list>
 
-<text:h text:outline-level="3"><text:bookmark text:name="changelog"/>Changelog </text:h>
+<text:h text:outline-level="3"><text:bookmark text:name="changelog"/>Changelog</text:h>
 
 <text:list text:style-name="L1">
+<text:list-item>
+<text:p text:style-name="Standard">2018&#8211;09&#8211;01 - v 6.4.0:</text:p>
+
+<text:list text:style-name="L1">
+<text:list-item>
+<text:p text:style-name="P1">
+ADDED: Add ODF Header metadata and fix issue with LaTeX Header metadata</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+ADDED: Add additional tests for special characters</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+ADDED: Add initial OPML export support (address #9)</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+ADDED: Add opml option to read for MultiMarkdown OPML files</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+Add missing Latex support files</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+Avoid potential error with stack_free</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+CHANGED: Remove unnecessary code</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+FIXED: Allow caption without trailing newline at end of document</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+FIXED: Escape square brackets, e.g. &#8216;{[foo]}&#8217; (addresses #128 and #129)</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+FIXED: Fix escpaing of % character in LaTeX code spans and blocks</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+FIXED: Fix html comments inside code blocks (fixes #118)</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+FIXED: Fix issue where <text:span text:style-name="Source_20_Text">~</text:span> is mistakenly interpreted as fence delimiter</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+FIXED: Fix issue with BOM and files &gt; 4k</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+FIXED: Fix issue with dollar math delimiters inside code (fixes #134)</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+FIXED: Fix token length in OPML</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+FIXED: Improve OPML export; add OPML tests</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+FIXED: Normalize line spacing in CriticMarkup notes in LaTeX (fixes #120)</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+FIXED: Preserve tabs following leading hashes in code blocks</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+FIXED: Prevent potential null dereference</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+FIXED: Remove lock file</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+FIXED: Trim single remaining whitespace when exporting headers</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+FIXED: Trim trailing newlines in definition blocks</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+FIXED: Use Setext headers when necessary to convert from OPML to text (fixes #138)</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+FIXED: Use \ul instead of \underline when soul package is in use (fixes #121)</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+Merge pull request #132 from jlargentaye/develop</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+UPDATE: Clarify DevelopmentNotes re: libcurl</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+UPDATE: Clarify README re: libcurl</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+UPDATED: &#8216;\item{}&#8217; no longer needed since square brackets escaped on their own</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+UPDATED: Add 6.3.1 release notes</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+UPDATED: Add allowfullscreen to list of boolean HTML attributes</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+UPDATED: Add more BibTeX test cases</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+UPDATED: Adjust metadata for test files</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+UPDATED: Allow '' to preserve line break in metadata. (Addresses #86)</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+UPDATED: Apply astyle</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+UPDATED: Fix whitespace with boolean HTML attributes</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="P1">
+UPDATED: Ignore escaped space at end of code span</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="Standard">UPDATED: Test % escaping in URLs</text:p></text:list-item>
+
+</text:list></text:list-item>
+
 <text:list-item>
 <text:p text:style-name="Standard">2018&#8211;03&#8211;28 - v 6.3.2:</text:p>
 
index f12b5f7e381bf71cd69b1a9516d8ddf42cd5369d..43cb5e0fec375423f210b2b3a90e27f5114b4e84 100644 (file)
@@ -4,19 +4,19 @@
        <meta charset="utf-8"/>
        <title>MultiMarkdown v6 Development Notes</title>
        <meta name="author" content="Fletcher T. Penney"/>
-       <meta name="date" content="2018-03-38"/>
+       <meta name="date" content="2018-09-01"/>
        <meta name="uuid" content="dd2d8e76-dc2d-416d-9acd-5395d20871c2"/>
 </head>
 <body>
 
-<h3 id="introduction">Introduction </h3>
+<h3 id="introduction">Introduction</h3>
 
 <p>This document includes some notes on the development of MultiMarkdown (<abbr title="MultiMarkdown">MMD</abbr>) v6. Most of it
 will be interesting only to other developers or those needing to choose the
 absolute &#8220;best&#8221; Markdown (<abbr title="Markdown">MD</abbr>) implementation for their needs &#8211; it is not required
 reading to understand how the software works.</p>
 
-<h4 id="whyanewversion">Why a New Version? </h4>
+<h4 id="whyanewversion">Why a New Version?</h4>
 
 <p>MultiMarkdown version 5 was released in November of 2015, but the codebase was
 essentially the same as that of v4 &#8211; and that was released in beta in April
@@ -43,7 +43,7 @@ had been using <a href="https://github.com/ooc-lang/greg">greg</a> to compile th
 into parser code. It worked well overall, but lacked some features I needed,
 requiring a lot of workarounds.)</p>
 
-<h3 id="firstattempt">First Attempt </h3>
+<h3 id="firstattempt">First Attempt</h3>
 
 <p>My first attempt started by hand-crafting a parser that scanned through the
 document a line at a time, deciding what to do with each line as it found
@@ -137,7 +137,7 @@ don&#8217;t follow the rules above. I&#8217;ll continue to work on this.</p>
 <p>In the end, I scrapped this effort, but kept the lessons learned in the token
 pairing algorithm.</p>
 
-<h3 id="secondattempt">Second Attempt </h3>
+<h3 id="secondattempt">Second Attempt</h3>
 
 <p>I tried again this past Fall. This time, I approached the problem with lots
 of reading. <em>Lots and lots</em> of reading &#8211; tons of websites, computer science
@@ -195,13 +195,13 @@ anyway, if not better.</p>
 about how to create the grammar used. But so far, it has been able to handle
 everything I have thrown at it.</p>
 
-<h3 id="optimization">Optimization </h3>
+<h3 id="optimization">Optimization</h3>
 
 <p>One of my goals for <abbr title="MultiMarkdown">MMD</abbr> 6 was performance. So I&#8217;ve paid attention to speed
 along the way, and have tried to use a few tricks to keep things fast. Here
 are some things I&#8217;ve learned along the way. In no particular order:</p>
 
-<h4 id="memoryallocation">Memory Allocation </h4>
+<h4 id="memoryallocation">Memory Allocation</h4>
 
 <p>When parsing a long document, a <em>lot</em> of token structures are created. Each
 one requires a small bit of memory to be allocated. In aggregate, that time
@@ -230,7 +230,7 @@ reduces the number of tokens that need to be processed later on. The only
 downside is remember to check for a single space character in a few instances
 where it matters.</p>
 
-<h4 id="properinputbuffering">Proper input buffering </h4>
+<h4 id="properinputbuffering">Proper input buffering</h4>
 
 <p>When I first began last spring, I was amazed to see how much time was being
 spent by MultiMarkdown simply reading the input file. Then I discovered it
@@ -239,14 +239,14 @@ buffered read approach and the time to read the file went to almost nothing. I
 experimented with different buffer sizes, but they did not seem to make a
 measurable difference.</p>
 
-<h4 id="outputbuffering">Output Buffering </h4>
+<h4 id="outputbuffering">Output Buffering</h4>
 
 <p>I experimented with different approaches to creating the output after parsing.
 I tried printing directly to <code>stdout</code>, and even played with different
 buffering settings. None of those seemed to work well, and all were slower
 than using the <code>d_string</code> approach (formerly called <code>GString</code> in MMD 5).</p>
 
-<h4 id="fastsearches">Fast Searches </h4>
+<h4 id="fastsearches">Fast Searches</h4>
 
 <p>After getting basic Markdown functionality complete, I discovered during
 testing that the time required to parse a document grew exponentially as the
@@ -261,7 +261,7 @@ a link (or footnote, etc.) by &#8220;name&#8221; rather than searching through a
 This allowed me to get <abbr title="MultiMarkdown">MMD</abbr>&#8217;s performance back to O(n), taking roughly twice as
 much time to process a document that is twice as long.</p>
 
-<h4 id="efficientutilityfunctions">Efficient Utility Functions </h4>
+<h4 id="efficientutilityfunctions">Efficient Utility Functions</h4>
 
 <p>It is frequently necessary when parsing Markdown to check what sort of
 character we are dealing with at a certain position &#8211; a letter, whitespace,
@@ -272,7 +272,7 @@ programming time, and saved time tracking down bugs from handling things
 slightly differently under different circumstances. I also suspect it
 improved performance, but don&#8217;t have the data to back it up.</p>
 
-<h4 id="testingwhilewriting">Testing While Writing </h4>
+<h4 id="testingwhilewriting">Testing While Writing</h4>
 
 <p>I developed several chunks of code in parallel while creating <abbr title="MultiMarkdown">MMD</abbr> 6. The vast
 majority of it was developed largely in a <a href="https://en.wikipedia.org/wiki/Test-driven_development">test-driven development</a> approach.
@@ -286,7 +286,7 @@ allowed me to ensure new features work properly and that old features aren&#8217
 broken. At this time, there are 29 text files in the test suite, and many
 more to come.</p>
 
-<h4 id="otherlessons">Other Lessons </h4>
+<h4 id="otherlessons">Other Lessons</h4>
 
 <p>Some things that didn&#8217;t do me any good&#8230;.</p>
 
@@ -304,7 +304,7 @@ automatically, there was no noticeable performance change, and I didn&#8217;t ha
 the tools to measure whether I could have improved memory usage at all. Not
 sure this would be worth the effort &#8211; much lower hanging fruit available.</p>
 
-<h3 id="performance">Performance </h3>
+<h3 id="performance">Performance</h3>
 
 <p>Basic tests show that currently <abbr title="MultiMarkdown">MMD</abbr> 6 takes about 20&#8211;25% longer the CommonMark
 0.27.0 to process long files (e.g. 0.2 MB). However, it is around 5% <em>faster</em>
@@ -345,9 +345,9 @@ more challenging and see whether they can be reworked to improve performance.</p
 I&#8217;m sure there&#8217;s still a lot of room for further improvement to be made.
 Suggestions welcome!</p>
 
-<h3 id="testing">Testing </h3>
+<h3 id="testing">Testing</h3>
 
-<h4 id="testsuite">Test Suite </h4>
+<h4 id="testsuite">Test Suite</h4>
 
 <p>The development of <abbr title="MultiMarkdown">MMD</abbr> v6 was heavily, but not absolutely, influenced by the
 philosophy of test-driven development. While coding, I made use of test
@@ -360,7 +360,7 @@ documents that will continue to be updated as new bugs and edge cases are
 identified. This helps make proper integration testing of the entire
 application with every release.</p>
 
-<h4 id="fuzztesting">Fuzz Testing </h4>
+<h4 id="fuzztesting">Fuzz Testing</h4>
 
 <p>I was not familiar with the concept of
 <a href="https://en.wikipedia.org/wiki/Fuzzing">Fuzz Testing</a> until a user mentioned
@@ -388,7 +388,7 @@ versions. Do this over and over and over, and some interesting edge cases are
 sometimes identified. I have found some interesting edge cases this way.
 Definitely a useful tool!</p>
 
-<h4 id="unittesting">Unit Testing </h4>
+<h4 id="unittesting">Unit Testing</h4>
 
 <p>Some of the original development was done with unit testing in some other
 tools I developed. This code formed the basis of a few parts of <abbr title="MultiMarkdown">MMD</abbr>.
@@ -396,7 +396,7 @@ Otherwise, it was hard to see how to really create very good unit tests for
 the development of <abbr title="MultiMarkdown">MMD</abbr>. So there is really not much unit testing built into
 the code or used during the development.</p>
 
-<h3 id="dependencieslibraries">Dependencies/Libraries </h3>
+<h3 id="dependencieslibraries">Dependencies/Libraries</h3>
 
 <p><abbr title="MultiMarkdown">MMD</abbr> v6 has no external dependencies when compiling, aside from the standard
 libraries for C development (Except that it will use <code>libcurl</code> if available in
@@ -430,9 +430,50 @@ order to embed them in packaged file formats, e.g. EPUB 3,
 TextBundle/TextPack, OpenDocument, etc.</p></li>
 </ul>
 
-<h3 id="changelog">Changelog </h3>
-
-<ul>
+<h3 id="changelog">Changelog</h3>
+
+<ul>
+<li><p>2018&#8211;09&#8211;01 - v 6.4.0:</p>
+
+<ul>
+<li>ADDED: Add ODF Header metadata and fix issue with LaTeX Header metadata</li>
+<li>ADDED: Add additional tests for special characters</li>
+<li>ADDED: Add initial OPML export support (address #9)</li>
+<li>ADDED: Add opml option to read for MultiMarkdown OPML files</li>
+<li>Add missing Latex support files</li>
+<li>Avoid potential error with stack_free</li>
+<li>CHANGED: Remove unnecessary code</li>
+<li>FIXED: Allow caption without trailing newline at end of document</li>
+<li>FIXED: Escape square brackets, e.g. &#8216;{[foo]}&#8217; (addresses #128 and #129)</li>
+<li>FIXED: Fix escpaing of % character in LaTeX code spans and blocks</li>
+<li>FIXED: Fix html comments inside code blocks (fixes #118)</li>
+<li>FIXED: Fix issue where <code>~</code> is mistakenly interpreted as fence delimiter</li>
+<li>FIXED: Fix issue with BOM and files &gt; 4k</li>
+<li>FIXED: Fix issue with dollar math delimiters inside code (fixes #134)</li>
+<li>FIXED: Fix token length in OPML</li>
+<li>FIXED: Improve OPML export; add OPML tests</li>
+<li>FIXED: Normalize line spacing in CriticMarkup notes in LaTeX (fixes #120)</li>
+<li>FIXED: Preserve tabs following leading hashes in code blocks</li>
+<li>FIXED: Prevent potential null dereference</li>
+<li>FIXED: Remove lock file</li>
+<li>FIXED: Trim single remaining whitespace when exporting headers</li>
+<li>FIXED: Trim trailing newlines in definition blocks</li>
+<li>FIXED: Use Setext headers when necessary to convert from OPML to text (fixes #138)</li>
+<li>FIXED: Use \ul instead of \underline when soul package is in use (fixes #121)</li>
+<li>Merge pull request #132 from jlargentaye/develop</li>
+<li>UPDATE: Clarify DevelopmentNotes re: libcurl</li>
+<li>UPDATE: Clarify README re: libcurl</li>
+<li>UPDATED: &#8216;\item{}&#8217; no longer needed since square brackets escaped on their own</li>
+<li>UPDATED: Add 6.3.1 release notes</li>
+<li>UPDATED: Add allowfullscreen to list of boolean HTML attributes</li>
+<li>UPDATED: Add more BibTeX test cases</li>
+<li>UPDATED: Adjust metadata for test files</li>
+<li>UPDATED: Allow '' to preserve line break in metadata. (Addresses #86)</li>
+<li>UPDATED: Apply astyle</li>
+<li>UPDATED: Fix whitespace with boolean HTML attributes</li>
+<li>UPDATED: Ignore escaped space at end of code span</li>
+<li>UPDATED: Test % escaping in URLs</li>
+</ul></li>
 <li><p>2018&#8211;03&#8211;28 - v 6.3.2:</p>
 
 <ul>
index 0ecf1e481941d77de4e9d194ae379db65a7f7468..bf637e9c2dd29154a2e8a1e285cda91f19789046 100644 (file)
Binary files a/DevelopmentNotes/DevelopmentNotes.pdf and b/DevelopmentNotes/DevelopmentNotes.pdf differ
index 43be8f8967522faea2c7a9509b905674bae541db..64e6414e30498d58e4583e8f547c85a45f37ef24 100644 (file)
@@ -1,6 +1,6 @@
 Title: MultiMarkdown v6 Development Notes
 Author:        Fletcher T. Penney
-Date: 2018-03-38  
+Date: 2018-09-01  
 LaTeX Config:  tufte-handout
 Base Header Level:     3
 uuid: dd2d8e76-dc2d-416d-9acd-5395d20871c2
@@ -472,6 +472,47 @@ TextBundle/TextPack, OpenDocument, etc.
 
 # Changelog #
 
+* 2018-09-01 - v 6.4.0:
+
+       *    ADDED: Add ODF Header metadata and fix issue with LaTeX Header metadata
+       *    ADDED: Add additional tests for special characters
+       *    ADDED: Add initial OPML export support (address #9)
+       *    ADDED: Add opml option to read for MultiMarkdown OPML files
+       *    Add missing Latex support files
+       *    Avoid potential error with stack_free
+       *    CHANGED: Remove unnecessary code
+       *    FIXED: Allow caption without trailing newline at end of document
+       *    FIXED: Escape square brackets, e.g. '{[foo]}' (addresses #128 and #129)
+       *    FIXED: Fix escpaing of % character in LaTeX code spans and blocks
+       *    FIXED: Fix html comments inside code blocks (fixes #118)
+       *    FIXED: Fix issue where `~` is mistakenly interpreted as fence delimiter
+       *    FIXED: Fix issue with BOM and files > 4k
+       *    FIXED: Fix issue with dollar math delimiters inside code (fixes #134)
+       *    FIXED: Fix token length in OPML
+       *    FIXED: Improve OPML export; add OPML tests
+       *    FIXED: Normalize line spacing in CriticMarkup notes in LaTeX (fixes #120)
+       *    FIXED: Preserve tabs following leading hashes in code blocks
+       *    FIXED: Prevent potential null dereference
+       *    FIXED: Remove lock file
+       *    FIXED: Trim single remaining whitespace when exporting headers
+       *    FIXED: Trim trailing newlines in definition blocks
+       *    FIXED: Use Setext headers when necessary to convert from OPML to text (fixes #138)
+       *    FIXED: Use \ul instead of \underline when soul package is in use (fixes #121)
+       *    Merge pull request #132 from jlargentaye/develop
+       *    UPDATE: Clarify DevelopmentNotes re: libcurl
+       *    UPDATE: Clarify README re: libcurl
+       *    UPDATED: '\item{}' no longer needed since square brackets escaped on their own
+       *    UPDATED: Add 6.3.1 release notes
+       *    UPDATED: Add allowfullscreen to list of boolean HTML attributes
+       *    UPDATED: Add more BibTeX test cases
+       *    UPDATED: Adjust metadata for test files
+       *    UPDATED: Allow '\' to preserve line break in metadata.  (Addresses #86)
+       *    UPDATED: Apply astyle
+       *    UPDATED: Fix whitespace with boolean HTML attributes
+       *    UPDATED: Ignore escaped space at end of code span
+       *    UPDATED: Test % escaping in URLs
+
+
 * 2018-03-28 - v 6.3.2:
 
        * UPDATED: Update documentation
index 4ac65de94a0b88347ff790b7850984f8054c2f43..72b0489d0b19c6a4c6598969aba8d3e6267a828b 100644 (file)
Binary files a/QuickStart/QuickStart.epub and b/QuickStart/QuickStart.epub differ
index 16151922c86f6a978ac75350fd8cbe382b0ac518..0d9da237fabfbf4c1563d82f04ea380e8eaa427c 100644 (file)
@@ -276,7 +276,7 @@ office:mimetype="application/vnd.oasis.opendocument.text">
 <office:meta>
        <dc:title>MultiMarkdown v6 Quick Start Guide</dc:title>
        <dc:creator>Fletcher T. Penney</dc:creator>
-       <meta:user-defined meta:name="version">6.3.2</meta:user-defined>
+       <meta:user-defined meta:name="version">6.4.0</meta:user-defined>
        <meta:user-defined meta:name="uuid">0d6313fa-9135-477e-9c14-7d62c1977833</meta:user-defined>
 </office:meta>
 <office:body>
@@ -319,15 +319,15 @@ office:mimetype="application/vnd.oasis.opendocument.text">
 </text:table-of-content>
 
 
-<text:h text:outline-level="3"><text:bookmark text:name="introduction"/>Introduction </text:h>
+<text:h text:outline-level="3"><text:bookmark text:name="introduction"/>Introduction</text:h>
 
-<text:p text:style-name="Standard">Version: 6.3.2</text:p>
+<text:p text:style-name="Standard">Version: 6.4.0</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: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-
@@ -407,7 +407,7 @@ 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: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>
 
@@ -450,9 +450,9 @@ libMultiMarkdown is to be used in a multithreaded program, a separate
 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="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: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
@@ -472,7 +472,7 @@ 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:outline-level="4"><text:bookmark text:name="citations"/>Citations </text:h>
+<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.
 If you wish to use BibTeX, then configure the <text:span text:style-name="Source_20_Text">bibtex</text:span> metadata (required) and
@@ -481,7 +481,7 @@ the <text:span text:style-name="Source_20_Text">biblio style</text:span> metadat
 <text:p text:style-name="Standard">The HTML output for citations now uses parentheses instead of brackets, e.g.
 <text:span text:style-name="Source_20_Text">(1)</text:span> instead of <text:span text:style-name="Source_20_Text">[1]</text:span>.</text:p>
 
-<text:h text:outline-level="4"><text:bookmark text:name="criticmarkup"/>CriticMarkup </text:h>
+<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>,
@@ -498,7 +498,7 @@ these two options, then CriticMarkup that spans a blank line is not recogniz</te
 <text:p text:style-name="Standard">T
 formats).</text:p>
 
-<text:h text:outline-level="4"><text:bookmark text:name="embeddedimages"/>Embedded Images </text:h>
+<text:h text:outline-level="4"><text:bookmark text:name="embeddedimages"/>Embedded Images</text:h>
 
 <text:p text:style-name="Standard">Supported export formats (<text:span text:style-name="Source_20_Text">odt</text:span>, <text:span text:style-name="Source_20_Text">epub</text:span>, <text:span text:style-name="Source_20_Text">bundle</text:span>, <text:span text:style-name="Source_20_Text">bundlezip</text:span>) include
 images inside the export document:</text:p>
@@ -517,13 +517,13 @@ properly installed when MMD is compiled. This is true f</text:p></text:list-item
 <text:p text:style-name="Standard">ed
 as such. I working on options for this for the future.</text:p>
 
-<text:h text:outline-level="4"><text:bookmark text:name="emphandstrong"/>Emph and Strong </text:h>
+<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="epub3support"/>EPUB 3 Support </text:h>
+<text:h text:outline-level="4"><text:bookmark text:name="epub3support"/>EPUB 3 Support</text:h>
 
 <text:p text:style-name="Standard">MMD v6 now provides support for direct creation of <text:a xlink:type="simple" xlink:href="https://en.wikipedia.org/wiki/EPUB">EPUB 3</text:a> files. Previously
 a separate tool was required to create EPUB files from MMD. It&#8217;s now built-
@@ -546,7 +546,7 @@ document formats you need. Same goes for Amazon&#8217;s ebook formats &#8211; th
 run in batch mode (using the <text:span text:style-name="Source_20_Text">-b\--batch</text:span> options). Otherwise, it simply
 outputs the HTML 5 file that would serve as the primary content for the EPUB.</text:p>
 
-<text:h text:outline-level="4"><text:bookmark text:name="fencedcodeblocks"/>Fenced Code Blocks </text:h>
+<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>
 
@@ -562,12 +562,12 @@ 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="footnotes"/>Footnotes </text:h>
+<text:h text:outline-level="4"><text:bookmark text:name="footnotes"/>Footnotes</text:h>
 
 <text:p text:style-name="Standard">The HTML output for footnotes now uses superscripts instead of brackets, e.g.
 <text:span text:style-name="Source_20_Text">&lt;sup&gt;1&lt;/sup&gt;</text:span> instead of <text:span text:style-name="Source_20_Text">[1]</text:span>.</text:p>
 
-<text:h text:outline-level="4"><text:bookmark text:name="glossaryterms"/>Glossary Terms </text:h>
+<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
@@ -587,7 +587,7 @@ 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:outline-level="4"><text:bookmark text:name="htmlcomments"/>HTML Comments </text:h>
+<text:h text:outline-level="4"><text:bookmark text:name="htmlcomments"/>HTML Comments</text:h>
 
 <text:p text:style-name="Standard">Previously, HTML Comments were used by MultiMarkdown to include raw text for
 inclusion in the output file. This was useful, but limited, as it could only
@@ -599,12 +599,12 @@ format since they would cause errors.</text:p>
 <text:p text:style-name="Standard">Take a look at the <text:span text:style-name="Source_20_Text">HTML Comments.text</text:span> file in the test suite for a better
 understanding of comment blocks vs comment spans, and how they are parsed.</text:p>
 
-<text:h text:outline-level="4"><text:bookmark text:name="internationalization"/>Internationalization </text:h>
+<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="latexchanges"/>LaTeX Changes </text:h>
+<text:h text:outline-level="4"><text:bookmark text:name="latexchanges"/>LaTeX Changes</text:h>
 
 <text:p text:style-name="Standard">LaTeX support is slightly different than in prior versions of MMD. It is
 designed to be a bit more consistent, and easier for basic use.</text:p>
@@ -695,7 +695,7 @@ the following <text:span text:style-name="Source_20_Text">latex config</text:spa
 location for your system. I would like to make this easier, but haven&#8217;t found
 the best configuration yet.</text:p>
 
-<text:h text:outline-level="4"><text:bookmark text:name="metadata"/>Metadata </text:h>
+<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.
@@ -727,7 +727,7 @@ use the transclusion functionality:</text:p>
 
 <text:p text:style-name="Preformatted Text">Title:<text:tab/>Some Title<text:line-break/>MMD Header:<text:tab/>This is *MMD* text.<text:line-break/>MMD Footer:<text:tab/>{{footer.txt}}<text:line-break/></text:p>
 
-<text:h text:outline-level="4"><text:bookmark text:name="outputformats"/>Output Formats </text:h>
+<text:h text:outline-level="4"><text:bookmark text:name="outputformats"/>Output Formats</text:h>
 
 <text:p text:style-name="Standard">MultiMarkdown 6 supports the following output formats, using the <text:span text:style-name="Source_20_Text">-t</text:span>
 command-line argument:</text:p>
@@ -772,11 +772,15 @@ package is compressed to a single zip file (similar to EPUB and ODor macOS build
 
 </text:list>
 
-<text:h text:outline-level="4"><text:bookmark text:name="rawsource"/>Raw Source </text:h>
+<text:h text:outline-level="4"><text:bookmark text:name="rawsource"/>Raw Source</text:h>
 
-<text:p text:style-name="Standard">In older versions of MultiMarkdown you could use an HTML comment to pass raw LaTeX or other content to the final document. This worked reasonably well, but was limited and didn&#8217;t work well when exporting to multiple formats. It was time for something new.</text:p>
+<text:p text:style-name="Standard">In older versions of MultiMarkdown you could use an HTML comment to pass raw
+LaTeX or other content to the final document. This worked reasonably well,
+but was limited and didn&#8217;t work well when exporting to multiple formats. It
+was time for something new.</text:p>
 
-<text:p text:style-name="Standard">MMD v6 offers a new feature to handle this. Code spans and code blocks can be flagged as representing raw source:</text:p>
+<text:p text:style-name="Standard">MMD v6 offers a new feature to handle this. Code spans and code blocks can
+be flagged as representing raw source:</text:p>
 
 <text:p text:style-name="Preformatted Text">foo `*bar*`{=html}<text:line-break/><text:line-break/>```{=latex}<text:line-break/>*foo*<text:line-break/>```<text:line-break/></text:p>
 
@@ -806,19 +810,19 @@ package is compressed to a single zip file (similar to EPUB and ODor macOS build
 
 </text:list>
 
-<text:h text:outline-level="4"><text:bookmark text:name="tableofcontents"/>Table of Contents </text:h>
+<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="4"><text:bookmark text:name="tables"/>Tables </text:h>
+<text:h text:outline-level="4"><text:bookmark text:name="tables"/>Tables</text:h>
 
 <text:p text:style-name="Standard">Tables in MultiMarkdown-6 work basically the same as before, but a caption, if
 present, must come <text:span text:style-name="MMD-Italic">after</text:span> the body of the table, not <text:span text:style-name="MMD-Italic">before</text:span>.</text:p>
 
-<text:h text:outline-level="4"><text:bookmark text:name="transclusion"/>Transclusion </text:h>
+<text:h text:outline-level="4"><text:bookmark text:name="transclusion"/>Transclusion</text:h>
 
 <text:p text:style-name="Standard">File transclusion works basically the same way &#8211; <text:span text:style-name="Source_20_Text">{{file}}</text:span> is used to
 indicate a file that needs to be transcluded. <text:span text:style-name="Source_20_Text">{{file.*}}</text:span> allows for
@@ -905,12 +909,12 @@ whether a file is being processed by itself or as part of a &#8220;parent&#8221;
 This can be useful when a particular file can either be a standalone document,
 or a chapter inside a larger document.</text:p>
 
-<text:h text:outline-level="3"><text:bookmark text:name="developernotes"/>Developer Notes </text:h>
+<text:h text:outline-level="3"><text:bookmark text:name="developernotes"/>Developer Notes</text:h>
 
 <text:p text:style-name="Standard">If you&#8217;re using MMD as a library in another application, there are a few
 things to be aware of.</text:p>
 
-<text:h text:outline-level="4"><text:bookmark text:name="objectpools"/>Object Pools </text:h>
+<text:h text:outline-level="4"><text:bookmark text:name="objectpools"/>Object Pools</text:h>
 
 <text:p text:style-name="Standard">To improve performance, MMD has the option to allocate the memory for the
 tokens used in parsing in large chunks (&#8220;object pools&#8221;). Allocating a single
@@ -925,7 +929,7 @@ memory management, and understand MultiMarkdown&#8217;s program flow. Failure to
 properly manage the object pool can lead to massive memory leaks, freeing
 memory before that is still in use, or other potential problems.</text:p>
 
-<text:h text:outline-level="4"><text:bookmark text:name="htmlbooleanattributes"/>HTML Boolean Attributes </text:h>
+<text:h text:outline-level="4"><text:bookmark text:name="htmlbooleanattributes"/>HTML Boolean Attributes</text:h>
 
 <text:p text:style-name="Standard">Most HTML attributes are of the key-value type (e.g. <text:span text:style-name="Source_20_Text">key=&quot;value&quot;</text:span>). But some
 less frequently used attributes are boolean attributes (e.g. <text:span text:style-name="Source_20_Text">&lt;video<text:line-break/>controls&gt;</text:span>). Properly distinguishing HTML from other uses of the <text:span text:style-name="Source_20_Text">&lt;</text:span>
@@ -974,7 +978,7 @@ off. I will continue to research additional options.</text:p></text:list-item>
 
 </text:list>
 
-<text:h text:outline-level="3"><text:bookmark text:name="futuresteps"/>Future Steps </text:h>
+<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>
 
index 7bad18fb20a53195cdbceb4e985a127456f00b56..2a557632f4d83ef1f9da97e61536faa80571b690 100644 (file)
@@ -4,7 +4,7 @@
        <meta charset="utf-8"/>
        <title>MultiMarkdown v6 Quick Start Guide</title>
        <meta name="author" content="Fletcher T. Penney"/>
-       <meta name="version" content="6.3.2"/>
+       <meta name="version" content="6.4.0"/>
        <meta name="uuid" content="0d6313fa-9135-477e-9c14-7d62c1977833"/>
 </head>
 <body>
 </ul>
 </div>
 
-<h3 id="introduction">Introduction </h3>
+<h3 id="introduction">Introduction</h3>
 
-<p>Version: 6.3.2</p>
+<p>Version: 6.4.0</p>
 
 <p>This document serves as a description of MultiMarkdown (<abbr title="MultiMarkdown">MMD</abbr>) v6, as well as a sample
 document to demonstrate the various features. Specifically, differences from
 <abbr title="MultiMarkdown">MMD</abbr> v5 will be pointed out.</p>
 
-<h3 id="performance">Performance </h3>
+<h3 id="performance">Performance</h3>
 
 <p>A big motivating factor leading to the development of <abbr title="MultiMarkdown">MMD</abbr> v6 was
 performance. When <abbr title="MultiMarkdown">MMD</abbr> first migrated from Perl to C (based on <a href="https://github.com/jgm/peg-markdown">peg-
@@ -131,7 +131,7 @@ files, the additional features of <abbr title="MultiMarkdown">MMD</abbr> compare
 the increased legibility of the source code of <abbr title="MultiMarkdown">MMD</abbr> (in my biased opinion
 anyway) make this project worthwhile.</p>
 
-<h3 id="parsetree">Parse Tree </h3>
+<h3 id="parsetree">Parse Tree</h3>
 
 <p><abbr title="MultiMarkdown">MMD</abbr> v6 performs its parsing in the following steps:</p>
 
@@ -162,9 +162,9 @@ libMultiMarkdown is to be used in a multithreaded program, a separate
 slightly more abstracted <code>mmd_convert_string()</code> function that handles creating
 and destroying the <code>mmd_engine</code> automatically.</p>
 
-<h3 id="features">Features </h3>
+<h3 id="features">Features</h3>
 
-<h4 id="abbreviationsoracronyms">Abbreviations (Or Acronyms) </h4>
+<h4 id="abbreviationsoracronyms">Abbreviations (Or Acronyms)</h4>
 
 <p>This file includes the use of <abbr title="MultiMarkdown">MMD</abbr> as an abbreviation for MultiMarkdown. The
 abbreviation will be expanded on the first use, and the shortened form will be
@@ -187,7 +187,7 @@ 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>
+<h4 id="citations">Citations</h4>
 
 <p>Citations can be specified using an inline syntax, just like inline footnotes.
 If you wish to use BibTeX, then configure the <code>bibtex</code> metadata (required) and
@@ -196,7 +196,7 @@ the <code>biblio style</code> metadata (optional).</p>
 <p>The HTML output for citations now uses parentheses instead of brackets, e.g.
 <code>(1)</code> instead of <code>[1]</code>.</p>
 
-<h4 id="criticmarkup">CriticMarkup </h4>
+<h4 id="criticmarkup">CriticMarkup</h4>
 
 <p><abbr title="MultiMarkdown">MMD</abbr> v6 has improved support for <a href="http://criticmarkup.com/">CriticMarkup</a>, both in terms of parsing, and
 in terms of support for each output format. You can <ins>insert text</ins>,
@@ -213,7 +213,7 @@ these two options, then CriticMarkup that spans a blank line is not recogniz</p>
 <p>T
 formats).</p>
 
-<h4 id="embeddedimages">Embedded Images </h4>
+<h4 id="embeddedimages">Embedded Images</h4>
 
 <p>Supported export formats (<code>odt</code>, <code>epub</code>, <code>bundle</code>, <code>bundlezip</code>) include
 images inside the export document:</p>
@@ -227,13 +227,13 @@ properly installed when <abbr title="MultiMarkdown">MMD</abbr> is compiled. This
 <p>ed
 as such. I working on options for this for the future.</p>
 
-<h4 id="emphandstrong">Emph and Strong </h4>
+<h4 id="emphandstrong">Emph and Strong</h4>
 
 <p>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.</p>
 
-<h4 id="epub3support">EPUB 3 Support </h4>
+<h4 id="epub3support">EPUB 3 Support</h4>
 
 <p><abbr title="MultiMarkdown">MMD</abbr> v6 now provides support for direct creation of <a href="https://en.wikipedia.org/wiki/EPUB">EPUB 3</a> files. Previously
 a separate tool was required to create EPUB files from <abbr title="MultiMarkdown">MMD</abbr>. It&#8217;s now built-
@@ -256,7 +256,7 @@ document formats you need. Same goes for Amazon&#8217;s ebook formats &#8211; th
 run in batch mode (using the <code>-b\--batch</code> options). Otherwise, it simply
 outputs the HTML 5 file that would serve as the primary content for the EPUB.</p>
 
-<h4 id="fencedcodeblocks">Fenced Code Blocks </h4>
+<h4 id="fencedcodeblocks">Fenced Code Blocks</h4>
 
 <p>Fenced code blocks are fundamentally the same as <abbr title="MultiMarkdown">MMD</abbr> v5, except:</p>
 
@@ -268,12 +268,12 @@ complex parser.</p></li>
 considered to be part of the code block.</p></li>
 </ol>
 
-<h4 id="footnotes">Footnotes </h4>
+<h4 id="footnotes">Footnotes</h4>
 
 <p>The HTML output for footnotes now uses superscripts instead of brackets, e.g.
 <code>&lt;sup&gt;1&lt;/sup&gt;</code> instead of <code>[1]</code>.</p>
 
-<h4 id="glossaryterms">Glossary Terms </h4>
+<h4 id="glossaryterms">Glossary Terms</h4>
 
 <p>If there are terms in your document you wish to define in a <a href="#gn:3" id="gnref:3" title="see glossary" class="glossary">glossary</a> at
 the end of your document, you can define them using the glossary syntax.</p>
@@ -299,7 +299,7 @@ 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="htmlcomments">HTML Comments </h4>
+<h4 id="htmlcomments">HTML Comments</h4>
 
 <p>Previously, HTML Comments were used by MultiMarkdown to include raw text for
 inclusion in the output file. This was useful, but limited, as it could only
@@ -311,12 +311,12 @@ format since they would cause errors.</p>
 <p>Take a look at the <code>HTML Comments.text</code> file in the test suite for a better
 understanding of comment blocks vs comment spans, and how they are parsed.</p>
 
-<h4 id="internationalization">Internationalization </h4>
+<h4 id="internationalization">Internationalization</h4>
 
 <p><abbr title="MultiMarkdown">MMD</abbr> v6 includes support for substituting certain text phrases in other
 languages. This only affects the HTML format.</p>
 
-<h4 id="latexchanges">LaTeX Changes </h4>
+<h4 id="latexchanges">LaTeX Changes</h4>
 
 <p>LaTeX support is slightly different than in prior versions of <abbr title="MultiMarkdown">MMD</abbr>. It is
 designed to be a bit more consistent, and easier for basic use.</p>
@@ -384,7 +384,7 @@ the following <code>latex config</code> values by default:</p>
 location for your system. I would like to make this easier, but haven&#8217;t found
 the best configuration yet.</p>
 
-<h4 id="metadata">Metadata </h4>
+<h4 id="metadata">Metadata</h4>
 
 <p>Metadata in <abbr title="MultiMarkdown">MMD</abbr> v6 includes new support for LaTeX &#8211; the <code>latex config</code> key
 allows you to automatically setup of multiple <code>latex include</code> files at once.
@@ -416,7 +416,7 @@ MMD Header: This is *MMD* text.
 MMD Footer:    {{footer.txt}}
 </code></pre>
 
-<h4 id="outputformats">Output Formats </h4>
+<h4 id="outputformats">Output Formats</h4>
 
 <p>MultiMarkdown 6 supports the following output formats, using the <code>-t</code>
 command-line argument:</p>
@@ -442,11 +442,15 @@ and images between applications (on any OS, but especially on iOS)</li>
 package is compressed to a single zip file (similar to EPUB and ODor macOS builds.</li>
 </ul>
 
-<h4 id="rawsource">Raw Source </h4>
+<h4 id="rawsource">Raw Source</h4>
 
-<p>In older versions of MultiMarkdown you could use an HTML comment to pass raw LaTeX or other content to the final document. This worked reasonably well, but was limited and didn&#8217;t work well when exporting to multiple formats. It was time for something new.</p>
+<p>In older versions of MultiMarkdown you could use an HTML comment to pass raw
+LaTeX or other content to the final document. This worked reasonably well,
+but was limited and didn&#8217;t work well when exporting to multiple formats. It
+was time for something new.</p>
 
-<p><abbr title="MultiMarkdown">MMD</abbr> v6 offers a new feature to handle this. Code spans and code blocks can be flagged as representing raw source:</p>
+<p><abbr title="MultiMarkdown">MMD</abbr> v6 offers a new feature to handle this. Code spans and code blocks can
+be flagged as representing raw source:</p>
 
 <pre><code>foo `*bar*`{=html}
 
@@ -467,19 +471,19 @@ package is compressed to a single zip file (similar to EPUB and ODor macOS build
 <li><code>*</code> &#8211; wildcard matches any output format</li>
 </ul>
 
-<h4 id="tableofcontents">Table of Contents </h4>
+<h4 id="tableofcontents">Table of Contents</h4>
 
 <p>By placing <code>{{TOC}}</code> in your document, you can insert an automatically
 generated Table of Contents in your document. As of <abbr title="MultiMarkdown">MMD</abbr> v6, the native
 Table of Contents functionality is used when exporting to LaTeX or
 OpenDocument formats.</p>
 
-<h4 id="tables">Tables </h4>
+<h4 id="tables">Tables</h4>
 
 <p>Tables in MultiMarkdown-6 work basically the same as before, but a caption, if
 present, must come <em>after</em> the body of the table, not <em>before</em>.</p>
 
-<h4 id="transclusion">Transclusion </h4>
+<h4 id="transclusion">Transclusion</h4>
 
 <p>File transclusion works basically the same way &#8211; <code>{{file}}</code> is used to
 indicate a file that needs to be transcluded. <code>{{file.*}}</code> allows for
@@ -549,12 +553,12 @@ whether a file is being processed by itself or as part of a &#8220;parent&#8221;
 This can be useful when a particular file can either be a standalone document,
 or a chapter inside a larger document.</p>
 
-<h3 id="developernotes">Developer Notes </h3>
+<h3 id="developernotes">Developer Notes</h3>
 
 <p>If you&#8217;re using <abbr title="MultiMarkdown">MMD</abbr> as a library in another application, there are a few
 things to be aware of.</p>
 
-<h4 id="objectpools">Object Pools </h4>
+<h4 id="objectpools">Object Pools</h4>
 
 <p>To improve performance, <abbr title="MultiMarkdown">MMD</abbr> has the option to allocate the memory for the
 tokens used in parsing in large chunks (&#8220;object pools&#8221;). Allocating a single
@@ -569,7 +573,7 @@ memory management, and understand MultiMarkdown&#8217;s program flow. Failure to
 properly manage the object pool can lead to massive memory leaks, freeing
 memory before that is still in use, or other potential problems.</p>
 
-<h4 id="htmlbooleanattributes">HTML Boolean Attributes </h4>
+<h4 id="htmlbooleanattributes">HTML Boolean Attributes</h4>
 
 <p>Most HTML attributes are of the key-value type (e.g. <code>key=&quot;value&quot;</code>). But some
 less frequently used attributes are boolean attributes (e.g. <code>&lt;video
@@ -605,7 +609,7 @@ option I have chosen as default for <abbr title="MultiMarkdown">MMD</abbr> &#821
 off. I will continue to research additional options.</p></li>
 </ul>
 
-<h3 id="futuresteps">Future Steps </h3>
+<h3 id="futuresteps">Future Steps</h3>
 
 <p>Some features I plan to implement at some point:</p>
 
index 7639cdbee0f7d058e277f4b7960f45ad7efd8ced..3b3ff112ef2cd3d99ba5c6e82a8c9e7c5e29aa1d 100644 (file)
Binary files a/QuickStart/QuickStart.pdf and b/QuickStart/QuickStart.pdf differ
index 84bff0f3a162c8f5983eb3fe721495d1ebff0a8c..08a04bf07f0a1ae590e981a1c035e8af98812d33 100644 (file)
@@ -1,6 +1,6 @@
 Title: MultiMarkdown v6 Quick Start Guide
 Author:        Fletcher T. Penney
-Version:       6.3.2
+Version:       6.4.0
 LaTeX Config:  tufte-handout
 Base Header Level:     3
 uuid:  0d6313fa-9135-477e-9c14-7d62c1977833
@@ -416,9 +416,13 @@ package is compressed to a single zip file (similar to EPUB and ODor macOS build
 
 ## Raw Source ##
 
-In older versions of MultiMarkdown you could use an HTML comment to pass raw LaTeX or other content to the final document.  This worked reasonably well, but was limited and didn't work well when exporting to multiple formats.  It was time for something new.
+In older versions of MultiMarkdown you could use an HTML comment to pass raw
+LaTeX or other content to the final document.  This worked reasonably well,
+but was limited and didn't work well when exporting to multiple formats.  It
+was time for something new.
 
-MMD  v6 offers a new feature to handle this.  Code spans and code blocks can be flagged as representing raw source:
+MMD  v6 offers a new feature to handle this.  Code spans and code blocks can
+be flagged as representing raw source:
 
        foo `*bar*`{=html}
        
index b787ca8e3a071370c48c8f48ab9206d31a615665..d27d8a521465c8b810813c15c1adb2be1bce8f2a 100644 (file)
--- a/README.md
+++ b/README.md
@@ -4,9 +4,9 @@
 | ---------- | ------------------------- |  
 | Title:     | MultiMarkdown        |  
 | Author:    | Fletcher T. Penney       |  
-| Date:      | 2018-03-28 |  
+| Date:      | 2018-09-01 |  
 | Copyright: | Copyright © 2016 - 2018 Fletcher T. Penney.    |  
-| Version:   | 6.3.2      |  
+| Version:   | 6.4.0      |  
 
 master branch: [![Build Status](https://travis-ci.org/fletcher/MultiMarkdown-6.svg?branch=master)](https://travis-ci.org/fletcher/MultiMarkdown-6)  
 develop branch: [![Build Status](https://travis-ci.org/fletcher/MultiMarkdown-6.svg?branch=develop)](https://travis-ci.org/fletcher/MultiMarkdown-6)