italic
*italic*bold
**bold**Italic and bold elements can interpolate
***bold and italic*bold**code suject to the same rule as in markdown, no escape chars
`code`
``to include "`", use more backticks as delimiter``
`` ` space before and after to disambig backtick number ``math, inside which \\ and \$ are treated as atomic elements, no escape chars
$math$
$\\\$$ <- the content is parsed to latex processer as '\\\$'
$\\$$ <- NOTE this is a math elem with a pending dollarLink:
url in lexical parens: [a](example.com/use/\\/for/backslash/and/\)/for/right/paren)
url in recursive braces: [a]{example.com/allow/{nested{braces}}/and/(parens)/in/url}
no need to escape backslashes in braces: [a]{file:\\\C:\windows}
link to anchor: [a](#anchor)Footnotes:
[.](this is shown in footnote and replaced by a number)
[.*](this is shown in footnote and replaced by the acronym: *)Using already defined footnote ("one more dot to use"):
[:1]
[:link by acronym]Except math and code, inline elements can be nested.
By default, text starting with http://, https:// or mailto:// will be auto-linked, you can change supported protocols or disable all with compile options.
NOTE: Not very different from markdown here, just less, math and footnotes added. Images are too complex for a simple syntax, it is made into a macro.
h1 title
h2#anchor-name titleNOTE: Anchors are disabled in sandbox mode.
- is the bullet for unordered list
- an entry
- another entry+ is the bullet for ordered list
+ entry 1
+ entry 2Just one > is enough for a quote containing many lines (NOTE: use the similar rule as code block and allow quoter name?)
> You
can
input
new line
on twitter
now\h3
\\
\$
\*
\[
\%
\@
\#
...All HTML4 entities are supported
&
ॎ
?The following macros explains themselves:
\del{deleted}
\underline{underline}
\sub{subscript}
\sup{supscript}
\img{hello/a.png alt="an image" href="a.b.c"}Unlike in Mardown, all html tags in Markascend are escaped. If you write
<div></div>You get HTML like this
<div></div>To put HTML in, you can use the \html macro
\html{<hr>}Slim is a template engine which makes html much cleaner:
\slim{a href="/" Home}Note that with \slim, you can embed a bunch of other template engines, or write ruby logic, or do all kinds of evil things:
\slim
- 3.times do
markdown:
# h1 hello world
sass:
h1
color: red
coffee:
alert "hello world"To build a table from a CSV
\csv
name,type
"Ahri",Mage
"Miss Fortune",DPSA table from CSV, without header
\headless_csv
"Ahri",Mage
"Miss Fortune",DPSFor block-styled math
\latex
\begin{align} \\
& \rm{MathJax}\ \LaTeX \ \rm{Example} \\ \\
\end{align}\options is a special macro. The content YAML is not processed by Markascend, but retrievable with API. This is designed for blogger generators: you can put metadata inside the document.
\options
tags: [markascend readme]To change default code syntax highliter (See below for details]:
\hi(rb)
\hi(none)Macro name is case sensitive, starts with a word-character but not digit, and contains no symbols or punctuations. The rule expressed in (Onigmo) regexp is (?!\d)\w+. For example, 你2 is valid name, but 2你 is invalid.
Macros can be of inline form (\macro{content}) or block form (\macro and the indented block in following lines is the content of the macro).
Inline macros can use some different delimiters for convinience, allowed ones are: \macro(content) and \macro{content}.
In the form \macro(content), the content is parsed by lexical rule. The parser handles and only handles 2 escape chars: \\ and \), very much like single quoted string in Ruby.
Example: \macro(\ and \\ are both single-backslash. nest: (\))
In the form \macro{content}, you don't escape chars in the content, and can put in recursively nested braces. When you need to put an unmatched { or } in the content, use the previous form.
Example: \macro{\\ is two backslashes. nest: {}}
Design NOTE: There are actual very few symbols left for us... for example [], $$, | may confuse with link or math or code elements. Symbols like ", ', (), <> are not good either, because they are common when composing an article.
User NOTE:
(content) and {content} are the same as in links.You need to install graphviz first.
\dot
digraph G{
main -> parse;
}This is the transient part but provides some convienience. The list will change if some of them dies before Markascend.
To generate a twitter or weibo link
\twitter(@night_song)
\twitter(#HotS)
\weibo(@yavaeye)To generate a wiki link (though wiki is an organization, not a company...)
\wiki{ruby(programing_language)}Embed gist
\gist(12321)Embed video (currently should recognize youtube, vimeo and niconico links, the size is a problem)
\video(500x400 http://www.youtube.com/watch?v=TGPvtlnwH6E)
\video(500x400 http://www.youtube.com/watch?v=TGPvtlnwH6E)
\video(500x400 http://www.youtube.com/watch?v=TGPvtlnwH6E)Inline code can also have syntax hiliter
\hi(rb)`str.size` in ruby is equivalent to \hi(objc)`str.length` in objc
|
this part is also hilited in objc
\hi(none)`\hi(none)` removes hilite state in document
|
this part also has no syntax hiliteTo specify syntax in block form (this won't change default syntax):
|rb
puts 'hello world'Lists and quotes are parsed as recursive block elements.
If the inside contains macros, need to indent more for the content of the macro:
> Though the \music macro..
1232. 1232. 1232.
is not defined.Another nesting example:
- an entry
contains an ordered list
+ entry \latex
\mathbb{one}
+ entry 2
- another entry