Markdeep

Demo | Features | Templates | Get Started | Examples | Advanced | Credits | License

Markdeep is a technology for writing plain text documents that will look good in any web browser, whether local or remote. It supports diagrams, calendars, equations, and other features as extensions of Markdown syntax.

Markdeep is free and easy to use. It doesn't require a plugin or Internet connection. Your document never leaves your machine and there's nothing to install. Just start writing in your favorite text editor. You don't have to export, compile, or otherwise process your document. Here's an example of a text editor and a browser viewing the same file simultaneously:

Text Editor View
📓
example.md.html
Web Browser View
Example
×
+

Markdeep is ideal for design documents, specifications, README files, code documentation, lab reports, and technical web pages. Because the source is plain text, Markdeep works well with software development toolchains.

Markdeep was created by Morgan McGuire at Casual Effects with inspiration from John Gruber's Markdown and Donald Knuth's and Leslie Lamport's LaTeX.

# Style Features

(See the
demo!)

Unique features:

• Diagrams
• Insert documents into one another
• LaTeX equation typesetting and numbering
• Document title and subtitle formatting
• Schedules and calendars
• Section numbering and references
• Figure, listing, and table numbering and references
• Smart quotes
• Video
• En dash, em dash, ×, minus, and degrees
• Unindexed sections
• Works in any browser by adding one line to the bottom of a text document
• Fallback to ASCII in a browser if you have neither the local file nor Internet access
• Optionally process server-side or offline with wkhtmltopdf
• CSS stylesheets
• Page breaks
• Printing and PDF generation support
Plus, Maruku + github + CommonMark Markdown features:
• Tables
• Paragraph formatting
• Nested, numbered and bulleted lists
• Fenced code blocks
• Bold, italic, code, strikethrough
• Attributes on images
• Blockquotes
• Citations
• Footnotes and endnotes
• Definition lists
• Images
• Doesn't italicize math with * or words containing underscores
• Unicode
• HTML passthrough

# Quick-start Templates

 starter.md.html Default web template with monospace/"ASCII" fallback latex.md.html LaTeX article formatting with fast load (no flashing) dark.md.html Black background with aggressive styling and fast load (no flashing) slides.md.html Template for generating PDF slideshows

# Get Started

To create a Markdeep document, just open any text editor and start writing. Paste the following at the bottom of your document as a single line. Then, save it as plain text with a filename with extension .md.html.

<!-- Markdeep: --><style class="fallback">body{visibility:hidden;white-space:pre;font-family:monospace}</style><script src="markdeep.min.js"></script><script src="https://casual-effects.com/markdeep/latest/markdeep.min.js"></script><script>window.alreadyProcessedMarkdeep||(document.body.style.visibility="visible")</script>

If you wish to use Unicode characters in your source document, you must put the following line at the top:

<meta charset="utf-8">

View the plain source of the feature demo to learn the formatting styles that you can use. Markdeep extends Markdown, and to quote John Gruber:

The overriding design goal for Markdown's formatting syntax is to make it as readable as possible. The idea is that a Markdown-formatted document should be publishable as-is, as plain text, without looking like it's been marked up with tags or formatting instructions.

To inspect the original text source for a Markdeep document in a browser, just add ?noformat to the end of its URL.

# Editing Tips

## Markdown Modes for Popular Editors

For Markdeep + Markdown Emacs installation, save markdown-mode.el in ~/emacs.d/ and add the following lines to your ~/.emacs file:

;; Uncomment the following line on OS X

(autoload 'markdown-mode "markdown-mode" "Major mode for editing Markdown" t)
(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode))

## Diagram Tips

There are a lot of techniques that can make drawing diagrams in plain text easier. I just use Visual Studio or Emacs in overwrite mode, and do everything by hand. I find that much easier than installing or learning a new tool. Here are some basic editor tricks:

• In most editors, pressing the insert key will enter overwrite mode, where you can type without inserting. If you're on a Macbook in Bootcamp, press fn + return for insert. Or, in Emacs, use M-x overwrite-mode to toggle overwriting.
• In Visual Studio, hold down Alt while selecting to make a selection rectangle. This allows you to insert, type, and delete across multiple lines.
• In Emacs, you can define a macro on the fly with C-x (, some key strokes, and then C-x ). Press C-x e to play back the macro, and keep repeating e to keep executing it. I use this to eliminate the manual work of repetitive actions, for example, adding a space on the left of an object and deleting one on its right to shift the object right.
Others prefer more sophisticated options:
• Overwrite-mode, Artist-mode, or Picture-mode in Emacs. These are minor modes that you can toggle on top of your major (language) mode.
• Vim DrawIt!
• ASCIIFlow Infinity is a free web tool for drawing ASCII diagrams.
• Org-mode is a major mode in Emacs for...everything. Markdeep diagrams are largely compatibile with its ditaa diagram syntax.
• Asciio is a standalone tool.
• JavE is a standalone diagram tool, but its syntax isn't entirely compatible with Markdeep.
• The Unix tool groff has an interpreter for the Pic language, which can be used to generate diagrams from graphs,
• graph-easy can convert Dot and other graph languages to ASCII.
• Monodraw is an OS X Unicode art editor that can produce Markdeep diagrams, but you should avoid using non-ISO 8859-1 (Latin 1) characters, since they won't produce lines.
• FIGlet will convert text to ASCII art banners. Some of its fonts are Markdeep compatible.
What about the "ASCII drawing characters," the DOS code page 437 and 850 characters? They're not widely supported in most modern monospace fonts (and thus editors), which are keyed to Unicode. Although Unicode has the same box drawing characters, they're now at different code points and not well supported by text-only tools (alas! I grew up with text-mode graphics and miss them).

# Examples

Markdeep is used extensively within the technology industry and academia. Manuals, theses, and even whole books have been written in it. Here are some public examples by myself and my colleagues:

The following features are experimental and may change at any time. See the
release history for change information between versions.

## URL Arguments

You can add the following arguments to any Markdeep document URL to alter how it is displayed. For example, http://foo.bar/index.md.html?export shows the HTML output.

noformat
Attempt to display the original source of the document. Due to web browser limitations, in some cases this will not be 100% accurate to the actual file source.
export
Make the displayed body HTML source code produced by Markdeep. This is useful for exporting a Markdeep document to HTML if you need to paste it into some context, such as an ePub book or Blog site, that does not allow scripts.

## Options

Markdeep looks in the window.markdeepOptions object to determine its behavior. The legal options are:

mode
A String that can be:
• 'markdeep' - the default: process the document as Markdeep
• 'script' - do not modify the document
• 'html' - process the document as HTML with embedded Markdeep nodes
• 'doxygen' - process special tags in Doxygen documentation
lang
An Object describing the natural language to use for keywords such as Section and Figure. (If your language is already supported by Markdeep, it is much easier to set this via a <meta lang="..."> tag in the document.) Look at the value of the global variable FRENCH in the source code to see the structure of this Object.
tocStyle
• 'auto' - Adjust based on the length of the document. (Default)
• 'none' - Do not show a table of contents
• 'short' - Show a short table of level-1 headers on a line across the top of the document
• 'medium' - Float a small-font full table of contents to the right of the abstract
• 'long' - Insert a full table of contents in normal font size as the first section after the abstract
hideEmptyWeekends
A Boolean specifying whether the calendar views from schedule lists should remove weekend days if there are no events on them. The default is true.
detectMath
A Boolean that defaults to true. If true, when LaTeX math surrounded by $...$, $$...$$, or \begin{...}...\end{...} is encountered, the MathJax processor is automatically loaded from their CDN. Set to false if you don't use math notation, host MathJax locally and include it using a script tag yourself, or use an alternative math processor.
showLabels
A Boolean that defaults to false. Display all labels for Figures, Listings, and Tables, as well as URLs for images with captions, the document itself, and links. This is useful when printing proofs of book chapters.
sortScheduleLists
A Boolean that defaults to true. Sort schedules in order of increasing date, regardless of the order in which events appear in the source document.

## Tables

You can use a markdown table generator to produce and edit the source for a table in Markdeep, since Markdeep is a superset of CommonMark markdown.

## Markdeep to PDF or HTML

You can of course print Markdeep documents to PDF from your browser manually. To automate the process of generating PDF files from Markdeep, I recommend wkhtmltopdf, a free, open-source, cross-platform command-line utility. If you include Latex/Mathjax math or remote fonts, ensure that they are loaded before the actual print operation occurs by using a delay. For example:

wkhtmltopdf --dpi 600 --print-media-type --javascript-delay 10000 --no-stop-slow-scripts report.md.html report.pdf
(Due to a limitation of wkhtmltopdf, this doesn't work if you're hosting Markdeep locally.)

wkhtmltopdf has many options for controlling formatting. When batch processing reports, I often add the options --header-spacing 5 --default-header to print the name of the document and page numbers.

To force sections to begin new pages when printed or in a PDF, add the following to your Markdeep document:

<style>.md h1, .md .nonumberh1 {page-break-before:always}</style>

Under OS X, you can also run join.py to concatenate multiple Markdeep PDF chapters for a thesis or book with the single-line command:

"/System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py" -o merged-file.pdf file1.pdf file2.pdf ...

For HTML export, see this guide that uses Firefox and another JavaScript file.

## Markdeep in HTML Documents

By default, Markdeep passes HTML commands through to the browser. This is for HTML in a primarily Markdeep document. If you have a document that is instead primarily HTML and you want to use Markdeep within it, then load the script with the following code at the end of the document inside of the body tag:

<script>window.markdeepOptions = {mode: 'html'};</script> <script src="markdeep.min.js"></script>
This will process <markdeep> tags as Markdeep (which may include embedded diagrams enclosed in asterisks), <diagram> tags as Markdeep diagrams (which do not need enclosing asterisks), and leave any other content in the document unmodified as HTML.

You can also use <pre class="markdeep"> and <pre class="diagram"> tags.

## Markdeep with Doxygen

Set an explicit footer in Doxyfile with:

HTML_FOOTER = footer.html
Include the following lines in the footer.html:
<script>window.markdeepOptions = {mode: 'doxygen'};</script> <script src="markdeep.min.js"></script>
Use <pre class="markdeep"> and <pre class="diagram"> tags in your documentation.

## Javascript API

You can prevent Markdeep from autoformatting a document so that you can use it as a Javascript library by loading it as:

<script>window.markdeepOptions = {mode: 'script'};</script> <script src="markdeep.min.js"></script>
This allows you to then manually invoke diagram processing or full Markdeep processing from within your own Javascript programs. Markdeep exports the following members on window.markdeep:

function format(src, elementMode)

Converts a String or DOM Element containing Markdeep content into a String of HTML that is returned. The result does not include the Markdeep header (stylesheet and math library script tags) or footer (signature line). The input is not modified.

Optional argument elementMode defaults to true, which surpresses page titles and a table of contents. Set elementMode = false if processing a whole document at once. Section captions are unaffected by this argument.

function formatDiagram(str, alignment)

Converts a Markdeep diagram (without the surrounding asterisks) to a String containing SVG HTML that is returned.

alignment is an optional String value for the float attribute of the SVG node. It may be 'left', 'right', or undefined.

function stylesheet()

Returns the Markdeep default stylesheet used for short documents. Markdeep adds extra spacing around the title when formatting a large document.

## Code

Markdeep is open source, so you can directly download and modify the source: markdeep.js. Implementation suggestions and patches are welcome at morgan@casual-effects.com. I'm particularly interested in suggestions for ways to significantly reduce the (minified) script size further.

This was a small hobby project, so I don't provide technical support and can't add every feature requested. However, so far I've been able to fix all reported bugs within a few days and often add features if they are straightforward and well-specified. Fortunately, if I'm unable to add the change that you want, you can just make those changes yourself.

# Origin and Credits

I created Markdeep because I was no longer willing to choose between design documents that looked good and those that worked well with programming tools. I liked what Markdown did on web servers, so I used that as a starting point and added more styling features and a way to directly view the documents client side in a browser.

HTML is "markup" that extends plain text with formatting. Unfortunately, the formatting tags often make original document source hard to read and write. This is slow and annoying, especially for those of us who use programming tools for document editing or want formatting in documentation files.

John Gruber invented Markdown to address HTML's editing problems. The name "markdown" conveys styling in the opposite direction of the "markup" tag syntax. Markdown beautifies text without explicit tags, based on common practices from ASCII e-mail and plain-text documents.

"Markdeep" is farther "down" from "markdown" on the autostyling and beautification path. Markdeep combines an easy-to-use and browser-friendly packaging with new unique features for diagrams. The code includes some of the best previous Javascript document formatting libraries and links to MathJax for equation typesetting.

Markdeep was created by Morgan McGuire. It extends the design and implementation work of:

• John Gruber's original Markdown concept and specification
• Ben Hollis' Maruku (aka "Github") Markdown dialect specification
• Michel Fortin's Extra Markdown dialect specification
• Ivan Sagalaev's highlight.js for syntax coloring
• Contributors to the above open source projects

Markdeep is open source. You may use, extend, and redistribute Markdeep without charge under the terms of the
      Copyright 2015-2016, Morgan McGuire

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.

Markdeep includes highlight.js, so you are also bound by its BSD license:
      Copyright (c) 2006, Ivan Sagalaev

Redistribution and use in source and binary forms, with or without modification, are
permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this list of
conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list
of conditions and the following disclaimer in the documentation and/or other materials
provided with the distribution.
* Neither the name of highlight.js nor the names of its contributors may be used to
endorse or promote products derived from this software without specific prior written
permission.

THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


# Release History

Old releases are archived as

https://casual-effects.com/markdeep/VERSION/markdeep.min.js
You can modify the Markdeep line at the bottom of a document to hardcode to a specific version instead of the default version of "latest".

You can report bugs to morgan@casual-effects.com by sending a Markdeep document and what you think is wrong about the way that it appears.

• 2017-06-TBD Version 0.20: TBD
1. Updated Mathjax for files included via (insert) to use cloudflare.
2. Fixed events from other JavaScript libraries interfering with Markdeep.
3. Updated wkhtmltopdf instructions to work around bugs in their 0.12.4 version.
4. Avoided generating empty <a> tags to work around a longstanding wkhtmltopdf bug.
5. Improved colors for tables in the dark template.

• 2017-05-27 Version 0.19: Layout
1. Adjusted the generation of paragraph tags around lists to better support HTML post-processing.
2. Fixed recursive (insert X here) statements triggering multiple tables of contents.
3. Renamed showURLs to showLabels and made it display both labels and URLs.
5. Switched to cloudflare CDN for Mathjax.
6. Fixed table layout in the presence of an empty first or last column cell.
7. Added \un Latex macro for units in math.
8. Added slide template (thanks to Torsten Grust).
9. Allowed leading space before tables with outside borders.
10. Added support for single-column tables.
11. Avoided page breaks after headers.
12. Improved rendering of high-index Unicode characters in diagrams.
13. Fixed font-weight of unnumbered H2 sections.
14. Removed stroke borders from grayscale Unicode blocks in diagrams.
15. Support for \pagebreak, \newpage, and page breaks with ++++++++.
16. Made the dark.css style sheet print with a white background.

• 2017-03-31 Version 0.18: Lists and links
1. Improved detection of the end of lists followed by indented content
2. Improved handling of multiple lists within a single schedule list day
3. Removed console debug output that was accidentally enabled in version 0.17
4. Defaulted to including the markdeep.min.js script with a trailing ?, to force updates under new aggressive browser caching
5. Support for subfigures in references, e.g., Figure [dinosaur](a)
6. Support for quoted URLs (needed for URLs containing unescaped parentheses)
7. Allowed fenced code blocks to be indented
8. Added support for both single and double arrows
9. Fixed incorrect floating on diagrams that lack a right border
10. Fixed citations at the end of figure captions

• 2017-02-12 Version 0.17: Style
1. Diagrams that are not floating may now omit the right-edge markers
2. Workarounds for Wordpress compatibility
3. Workaround for Firefox-specific bug with canvas in iframe affecting include statements
4. Allowed listing captions to be up to four lines long
5. Improved robustness of underscores and italics within words
6. Added Polish translation by Dariusz Kuśnierek
7. Added Latex and Dark style sheets.
8. Documented paragraph numbering

• 2016-12-20 Version 0.16: Printing support
1. Removed hyperlinking of svn and perforce URLs (they are still typset as URLs)
2. Improved Latex single-parsing 3. Fixed lists after unnumbered sections needing too much whitespace 4. Made horizontal rule parsing more permissive 5. Made layout avoid page breaks in tables, listings, and images when printed 6. Experimental insert support 7. Added version number to Markdeep footer • 2016-10-28 Version 0.15: Proof support 1. Changed windows code font to Consolas because Lucida Console's capital 'V' character is confusingly small. 2. Now only only floating images have constrained caption widths 3. Captions are always justified within the centered block 4. Added showURLs option 5. Added German and Hungarian localization contributed by Berczi Sándor 6. "Contents"/"Table of Contents" header is now localized 7. Added console warnings for broken reference links 8. Added console warnings for unused reference links 9. Added console warnings for unreferenced figures, tables, etc. 10. Added console warnings for broken links to figures, tables, etc. • 2016-09-10 Version 0.14: Robustness 1. Switched double minus signs to parse as em dash instead of en dash, since they visually resemble em dash in the text. 2. Corrected parsing of lists with spaces between the elements. 3. Grids of images are recognized and preserved. 4. Made table of contents work for documents with incorrect header nesting 5. Fixed an obscure browser-lockup bug resulting from parsing protected substrings as numbers for later markdown 6. Fixed protect accidentally generating sequences that look like dimensions. 7. Fixed links and images within footnotes and bibliography entries. 8. Increased character count for "short" definition lists to 160 characters. • 2016-08-01 Version 0.13: Book support 1. Added support for youtu.be URL shortened videos 2. Documented lang advanced option 3. Exposed tocStyle advanced option 4. Added support for multiple entries per date in schedule lists 5. Added support for auto-hiding weekends in schedule lists 6. Switched all date computations to UTC to avoid daylight time problems 7. Added parenthesized entries for schedule lists 8. Added support for arbitrary attributes on regular links 9. Terse formatting for definition lists with short definitions 10. Fixed fancy quotes in non-unicode documents 11. Reduced file size slightly 12. Improved syntax auto-highlighting in code blocks • 2016-06-28 Version 0.12: Localization 1. Prevented double underscores in variable names inside of diagrams, e.g., __FILE__, from being parsed as lines 2. Prevented decoration characters from being stripped from diagrams when on false-diagonal lines composed entirely of decorations 3. Matched fixed-width fonts between diagrams and code blocks, and code block font sizes across platforms 4. Added localization support via markdeepOptions.lang and <meta lang="..." ...> 5. Increased robustness of section links 6. Added unnumbered sections using (#) • 2016-05-14 Version 0.11: Integration 1. Added ?export option to extract raw HTML 2. Switched to font-rendering: antialiased; for lighter fonts 3. Added support for numeric exponents outside of math mode 4. Made spaces in figure/listing/table references unbreakable 5. Fixed processing of max-width and width on images 6. Added default max-width of 100% on images (can be overriden per image) 7. Extended minus-sign beautification to negative numbers immediately following an open parenthesis 8. Tweaked code syntax highlighting 9. Updated to use highlight.js 0.9.3 10. Fixed smart quotes after numbers 11. Made fancy quotes fully CSS-stylable 12. Made diagrams CSS-stylable 13. Protected style tags 14. Protected table of contents link names 15. Fixed long table of contents link to first section 16. Added gravizo support 17. Added figure captions • 2016-03-22 Version 0.10: Calendars and Images 1. Fixed alignment in table cells 2. Added support for links with no text 3. Added starter.md.html to web page 4. Switched default raw URL font to Georgia for more weight and better slashes 5. Table of contents now becomes its own section if it is longer than the abstract 6. Added support for Latex equation, eqnarray, and equation* environments 7. Fixed current-day highlighting on calendars 8. Fixed multiple single- Latex expressions on a single line
9. Allowed definition list terms to begin with non-word characters
10. Added support for daylight saving time independent of country
11. Improved robustness of parsing links within image captions
12. Added support for floating, captioned images
13. Fixed centering of multiple images in separate blocks
14. Allowed definition lists to have a single space between the colon and definition

• 2016-02-02 Version 0.09: References and Internal Links
1. Added support for schedule lists
2. 10x performance increase over version 0.08
5. Added support for HTML attributes on images
7. Added CSS classes for different list bullets
9. Fixed multiple centered images in a group
10. Fixed multiple colons in schedule event titles
12. Highlighted current day on calendars

• 2016-01-18 Version 0.08: References and Internal Links
1. Prevented HTML tags in the title from appearing in the browser tab
2. Fixed single-character bold and italic text hanging across lines
3. Fixed indented bold and italic text crossing lines
7. Allowed code blocks within other formatting
8. Code blocks can now contain diagram syntax without it becoming a diagram
9. Optimized performance of documents with many blocks
10. Updated Markdeep line hides the document until formatting succeeds or loading markdeep.js times out
11. Added smart quotes for double quotation marks
12. Fixed strict mode for Firefox
13. Protected raw <code> blocks from processing
15. Added table and listing captions
16. Added figure, table, and listing numbering and references
17. Fixed single-letter italic words in lists
18. Allowed lists to omit the leading blank line if the previous line ends in a colon or comma
19. Allowed inline code to wrap around a line
20. Stylized ~~~~ code blocks appropriately for listings, while leaving  blocks unadorned
21. Fixed URLs with underscores and tildes
22. Added robust processing of lists with inconsistent indenting
23. Added support for lists within definition lists
24. Fixed definition lists with multiple :-indented lines
25. Added support for multiple paragraphs in definition lists
26. Added support for multiple paragraphs in regular lists

• 2015-12-31 Version 0.07: Polish
1. Fixed white dot decorations next to lines in diagrams
2. Fixed floating images (broken in 0.06)
3. Fixed diagonal up-left arrows not reaching boxes
4. Added support for captionless images
6. Added support for centered images
7. Fixed processing of tables with short delimiters
8. Fixed diagonals appearing inside curves with vertices in diagrams
9. Allowed points vertically and horizontally adjacent to lines and points in diagrams
10. Improved unicode line and box character appearance in diagrams
12. Added Unicode block character support for diagrams
13. Enlarged Unicode hexagons to form tighter grids
14. Text is now selectable in diagrams
15. Added tiny grid examples to features.md.html
16. Added dot grid examples to features.md.html
17. Added Unicode examples to features.md.html
18. Added beautification of a number followed by "degrees"
19. Single linebreaks now allowed in italics, bold, and strikethrough
20. Hid the document until formatting is complete, once it is known that the script is available
21. Increased spacing between section numbers and titles

• 2015-11-30 Version 0.06: Bug Fixes
3. Improved processing of words with 'o' in boxes
4. script tag workaround for C++ template/Java generic syntax in code examples with capitalized classes
5. Fixed blocks beginning at the top of the document
6. Allow LaTeX expressions at the end of a sentence
7. Relaxed whitespace rules for LaTeX expressions
8. Fixed URLs in subtitles
9. Centered diagrams by default
10. Switched to https by default for Markdeep and Mathjax

• 2015-11-10 Version 0.05: Beta
1. Added named anchors to all sections
2. Fixed  in code blocks
3. Fixed header on the first line of a document
6. Added markdeepOptions.detectMath
7. Fixed ==> arrows in html mode
8. Released implementation source code

• 2015-11-03 Version 0.04: Optimization
1. Reduced minified script size to 56k (v0.03 was 88k)
3. En dash (--), em dash (---), and minus sign
4. Transform x into × in cases such as "1920×1080"
5. Fixed e-mail addresses in subtitles
6. Fixed arrows in the middle of lines not appearing
7. Removed borders around diagrams in the default stylesheet
8. Made tables centered in the default stylesheet
9. Added support for left floating diagrams

• 2015-10-21 Version 0.03: Embedding Support
2. Added support for embedding isolated Markdeep diagrams and content tags in HTML
3. Wrapped Markdeep styles in a md class
4. Moved Markdeep stylesheet to the top of <head> to make it easier to override
5. Improved handling of underscore lines and parentheses in diagrams
6. Added support for short verticals in diagrams, e.g., _.- -._
7. Added support for hyperlinking of URLs containing ? and &
8. Added CSS class support for <em> and <strong> tags to allow reinterpretation of *em* vs. _em_ syntax.
9. Fixed single quotes and dollar signs in fenced code blocks
10. Adjusted default style sheet spacing for long and short documents

• 2015-10-18 Version 0.02: Conformance
1. Reduced minified script size by 1k
10. Remapped arrows in text from ==> and <==
12. Added support for acute __\` corners in diagrams