multimarkdown user’s guide
41
The HTML specification
is maintained by the W3C.
becomes:
The <abbr title="Hyper Text Markup Language">HTML</abbr> specification
is maintained by the <abbr title="World Wide Web Consortium">W3C</abbr>.
Here’s an example using HTML and World Wide Web Consortium
(W3C). The exact behavior will depend on which format you are
viewing this document in. Especially if we use HTML and W3C
again. (Remember that HTML has probably already been used if
you’re viewing a longer version of this document.)
As in PHP Markdown Extra, abbreviations are case-sensitive and
will work on multiple word abbreviations. In this case, MultiMark-
down is tolerant of different variations of whitespace between words.
Operation Tigra Genesis is going well.
*
[Tigra Genesis]:
An abbreviation with an empty definition results in an omitted
title
attribute.
There are a few limitations:
• The full name of the abbreviation is plain text only – no Multi-
Markdown markup will be processed.
• Abbreviations don’t do anything when exporting to ODF – there’s
not an equivalent structure there – it would have to be hand
coded. I may or may not get around to this, but pull requests
welcome. ;)
• When exporting to LaTeX, the
acronym
package is used; this means
that the first usage will result in
full text (short)
,and subse-
quent uses will result in
short
.
Fenced Code Blocks
In addition to the regular indented code block that Markdown uses,
you can use “fenced” code blocks in MultiMarkdown. These code
blocks do not have to be indented, and can also be configured to be
compatible with a third party syntax highlighter. These code blocks
should begin with 3 to 5 backticks, an optional language specifier (if
Convert pdf to word and edit text - application SDK tool:C# PDF Convert to Text SDK: Convert PDF to txt files in C#.net, ASP.NET MVC, WinForms, WPF application
C# PDF to Text (TXT) Converting Library to Convert PDF to Text
www.rasteredge.com
Convert pdf to word and edit text - application SDK tool:VB.NET PDF Convert to Text SDK: Convert PDF to txt files in vb.net, ASP.NET MVC, WinForms, WPF application
VB.NET Guide and Sample Codes to Convert PDF to Text in .NET Project
www.rasteredge.com
42 fletcher t. penney
using a syntax highlighter), and should end with the same number of
backticks you started with:
# Demonstrate Syntax Highlighting i f you link to highlight . js #
# http : / / softwaremaniacs . org / s oft / highlight / en /
print "Hello ,
world!\n" ;
$a = 0;
while ($a < 10) {
print "$a ...\ n" ;
$a++;
}
Idon’t recommend any specific syntax highlighter, but have used
the following metadata to set things up. It may or may not work for
you:
html header:
<link rel="stylesheet" href="http://yandex.st/highlightjs/7.3/styles/default.min.css">
<script src="http://yandex.st/highlightjs/7.3/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
Fenced code blocks are particularly useful when including another
file (File Transclusion (section )), and you want to show the source of
the file, not what the file looks like when processed by MultiMark-
down.
Math
MultiMarkdown 2.0 used ASCIIMathML
57
to typeset mathematical
57http://www1.chapman.edu/
jipsen/mathml/asciimath.html
equations. There were benefits to using ASCIIMathML, but also some
disadvantages.
When rewriting for MultiMarkdown 3.0, there was no straightfor-
ward way to implement ASCIIMathML which lead me to look for
alternatives. I settled on using MathJax
58
.The advantage here is that
58http://www.mathjax.org/
the same syntax is supported by MathJax in browsers, and in LaTeX.
This does mean that math will need to be entered into MultiMark-
down documents using the LaTeX syntax, rather than ASCIIMathML.
To enable MathJax support in web pages, you have to include a
link to an active MathJax installation — setting this up is beyond the
scope of this document, but it’s not too hard.
Here’s an example of the metadata setup, and some math:
latex input:
mmd-article-header
Title:
MultiMarkdown Math Example
latex input:
mmd-article-begin-doc
latex footer:
mmd-memoir-footer
application SDK tool:VB.NET PDF Convert to Word SDK: Convert PDF to Word library in vb.
VB.NET Tutorial for How to Convert PDF to Word (.docx) Document in VB.NET. using RasterEdge.XDoc.PDF; Convert PDF to Word Document in VB.NET Demo Code.
www.rasteredge.com
application SDK tool:C# PDF Convert to Word SDK: Convert PDF to Word library in C#.net
third-party software, you can hardly edit PDF document Under this situation, you need to convert PDF document to some easily editable files like Word document
www.rasteredge.com
multimarkdown user’s guide
43
HTML header:
<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML
_
HTMLorMML">
</script>
An example of math within a paragraph --- \\({e}^{i\pi }+1=0\\)
--- easy enough.
And an equation on it’s own:
\\[ {x}
_
{1,2}=\frac{-b\pm \sqrt{{b}^{2}-4ac}}{2a} \\]
That’s it.
Here’s what it looks like in action (if you’re viewing this document
in a supported format):
An example of math within a paragraph — e
ip
+1 =0—easyenough.
And an equation on it’s own:
x
1,2
=
b
p
b4ac
2a
That’s it.
In addition to the
\\[ \\]
and
\\( \\)
syntax, you can use LaTeX
style “dollar sign” delimiters:
An example of math within a paragraph --- ${e}^{i\pi }+1=0$
--- easy enough.
And an equation on it’s own:
$${x}
_
{1,2}=\frac{-b\pm \sqrt{{b}^{2}-4ac}}{2a}$$
That’s it.
In order to be correctly parsed as math, there must not be any
space between the
$
and the actual math on the inside of the delim-
iter, and there must be space on the outside.
Superscripts and Subscripts
You can easily include superscripts and subscripts in MultiMark-
down as well:
application SDK tool:C# Convert: PDF to Word: How to Convert Adobe PDF to Microsoft
C# Convert: PDF to Word: How to Convert Adobe PDF to Microsoft Word (.docx) File. Empower C# users to easily convert PDF document to Word document.
www.rasteredge.com
application SDK tool:VB.NET Create PDF from Word Library to convert docx, doc to PDF in
XDoc.HTML5 Viewer. view, Annotate,Convert documents online using ASPX. XImage.Raster. XDoc.PDF. Scanning. Microsoft Office. XDoc.Word. XDoc.Excel. XDoc.PowerPoint
www.rasteredge.com
44 fletcher t. penney
This apartment has an area of 100m^2
One must consider the value of x~z
becomes
This apartment has an area of 100m
2
One must consider the value of x
z
The subscript must not contain any whitespace or punctuation.
More complicated exponents and subscripts can be delimited like
this:
y^(a+b)^
x~y,z~
y
(a+b)
x
y,z
Glossaries
MultiMarkdown has a feature that allows footnotes to be specified
as glossary terms. It doesn’t do much for XHTML documents, but
the XSLT file that converts the document into LaTeX is designed to
convert these special footnotes into glossary entries.
The glossary format for the footnotes is:
[^glossaryfootnote]: glossary: term (optional sort key)
The actual definition belongs on a new line, and can continue on
just as other footnotes.
The
term
is the item that belongs in the glossary. The
sort key
is
optional, and is used to specify that the term should appear some-
where else in the glossary (which is sorted in alphabetical order).
Unfortunately, it takes an extra step to generate the glossary when
creating a pdf from a latex file:
1. You need to have the
basic.gst
file installed, which comes with
the memoir class.
2. You need to run a special makeindex command to generate the
.glo
file:
makeindex -s ‘kpsewhich basic.gst‘ -o "filename.gls"
"filename.glo"
3. Then you run the usual pdflatex command again a few times.
application SDK tool:C# Create PDF from Word Library to convert docx, doc to PDF in C#.
A convenient C#.NET control able to turn all Word text and image content into high quality PDF without losing formatting. Convert multiple pages Word to
www.rasteredge.com
application SDK tool:C# PDF Text Extract Library: extract text content from PDF file in
source PDF document file for word processing, presentation extract text content from source PDF document file obtain text information and edit PDF text content
www.rasteredge.com
multimarkdown user’s guide
45
Alternatively, you can use the code below to create an engine file
for TeXShop (it belongs in
/Library/TeXShop/Engines
). You can
name it something like
MemoirGlossary.engine
.Then, when process-
ing a file that needs a glossary, you typeset your document once with
this engine, and then continue to process it normally with the usual
LaTeX engine. Your glossary should be compiled appropriately. If
you use TeXShop
59
,this is the way to go.
59http://www.uoregon.edu/koch/
texshop/
Note: Getting glossaries to work is a slightly more advanced LaTeX
feature, and might take some trial and error the first few times.
#!/bin/
set path = ($path /usr/local/teTeX/bin/powerpc-apple-darwin-current
/usr/local/bin) # This is actually a continuation of the line above
set basefile = ‘basename "$1" .tex‘
makeindex -s ‘kpsewhich basic.gst‘ -o "${basefile}.gls" "${basefile}.glo"
CriticMarkup
What Is CriticMarkup?
CriticMarkup is a way for authors and editors to track changes to doc-
uments in plain text. As with Markdown, small groups of distinctive
characters allow you to highlight insertions, deletions, substitutions
and comments, all without the overhead of heavy, proprietary office
suites. http://criticmarkup.com/
CriticMarkup is integrated with MultiMarkdown itself, as well
as MultiMarkdown Composer
60
. I encourage you to check out the
60http://multimarkdown.com/
web site to learn more as it can be a very useful tool. There is also a
great video showing CriticMarkup in use while editing a document
in MultiMarkdown Composer.
The CriticMarkup Syntax
The CriticMarkup syntax is fairly straightforward. The key thing to
remember is that CriticMarkup is processed before any other Multi-
Markdown is handled. It’s almost like a separate layer on top of the
MultiMarkdown syntax.
When editing in MultiMarkdown Composer, you can have Critic-
Markup syntax flagged in the both the editor pane and the preview
window. This will allow you to see changes in the HTML preview.
application SDK tool:C# PDF Convert to HTML SDK: Convert PDF to html files in C#.net
easy for C# developers to convert and transform style that are included in target PDF document file original formatting and interrelation of text and graphical
www.rasteredge.com
application SDK tool:VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.
C#.NET convert csv to PDF, C#.NET convert PDF to svg, C#.NET convert PDF to text, C#.NET convert PDF to images VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET
www.rasteredge.com
46 fletcher t. penney
When using CriticMarkup with MultiMarkdown itself, you have
four choices:
• Leave the CriticMarkup syntax in place (
multimarkdown foo.txt
)
• Accept all changes, giving you the “new” document (
multimarkdown
-a foo.txt
)
• Reject all changes, giving you the “original” document (
multimarkdown
-r foo.txt
)
• Attempt to show the changes as highlights. This only works in
HTML, and to use it you ask for the new and original document at
the same time (
multimarkdown -a -r foo.txt
)
CriticMarkup comments and highlighting are ignored when pro-
cessing.
Deletions from the original text:
This is {--is --}a test.
Additions:
This {++is ++}a test.
Substitutions:
This {~~isn’t~>is~~} a test.
Highlighting:
This is a {==test==}.
Comments:
This is a test{>>What is it a test of?<<}.
My philosophy on CriticMarkup
Iview CriticMarkup as two things:
1. A syntax for documenting editing notes and changes, and for
collaborating amongst coauthors.
2. A means to display those notes/changes in the HTML output.
multimarkdown user’s guide
47
Ibelieve that #1 is a really great idea, and well implemented. #2 is
not so well implemented, largely due to the “orthogonal” nature of
CriticMarkup and the underlying Markdown syntax.
CM is designed as a separate layer on top of Markdown/MultiMarkdown.
This means that a Markdown span could, for example, start in the
middle of a CriticMarkup structure, but end outside of it. This means
that an algorithm to properly convert a CM/Markdown document to
HTML would be quite complex, with a huge number of edge cases to
consider. I’ve tried a few (fairly creative, in my opinion) approaches,
but they didn’t work. Perhaps someone else will come up with a
better solution, or will be so interested that they put the work in to
create the complex algorithm. I have no current plans to do so.
Additionally, there is a philosophical distinction between docu-
menting editing notes, and using those notes to produce a “finished”
document (e.g. HTML or PDF) that keeps those editing notes intact
(e.g. strikethroughs, highlighting, etc.) I believe that CM is incredibly
useful for the editing process, but am less convinced for the output
process (I know many others disagree with me, and that’s ok. And
to be clear, I think that what Gabe and Erik have done with Critic-
Markup is fantastic!)
There are other CriticMarkup tools besides MultiMarkdown and
MultiMarkdown Composer
61
,and you are more than welcome to use
61http://multimarkdown.com/
them.
For now, the official MultiMarkdown support for CriticMarkup
consists of:
1. CriticMarkup syntax is “understood” by the MultiMarkdown
parser, and by MultiMarkdown Composer syntax highlighting.
2. When converting from MultiMarkdown text to an output format,
you can ignore CM formatting (probably not what you want to
do), accept all changes, or reject all changes (as above). These are
the preferred choices.
3. The secondary to choice, when exporting to HTML, is to attempt
to show the changes in the HTML output. Because the syntaxes
are orthogonal, this will not always work properly, and will not
always give valid HTML output.
Raw HTML
You can include raw (X)HTML within your document. Exactly what
happens with these portions depends on the output format. You can
also use the
markdown
attribute to indicate that MultiMarkdown pro-
cessing should be applied within the block level HTML tag. This is
48 fletcher t. penney
in addition to the
--process-html
command line option that causes
MultiMarkdown processing to occur within all block level HTML
tags.
For example:
<div>This is
*
not
*
MultiMarkdown</div>
<div markdown=1>This
*
is
*
MultiMarkdown</div>
will produce the following without
--process-html
:
<div>This is
*
not
*
MultiMarkdown</div>
<div>This <em>is</em> MultiMarkdown</div>
and with
--process-html
:
<div>This is <em>not</em> MultiMarkdown</div>
<div>This <em>is</em> MultiMarkdown</div>
However, the results may be different than anticipated when out-
putting to LaTeX or other formats. Normally, block level HTML will
be ignored when outputting to LaTeX or ODF. The example above
would produce the following, leaving out the first<
div
>entirely:
This \emph{is} MultiMarkdown
And this with
--process-html
:
This is \emph{not} MultiMarkdown
This \emph{is} MultiMarkdown
You will also notice that the line breaks are different when out-
putting to LaTeX or ODF, and this can cause the contents of two
<
div
>tagstobeplacedintoasingleparagraph.
Raw LaTeX/OpenDocument/etc.
You can use HTML comments to include additional text that will
be included in the exported file without being changed. This can
be used for any export format, which means that each document
can only be configured for one export format at a time. In other
multimarkdown user’s guide
49
words, it is highly unlikely that valid raw LaTeX will also be valid
OpenDocument source code.
This will be processed by
*
MultiMarkdown
*
.
<!-- This will not be processed by
*
MultiMarkdown -->
File Transclusion
File transclusion is the ability to tell MultiMarkdown to insert the
contents of another file inside the current file being processed. For
example:
This is some text.
{{some
_
other
_
file.txt}}
Another paragraph
If a file named
some
_
other
_
file.txt
exists, its contents will be
inserted inside of this document before being processed by Multi-
Markdown. This means that the contents of the file can also contain
MultiMarkdown formatted text.
If you want to display the contents of the file without processing it,
you can include it in a code block (you may need to remove trailing
newlines at the end of the document to be included):
This is some text
‘‘‘
{{relative/path/to/some
_
other
_
file.txt}}
‘‘‘
Another paragraph
Transclusion is recursive, so the file being inserted will be scanned
to see if it references any other files.
Metadata in the file being inserted will be ignored. This means
that the file can contain certain metadata when viewed alone that will
not be included when the file is transcluded by another file.
You can use the
[Transclude Base]
metadata to specify where
MultiMarkdown should look for the files to be included. All files
must be in this folder. If this folder is not specified, then MultiMark-
50 fletcher t. penney
down will look in the same folder as the parent file.
Note: Thanks to David Richards for his ideas in developing sup-
port for this feature.
Wildcard Extensions
Sometimes you may wish to transclude alternate versions of a file
depending on your output format. Simply use the extension “.*”
to have MMD choose the proper version of the file (e.g.
foo.tex
,
foo.fodt
,
foo.html
,etc.)
Insert a different version of a file here based on export format:
{{foo.
*
}}
Transclusion Preprocessing
If you want to perform transclusion, without converting to another
format, you can use
mmd
as the output format:
multimarkdown -t mmd foo.txt
This will only perform “basic” transclusion –it does not support
wildcard extensions, since the final output format is not known.
Escaped newlines
Thanks to a contribution from Nicolas
62
,MultiMarkdown has an
62https://github.com/njmsdk
additional syntax to indicate a line break. The usual approach for
Markdown is “space-space-newline” — two spaces at the end of the
line. For some users, this causes problems:
• the trailing spaces are typically invisible when glancing at the
source, making it easy to overlook them
• some users’ text editors modify trailing space (IMHO, the proper
fix for this is a new text editor...)
Nicolas submitted a patch that enables a new option that inter-
prets “\” before a newline as a marker that a line break should be
used:
This is a line.\
This is a new line.
Documents you may be interested
Documents you may be interested