From fe42c175ebf105b32f342a1609417ce632f317e1 Mon Sep 17 00:00:00 2001 From: John MacFarlane <jgm@berkeley.edu> Date: Sat, 4 Nov 2017 11:32:47 -0700 Subject: [PATCH] Revert "Better indentation under headers in org mode output." This reverts commit 1a81751cef330d875cc34f11cde4a0d478969db7. --- src/Text/Pandoc/Writers/Org.hs | 40 +- test/writer.org | 828 +++++++++++++++++---------------- 2 files changed, 430 insertions(+), 438 deletions(-) diff --git a/src/Text/Pandoc/Writers/Org.hs b/src/Text/Pandoc/Writers/Org.hs index 47f63f591..f73822b86 100644 --- a/src/Text/Pandoc/Writers/Org.hs +++ b/src/Text/Pandoc/Writers/Org.hs @@ -77,7 +77,7 @@ pandocToOrg (Pandoc meta blocks) = do (fmap render' . blockListToOrg) (fmap render' . inlineListToOrg) meta - body <- vcat <$> mapM (elementToOrg 0) (hierarchicalize blocks) + body <- blockListToOrg blocks notes <- gets (reverse . stNotes) >>= notesToOrg hasMath <- gets stHasMath let main = render colwidth . foldl ($+$) empty $ [body, notes] @@ -96,9 +96,9 @@ notesToOrg notes = -- | Return Org representation of a note. noteToOrg :: PandocMonad m => Int -> [Block] -> Org m Doc noteToOrg num note = do - contents <- vcat <$> mapM (elementToOrg 0) (hierarchicalize note) + contents <- blockListToOrg note let marker = "[fn:" ++ show num ++ "] " - return $ hang (length marker) (text marker) $ contents + return $ hang (length marker) (text marker) contents -- | Escape special characters for Org. escapeString :: String -> String @@ -113,18 +113,6 @@ isRawFormat :: Format -> Bool isRawFormat f = f == Format "latex" || f == Format "tex" || f == Format "org" -elementToOrg :: PandocMonad m - => Int -> Element -> Org m Doc -elementToOrg nestlevel (Blk block) = do - contents <- blockToOrg block - if isEmpty contents - then return empty - else return $ nest nestlevel contents $$ blankline -elementToOrg _nestlevel (Sec level _num attr title' elements) = do - hdr <- blockToOrg (Header level attr title') - body <- vcat <$> mapM (elementToOrg (level + 1)) elements - return $ hdr $$ body - -- | Convert Pandoc block element to Org. blockToOrg :: PandocMonad m => Block -- ^ Block element @@ -152,14 +140,14 @@ blockToOrg (Div (ident, classes, kv) bs) = do (blockType:classes'') -> blankline $$ attrHtml (ident, classes'' <> classes', kv) $$ "#+BEGIN_" <> text blockType $$ contents $$ - "#+END_" <> text blockType + "#+END_" <> text blockType $$ blankline _ -> -- fallback with id: add id as an anchor if present, discard classes and -- key-value pairs, unwrap the content. let contents' = if not (null ident) then "<<" <> text ident <> ">>" $$ contents else contents - in blankline $$ contents' + in blankline $$ contents' $$ blankline blockToOrg (Plain inlines) = inlineListToOrg inlines -- title beginning with fig: indicates that the image is a figure blockToOrg (Para [Image attr txt (src,'f':'i':'g':':':tit)]) = do @@ -167,7 +155,7 @@ blockToOrg (Para [Image attr txt (src,'f':'i':'g':':':tit)]) = do then return empty else ("#+CAPTION: " <>) `fmap` inlineListToOrg txt img <- inlineToOrg (Image attr txt (src,tit)) - return $ capt $$ img + return $ capt $$ img $$ blankline blockToOrg (Para inlines) = do contents <- inlineListToOrg inlines return $ contents <> blankline @@ -184,13 +172,13 @@ blockToOrg (LineBlock lns) = do nest 2 contents $$ "#+END_VERSE" <> blankline blockToOrg (RawBlock "html" str) = return $ blankline $$ "#+BEGIN_HTML" $$ - nest 2 (text str) $$ "#+END_HTML" + nest 2 (text str) $$ "#+END_HTML" $$ blankline blockToOrg b@(RawBlock f str) | isRawFormat f = return $ text str | otherwise = do report $ BlockNotRendered b return empty -blockToOrg HorizontalRule = return $ blankline $$ "--------------" +blockToOrg HorizontalRule = return $ blankline $$ "--------------" $$ blankline blockToOrg (Header level attr inlines) = do contents <- inlineListToOrg inlines let headerStr = text $ if level > 999 then " " else replicate level '*' @@ -205,11 +193,11 @@ blockToOrg (CodeBlock (_,classes,_) str) = do let (beg, end) = case at of [] -> ("#+BEGIN_EXAMPLE", "#+END_EXAMPLE") (x:_) -> ("#+BEGIN_SRC " ++ x, "#+END_SRC") - return $ text beg $$ nest tabstop (text str) $$ text end + return $ text beg $$ nest tabstop (text str) $$ text end $$ blankline blockToOrg (BlockQuote blocks) = do contents <- blockListToOrg blocks return $ blankline $$ "#+BEGIN_QUOTE" $$ - nest 2 contents $$ "#+END_QUOTE" + nest 2 contents $$ "#+END_QUOTE" $$ blankline blockToOrg (Table caption' _ _ headers rows) = do caption'' <- inlineListToOrg caption' let caption = if null caption' @@ -240,11 +228,11 @@ blockToOrg (Table caption' _ _ headers rows) = do let head'' = if all null headers then empty else head' $$ border '-' - return $ head'' $$ body $$ caption + return $ head'' $$ body $$ caption $$ blankline blockToOrg (BulletList items) = do contents <- mapM bulletListItemToOrg items -- ensure that sublists have preceding blank line - return $ blankline $+$ vcat contents + return $ blankline $+$ vcat contents $$ blankline blockToOrg (OrderedList (start, _, delim) items) = do let delim' = case delim of TwoParens -> OneParen @@ -256,10 +244,10 @@ blockToOrg (OrderedList (start, _, delim) items) = do in m ++ replicate s ' ') markers contents <- zipWithM orderedListItemToOrg markers' items -- ensure that sublists have preceding blank line - return $ blankline $$ vcat contents + return $ blankline $$ vcat contents $$ blankline blockToOrg (DefinitionList items) = do contents <- mapM definitionListItemToOrg items - return $ vcat contents + return $ vcat contents $$ blankline -- | Convert bullet list item (list of blocks) to Org. bulletListItemToOrg :: PandocMonad m => [Block] -> Org m Doc diff --git a/test/writer.org b/test/writer.org index d47d3533c..1ae0ca8f3 100644 --- a/test/writer.org +++ b/test/writer.org @@ -48,101 +48,103 @@ markdown test suite. :CUSTOM_ID: level-3 :END: - with no blank line +with no blank line ** Level 2 :PROPERTIES: :CUSTOM_ID: level-2 :END: - with no blank line +with no blank line - -------------- +-------------- * Paragraphs :PROPERTIES: :CUSTOM_ID: paragraphs :END: - Here's a regular paragraph. +Here's a regular paragraph. - In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. - Because a hard-wrapped line in the middle of a paragraph looked like a list - item. +In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. +Because a hard-wrapped line in the middle of a paragraph looked like a list +item. - Here's one with a bullet. * criminey. +Here's one with a bullet. * criminey. - There should be a hard line break\\ - here. +There should be a hard line break\\ +here. - -------------- +-------------- * Block Quotes :PROPERTIES: :CUSTOM_ID: block-quotes :END: - E-mail style: +E-mail style: + +#+BEGIN_QUOTE + This is a block quote. It is pretty short. +#+END_QUOTE + +#+BEGIN_QUOTE + Code in a block quote: + + #+BEGIN_EXAMPLE + sub status { + print "working"; + } + #+END_EXAMPLE + + A list: + + 1. item one + 2. item two + + Nested block quotes: #+BEGIN_QUOTE - This is a block quote. It is pretty short. + nested #+END_QUOTE #+BEGIN_QUOTE - Code in a block quote: - - #+BEGIN_EXAMPLE - sub status { - print "working"; - } - #+END_EXAMPLE - A list: - - 1. item one - 2. item two - Nested block quotes: - - #+BEGIN_QUOTE - nested - #+END_QUOTE - - #+BEGIN_QUOTE - nested - #+END_QUOTE + nested #+END_QUOTE +#+END_QUOTE - This should not be a block quote: 2 > 1. +This should not be a block quote: 2 > 1. - And a following paragraph. +And a following paragraph. - -------------- +-------------- * Code Blocks :PROPERTIES: :CUSTOM_ID: code-blocks :END: - Code: +Code: - #+BEGIN_EXAMPLE - ---- (should be four hyphens) +#+BEGIN_EXAMPLE + ---- (should be four hyphens) - sub status { - print "working"; - } + sub status { + print "working"; + } - this code block is indented by one tab - #+END_EXAMPLE + this code block is indented by one tab +#+END_EXAMPLE - And: +And: - #+BEGIN_EXAMPLE - this code block is indented by two tabs +#+BEGIN_EXAMPLE + this code block is indented by two tabs - These should not be escaped: \$ \\ \> \[ \{ - #+END_EXAMPLE + These should not be escaped: \$ \\ \> \[ \{ +#+END_EXAMPLE - -------------- +-------------- * Lists :PROPERTIES: @@ -154,549 +156,551 @@ markdown test suite. :CUSTOM_ID: unordered :END: - Asterisks tight: +Asterisks tight: - - asterisk 1 - - asterisk 2 - - asterisk 3 +- asterisk 1 +- asterisk 2 +- asterisk 3 - Asterisks loose: +Asterisks loose: - - asterisk 1 +- asterisk 1 - - asterisk 2 +- asterisk 2 - - asterisk 3 +- asterisk 3 - Pluses tight: +Pluses tight: - - Plus 1 - - Plus 2 - - Plus 3 +- Plus 1 +- Plus 2 +- Plus 3 - Pluses loose: +Pluses loose: - - Plus 1 +- Plus 1 - - Plus 2 +- Plus 2 - - Plus 3 +- Plus 3 - Minuses tight: +Minuses tight: - - Minus 1 - - Minus 2 - - Minus 3 +- Minus 1 +- Minus 2 +- Minus 3 - Minuses loose: +Minuses loose: - - Minus 1 +- Minus 1 - - Minus 2 +- Minus 2 - - Minus 3 +- Minus 3 ** Ordered :PROPERTIES: :CUSTOM_ID: ordered :END: - Tight: +Tight: - 1. First - 2. Second - 3. Third +1. First +2. Second +3. Third - and: +and: - 1. One - 2. Two - 3. Three +1. One +2. Two +3. Three - Loose using tabs: +Loose using tabs: - 1. First +1. First - 2. Second +2. Second - 3. Third +3. Third - and using spaces: +and using spaces: - 1. One +1. One - 2. Two +2. Two - 3. Three +3. Three - Multiple paragraphs: +Multiple paragraphs: - 1. Item 1, graf one. +1. Item 1, graf one. - Item 1. graf two. The quick brown fox jumped over the lazy dog's back. + Item 1. graf two. The quick brown fox jumped over the lazy dog's back. - 2. Item 2. +2. Item 2. - 3. Item 3. +3. Item 3. ** Nested :PROPERTIES: :CUSTOM_ID: nested :END: - - Tab +- Tab - - Tab + - Tab - - Tab + - Tab - Here's another: +Here's another: - 1. First - 2. Second: +1. First +2. Second: - - Fee - - Fie - - Foe - 3. Third + - Fee + - Fie + - Foe - Same thing but with paragraphs: +3. Third - 1. First +Same thing but with paragraphs: - 2. Second: +1. First - - Fee - - Fie - - Foe - 3. Third +2. Second: + + - Fee + - Fie + - Foe + +3. Third ** Tabs and spaces :PROPERTIES: :CUSTOM_ID: tabs-and-spaces :END: - - this is a list item indented with tabs +- this is a list item indented with tabs - - this is a list item indented with spaces +- this is a list item indented with spaces - - this is an example list item indented with tabs + - this is an example list item indented with tabs - - this is an example list item indented with spaces + - this is an example list item indented with spaces ** Fancy list markers :PROPERTIES: :CUSTOM_ID: fancy-list-markers :END: - 2) begins with 2 - 3) and now 3 +2) begins with 2 +3) and now 3 - with a continuation + with a continuation - 4. sublist with roman numerals, starting with 4 - 5. more items + 4. sublist with roman numerals, starting with 4 + 5. more items - 1) a subsublist - 2) a subsublist + 1) a subsublist + 2) a subsublist - Nesting: +Nesting: - 1. Upper Alpha +1. Upper Alpha - 1. Upper Roman. + 1. Upper Roman. - 6) Decimal start with 6 + 6) Decimal start with 6 - 3) Lower alpha with paren + 3) Lower alpha with paren - Autonumbering: +Autonumbering: - 1. Autonumber. - 2. More. +1. Autonumber. +2. More. - 1. Nested. + 1. Nested. - Should not be a list item: +Should not be a list item: - M.A. 2007 +M.A. 2007 - B. Williams +B. Williams - -------------- +-------------- * Definition Lists :PROPERTIES: :CUSTOM_ID: definition-lists :END: - Tight using spaces: +Tight using spaces: - - apple :: red fruit - - orange :: orange fruit - - banana :: yellow fruit +- apple :: red fruit +- orange :: orange fruit +- banana :: yellow fruit - Tight using tabs: +Tight using tabs: - - apple :: red fruit - - orange :: orange fruit - - banana :: yellow fruit +- apple :: red fruit +- orange :: orange fruit +- banana :: yellow fruit - Loose: +Loose: - - apple :: red fruit +- apple :: red fruit - - orange :: orange fruit +- orange :: orange fruit - - banana :: yellow fruit +- banana :: yellow fruit - Multiple blocks with italics: +Multiple blocks with italics: - - /apple/ :: red fruit +- /apple/ :: red fruit - contains seeds, crisp, pleasant to taste + contains seeds, crisp, pleasant to taste - - /orange/ :: orange fruit +- /orange/ :: orange fruit - #+BEGIN_EXAMPLE - { orange code block } - #+END_EXAMPLE + #+BEGIN_EXAMPLE + { orange code block } + #+END_EXAMPLE - #+BEGIN_QUOTE - orange block quote - #+END_QUOTE + #+BEGIN_QUOTE + orange block quote + #+END_QUOTE - Multiple definitions, tight: +Multiple definitions, tight: - - apple :: red fruit - computer - - orange :: orange fruit - bank +- apple :: red fruit + computer +- orange :: orange fruit + bank - Multiple definitions, loose: +Multiple definitions, loose: - - apple :: red fruit +- apple :: red fruit - computer + computer - - orange :: orange fruit +- orange :: orange fruit - bank + bank - Blank line after term, indented marker, alternate markers: +Blank line after term, indented marker, alternate markers: - - apple :: red fruit +- apple :: red fruit - computer + computer - - orange :: orange fruit +- orange :: orange fruit - 1. sublist - 2. sublist + 1. sublist + 2. sublist * HTML Blocks :PROPERTIES: :CUSTOM_ID: html-blocks :END: - Simple block on one line: +Simple block on one line: - foo +foo - And nested without indentation: +And nested without indentation: - foo +foo - bar +bar - Interpreted markdown in a table: +Interpreted markdown in a table: - #+BEGIN_HTML - <table> - #+END_HTML +#+BEGIN_HTML + <table> +#+END_HTML - #+BEGIN_HTML - <tr> - #+END_HTML +#+BEGIN_HTML + <tr> +#+END_HTML - #+BEGIN_HTML - <td> - #+END_HTML +#+BEGIN_HTML + <td> +#+END_HTML - This is /emphasized/ +This is /emphasized/ - #+BEGIN_HTML - </td> - #+END_HTML +#+BEGIN_HTML + </td> +#+END_HTML - #+BEGIN_HTML - <td> - #+END_HTML +#+BEGIN_HTML + <td> +#+END_HTML - And this is *strong* +And this is *strong* - #+BEGIN_HTML - </td> - #+END_HTML +#+BEGIN_HTML + </td> +#+END_HTML - #+BEGIN_HTML - </tr> - #+END_HTML +#+BEGIN_HTML + </tr> +#+END_HTML - #+BEGIN_HTML - </table> - #+END_HTML +#+BEGIN_HTML + </table> +#+END_HTML - #+BEGIN_HTML - <script type="text/javascript">document.write('This *should not* be interpreted as markdown');</script> - #+END_HTML +#+BEGIN_HTML + <script type="text/javascript">document.write('This *should not* be interpreted as markdown');</script> +#+END_HTML - Here's a simple block: +Here's a simple block: - foo +foo - This should be a code block, though: +This should be a code block, though: - #+BEGIN_EXAMPLE - <div> - foo - </div> - #+END_EXAMPLE +#+BEGIN_EXAMPLE + <div> + foo + </div> +#+END_EXAMPLE - As should this: +As should this: - #+BEGIN_EXAMPLE - <div>foo</div> - #+END_EXAMPLE +#+BEGIN_EXAMPLE + <div>foo</div> +#+END_EXAMPLE - Now, nested: +Now, nested: - foo +foo - This should just be an HTML comment: +This should just be an HTML comment: - #+BEGIN_HTML +#+BEGIN_HTML + <!-- Comment --> +#+END_HTML + +Multiline: + +#+BEGIN_HTML + <!-- + Blah + Blah + --> +#+END_HTML + +#+BEGIN_HTML + <!-- + This is another comment. + --> +#+END_HTML + +Code block: + +#+BEGIN_EXAMPLE <!-- Comment --> - #+END_HTML +#+END_EXAMPLE - Multiline: +Just plain comment, with trailing spaces on the line: - #+BEGIN_HTML - <!-- - Blah - Blah - --> - #+END_HTML +#+BEGIN_HTML + <!-- foo --> +#+END_HTML - #+BEGIN_HTML - <!-- - This is another comment. - --> - #+END_HTML +Code: - Code block: - - #+BEGIN_EXAMPLE - <!-- Comment --> - #+END_EXAMPLE - - Just plain comment, with trailing spaces on the line: - - #+BEGIN_HTML - <!-- foo --> - #+END_HTML - - Code: - - #+BEGIN_EXAMPLE - <hr /> - #+END_EXAMPLE - - Hr's: - - #+BEGIN_HTML - <hr> - #+END_HTML - - #+BEGIN_HTML +#+BEGIN_EXAMPLE <hr /> - #+END_HTML +#+END_EXAMPLE - #+BEGIN_HTML - <hr /> - #+END_HTML +Hr's: - #+BEGIN_HTML - <hr> - #+END_HTML +#+BEGIN_HTML + <hr> +#+END_HTML - #+BEGIN_HTML - <hr /> - #+END_HTML +#+BEGIN_HTML + <hr /> +#+END_HTML - #+BEGIN_HTML - <hr /> - #+END_HTML +#+BEGIN_HTML + <hr /> +#+END_HTML - #+BEGIN_HTML - <hr class="foo" id="bar" /> - #+END_HTML +#+BEGIN_HTML + <hr> +#+END_HTML - #+BEGIN_HTML - <hr class="foo" id="bar" /> - #+END_HTML +#+BEGIN_HTML + <hr /> +#+END_HTML - #+BEGIN_HTML - <hr class="foo" id="bar"> - #+END_HTML +#+BEGIN_HTML + <hr /> +#+END_HTML - -------------- +#+BEGIN_HTML + <hr class="foo" id="bar" /> +#+END_HTML + +#+BEGIN_HTML + <hr class="foo" id="bar" /> +#+END_HTML + +#+BEGIN_HTML + <hr class="foo" id="bar"> +#+END_HTML + +-------------- * Inline Markup :PROPERTIES: :CUSTOM_ID: inline-markup :END: - This is /emphasized/, and so /is this/. +This is /emphasized/, and so /is this/. - This is *strong*, and so *is this*. +This is *strong*, and so *is this*. - An /[[/url][emphasized link]]/. +An /[[/url][emphasized link]]/. - */This is strong and em./* +*/This is strong and em./* - So is */this/* word. +So is */this/* word. - */This is strong and em./* +*/This is strong and em./* - So is */this/* word. +So is */this/* word. - This is code: =>=, =$=, =\=, =\$=, =<html>=. +This is code: =>=, =$=, =\=, =\$=, =<html>=. - +This is /strikeout/.+ ++This is /strikeout/.+ - Superscripts: a^{bc}d a^{/hello/} a^{hello there}. +Superscripts: a^{bc}d a^{/hello/} a^{hello there}. - Subscripts: H_{2}O, H_{23}O, H_{many of them}O. +Subscripts: H_{2}O, H_{23}O, H_{many of them}O. - These should not be superscripts or subscripts, because of the unescaped - spaces: a\^b c\^d, a~b c~d. +These should not be superscripts or subscripts, because of the unescaped +spaces: a\^b c\^d, a~b c~d. - -------------- +-------------- * Smart quotes, ellipses, dashes :PROPERTIES: :CUSTOM_ID: smart-quotes-ellipses-dashes :END: - "Hello," said the spider. "'Shelob' is my name." +"Hello," said the spider. "'Shelob' is my name." - 'A', 'B', and 'C' are letters. +'A', 'B', and 'C' are letters. - 'Oak,' 'elm,' and 'beech' are names of trees. So is 'pine.' +'Oak,' 'elm,' and 'beech' are names of trees. So is 'pine.' - 'He said, "I want to go."' Were you alive in the 70's? +'He said, "I want to go."' Were you alive in the 70's? - Here is some quoted '=code=' and a - "[[http://example.com/?foo=1&bar=2][quoted link]]". +Here is some quoted '=code=' and a "[[http://example.com/?foo=1&bar=2][quoted +link]]". - Some dashes: one---two --- three---four --- five. +Some dashes: one---two --- three---four --- five. - Dashes between numbers: 5--7, 255--66, 1987--1999. +Dashes between numbers: 5--7, 255--66, 1987--1999. - Ellipses...and...and.... +Ellipses...and...and.... - -------------- +-------------- * LaTeX :PROPERTIES: :CUSTOM_ID: latex :END: - - \cite[22-23]{smith.1899} - - $2+2=4$ - - $x \in y$ - - $\alpha \wedge \omega$ - - $223$ - - $p$-Tree - - Here's some display math: - $$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$$ - - Here's one that has a line break in it: $\alpha + \omega \times x^2$. +- \cite[22-23]{smith.1899} +- $2+2=4$ +- $x \in y$ +- $\alpha \wedge \omega$ +- $223$ +- $p$-Tree +- Here's some display math: + $$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$$ +- Here's one that has a line break in it: $\alpha + \omega \times x^2$. - These shouldn't be math: +These shouldn't be math: - - To get the famous equation, write =$e = mc^2$=. - - $22,000 is a /lot/ of money. So is $34,000. (It worked if "lot" is - emphasized.) - - Shoes ($20) and socks ($5). - - Escaped =$=: $73 /this should be emphasized/ 23$. +- To get the famous equation, write =$e = mc^2$=. +- $22,000 is a /lot/ of money. So is $34,000. (It worked if "lot" is + emphasized.) +- Shoes ($20) and socks ($5). +- Escaped =$=: $73 /this should be emphasized/ 23$. - Here's a LaTeX table: +Here's a LaTeX table: - \begin{tabular}{|l|l|}\hline - Animal & Number \\ \hline - Dog & 2 \\ - Cat & 1 \\ \hline - \end{tabular} +\begin{tabular}{|l|l|}\hline +Animal & Number \\ \hline +Dog & 2 \\ +Cat & 1 \\ \hline +\end{tabular} - -------------- +-------------- * Special Characters :PROPERTIES: :CUSTOM_ID: special-characters :END: - Here is some unicode: +Here is some unicode: - - I hat: Î - - o umlaut: ö - - section: § - - set membership: ∈ - - copyright: © +- I hat: Î +- o umlaut: ö +- section: § +- set membership: ∈ +- copyright: © - AT&T has an ampersand in their name. +AT&T has an ampersand in their name. - AT&T is another way to write it. +AT&T is another way to write it. - This & that. +This & that. - 4 < 5. +4 < 5. - 6 > 5. +6 > 5. - Backslash: \ +Backslash: \ - Backtick: ` +Backtick: ` - Asterisk: * +Asterisk: * - Underscore: \_ +Underscore: \_ - Left brace: { +Left brace: { - Right brace: } +Right brace: } - Left bracket: [ +Left bracket: [ - Right bracket: ] +Right bracket: ] - Left paren: ( +Left paren: ( - Right paren: ) +Right paren: ) - Greater-than: > +Greater-than: > - Hash: # +Hash: # - Period: . +Period: . - Bang: ! +Bang: ! - Plus: + +Plus: + - Minus: - +Minus: - - -------------- +-------------- * Links :PROPERTIES: @@ -708,120 +712,120 @@ markdown test suite. :CUSTOM_ID: explicit :END: - Just a [[/url/][URL]]. +Just a [[/url/][URL]]. - [[/url/][URL and title]]. +[[/url/][URL and title]]. - [[/url/][URL and title]]. +[[/url/][URL and title]]. - [[/url/][URL and title]]. +[[/url/][URL and title]]. - [[/url/][URL and title]] +[[/url/][URL and title]] - [[/url/][URL and title]] +[[/url/][URL and title]] - [[/url/with_underscore][with\_underscore]] +[[/url/with_underscore][with\_underscore]] - [[mailto:nobody@nowhere.net][Email link]] +[[mailto:nobody@nowhere.net][Email link]] - [[][Empty]]. +[[][Empty]]. ** Reference :PROPERTIES: :CUSTOM_ID: reference :END: - Foo [[/url/][bar]]. +Foo [[/url/][bar]]. - With [[/url/][embedded [brackets]]]. +With [[/url/][embedded [brackets]]]. - [[/url/][b]] by itself should be a link. +[[/url/][b]] by itself should be a link. - Indented [[/url][once]]. +Indented [[/url][once]]. - Indented [[/url][twice]]. +Indented [[/url][twice]]. - Indented [[/url][thrice]]. +Indented [[/url][thrice]]. - This should [not][] be a link. +This should [not][] be a link. - #+BEGIN_EXAMPLE - [not]: /url - #+END_EXAMPLE +#+BEGIN_EXAMPLE + [not]: /url +#+END_EXAMPLE - Foo [[/url/][bar]]. +Foo [[/url/][bar]]. - Foo [[/url/][biz]]. +Foo [[/url/][biz]]. ** With ampersands :PROPERTIES: :CUSTOM_ID: with-ampersands :END: - Here's a [[http://example.com/?foo=1&bar=2][link with an ampersand in the - URL]]. +Here's a [[http://example.com/?foo=1&bar=2][link with an ampersand in the +URL]]. - Here's a link with an amersand in the link text: [[http://att.com/][AT&T]]. +Here's a link with an amersand in the link text: [[http://att.com/][AT&T]]. - Here's an [[/script?foo=1&bar=2][inline link]]. +Here's an [[/script?foo=1&bar=2][inline link]]. - Here's an [[/script?foo=1&bar=2][inline link in pointy braces]]. +Here's an [[/script?foo=1&bar=2][inline link in pointy braces]]. ** Autolinks :PROPERTIES: :CUSTOM_ID: autolinks :END: - With an ampersand: [[http://example.com/?foo=1&bar=2]] +With an ampersand: [[http://example.com/?foo=1&bar=2]] - - In a list? - - [[http://example.com/]] - - It should. +- In a list? +- [[http://example.com/]] +- It should. - An e-mail address: [[mailto:nobody@nowhere.net][nobody@nowhere.net]] +An e-mail address: [[mailto:nobody@nowhere.net][nobody@nowhere.net]] - #+BEGIN_QUOTE - Blockquoted: [[http://example.com/]] - #+END_QUOTE +#+BEGIN_QUOTE + Blockquoted: [[http://example.com/]] +#+END_QUOTE - Auto-links should not occur here: =<http://example.com/>= +Auto-links should not occur here: =<http://example.com/>= - #+BEGIN_EXAMPLE - or here: <http://example.com/> - #+END_EXAMPLE +#+BEGIN_EXAMPLE + or here: <http://example.com/> +#+END_EXAMPLE - -------------- +-------------- * Images :PROPERTIES: :CUSTOM_ID: images :END: - From "Voyage dans la Lune" by Georges Melies (1902): +From "Voyage dans la Lune" by Georges Melies (1902): - #+CAPTION: lalune - [[file:lalune.jpg]] +#+CAPTION: lalune +[[file:lalune.jpg]] - Here is a movie [[file:movie.jpg]] icon. +Here is a movie [[file:movie.jpg]] icon. - -------------- +-------------- * Footnotes :PROPERTIES: :CUSTOM_ID: footnotes :END: - Here is a footnote reference,[fn:1] and another.[fn:2] This should /not/ be - a footnote reference, because it contains a space.[\^my note] Here is an - inline note.[fn:3] +Here is a footnote reference,[fn:1] and another.[fn:2] This should /not/ be a +footnote reference, because it contains a space.[\^my note] Here is an inline +note.[fn:3] - #+BEGIN_QUOTE - Notes can go in quotes.[fn:4] - #+END_QUOTE +#+BEGIN_QUOTE + Notes can go in quotes.[fn:4] +#+END_QUOTE - 1. And in list items.[fn:5] +1. And in list items.[fn:5] - This paragraph should not be part of the note, as it is not indented. +This paragraph should not be part of the note, as it is not indented. [fn:1] Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document.