git.iko.soy/typeable/pandoc
on master help sign in
Consistent underline for Readers (#2270)
7f8a3c6hftf
src/Text/Pandoc/Readers/Docx.hs+3−2
@@ -52,12 +52,13 @@ implemented, [-] means partially implemented):
52* Inlines
52* Inlines
53
53
54 - [X] Str
54 - [X] Str
55− - [X] Emph (italics and underline both read as Emph)
55+ - [X] Emph
56 - [X] Strong
56 - [X] Strong
57 - [X] Strikeout
57 - [X] Strikeout
58 - [X] Superscript
58 - [X] Superscript
59 - [X] Subscript
59 - [X] Subscript
60 - [X] SmallCaps
60 - [X] SmallCaps
61+ - [-] Underline (was previously converted to Emph)
61 - [ ] Quoted
62 - [ ] Quoted
62 - [ ] Cite
63 - [ ] Cite
63 - [X] Code (styled with `VerbatimChar`)
64 - [X] Code (styled with `VerbatimChar`)
@@ -287,7 +288,7 @@ runStyleToTransform rPr
287 | Just SubScrpt <- rVertAlign rPr =
288 | Just SubScrpt <- rVertAlign rPr =
288 subscript . (runStyleToTransform rPr {rVertAlign = Nothing})
289 subscript . (runStyleToTransform rPr {rVertAlign = Nothing})
289 | Just "single" <- rUnderline rPr =
290 | Just "single" <- rUnderline rPr =
290− emph . (runStyleToTransform rPr {rUnderline = Nothing})
291+ underlineSpan . (runStyleToTransform rPr {rUnderline = Nothing})
291 | otherwise = id
292 | otherwise = id
292
293
293runToInlines :: PandocMonad m => Run -> DocxContext m Inlines
294runToInlines :: PandocMonad m => Run -> DocxContext m Inlines
src/Text/Pandoc/Readers/HTML.hs+5−1
@@ -45,7 +45,7 @@ import Text.Pandoc.Definition
45import qualified Text.Pandoc.Builder as B
45import qualified Text.Pandoc.Builder as B
46import Text.Pandoc.Builder (Blocks, Inlines, trimInlines, HasMeta(..))
46import Text.Pandoc.Builder (Blocks, Inlines, trimInlines, HasMeta(..))
47import Text.Pandoc.Shared ( extractSpaces, addMetaField
47import Text.Pandoc.Shared ( extractSpaces, addMetaField
48− , escapeURI, safeRead, crFilter )
48+ , escapeURI, safeRead, crFilter, underlineSpan )
49import Text.Pandoc.Options (
49import Text.Pandoc.Options (
50 ReaderOptions(readerExtensions,readerStripComments), extensionEnabled,
50 ReaderOptions(readerExtensions,readerStripComments), extensionEnabled,
51 Extension (Ext_epub_html_exts,
51 Extension (Ext_epub_html_exts,
@@ -627,6 +627,7 @@ inline = choice
627 , pSuperscript
627 , pSuperscript
628 , pSubscript
628 , pSubscript
629 , pStrikeout
629 , pStrikeout
630+ , pUnderline
630 , pLineBreak
631 , pLineBreak
631 , pLink
632 , pLink
632 , pImage
633 , pImage
@@ -696,6 +697,9 @@ pStrikeout = do
696 contents <- mconcat <$> manyTill inline (pCloses "span")
697 contents <- mconcat <$> manyTill inline (pCloses "span")
697 return $ B.strikeout contents)
698 return $ B.strikeout contents)
698
699
700+pUnderline :: PandocMonad m => TagParser m Inlines
701+pUnderline = pInlinesInTags "u" underlineSpan <|> pInlinesInTags "ins" underlineSpan
702+
699pLineBreak :: PandocMonad m => TagParser m Inlines
703pLineBreak :: PandocMonad m => TagParser m Inlines
700pLineBreak = do
704pLineBreak = do
701 pSelfClosing (=="br") (const True)
705 pSelfClosing (=="br") (const True)
src/Text/Pandoc/Readers/Org/Inlines.hs+2−2
@@ -45,6 +45,7 @@ import Text.Pandoc.Class (PandocMonad)
45import Text.Pandoc.Definition
45import Text.Pandoc.Definition
46import Text.Pandoc.Options
46import Text.Pandoc.Options
47import Text.Pandoc.Readers.LaTeX (inlineCommand, rawLaTeXInline)
47import Text.Pandoc.Readers.LaTeX (inlineCommand, rawLaTeXInline)
48+import Text.Pandoc.Shared (underlineSpan)
48import Text.TeXMath (DisplayType (..), readTeX, writePandoc)
49import Text.TeXMath (DisplayType (..), readTeX, writePandoc)
49import qualified Text.TeXMath.Readers.MathML.EntityMap as MathMLEntityMap
50import qualified Text.TeXMath.Readers.MathML.EntityMap as MathMLEntityMap
50
51
@@ -572,9 +573,8 @@ strong = fmap B.strong <$> emphasisBetween '*'
572strikeout :: PandocMonad m => OrgParser m (F Inlines)
573strikeout :: PandocMonad m => OrgParser m (F Inlines)
573strikeout = fmap B.strikeout <$> emphasisBetween '+'
574strikeout = fmap B.strikeout <$> emphasisBetween '+'
574
575
575−-- There is no underline, so we use strong instead.
576underline :: PandocMonad m => OrgParser m (F Inlines)
576underline :: PandocMonad m => OrgParser m (F Inlines)
577−underline = fmap B.strong <$> emphasisBetween '_'
577+underline = fmap underlineSpan <$> emphasisBetween '_'
578
578
579verbatim :: PandocMonad m => OrgParser m (F Inlines)
579verbatim :: PandocMonad m => OrgParser m (F Inlines)
580verbatim = return . B.code <$> verbatimBetween '='
580verbatim = return . B.code <$> verbatimBetween '='
src/Text/Pandoc/Readers/Textile.hs+2−2
@@ -68,7 +68,7 @@ import Text.Pandoc.Options
68import Text.Pandoc.Parsing
68import Text.Pandoc.Parsing
69import Text.Pandoc.Readers.HTML (htmlTag, isBlockTag, isInlineTag)
69import Text.Pandoc.Readers.HTML (htmlTag, isBlockTag, isInlineTag)
70import Text.Pandoc.Readers.LaTeX (rawLaTeXBlock, rawLaTeXInline)
70import Text.Pandoc.Readers.LaTeX (rawLaTeXBlock, rawLaTeXInline)
71−import Text.Pandoc.Shared (trim, crFilter)
71+import Text.Pandoc.Shared (trim, crFilter, underlineSpan)
72import Data.Text (Text)
72import Data.Text (Text)
73import qualified Data.Text as T
73import qualified Data.Text as T
74
74
@@ -468,7 +468,7 @@ inlineMarkup = choice [ simpleInline (string "??") (B.cite [])
468 , simpleInline (string "__") B.emph
468 , simpleInline (string "__") B.emph
469 , simpleInline (char '*') B.strong
469 , simpleInline (char '*') B.strong
470 , simpleInline (char '_') B.emph
470 , simpleInline (char '_') B.emph
471− , simpleInline (char '+') B.emph -- approximates underline
471+ , simpleInline (char '+') underlineSpan
472 , simpleInline (char '-' <* notFollowedBy (char '-')) B.strikeout
472 , simpleInline (char '-' <* notFollowedBy (char '-')) B.strikeout
473 , simpleInline (char '^') B.superscript
473 , simpleInline (char '^') B.superscript
474 , simpleInline (char '~') B.subscript
474 , simpleInline (char '~') B.subscript
src/Text/Pandoc/Readers/Txt2Tags.hs+2−2
@@ -41,7 +41,7 @@ import qualified Text.Pandoc.Builder as B
41import Text.Pandoc.Definition
41import Text.Pandoc.Definition
42import Text.Pandoc.Options
42import Text.Pandoc.Options
43import Text.Pandoc.Parsing hiding (space, spaces, uri)
43import Text.Pandoc.Parsing hiding (space, spaces, uri)
44−import Text.Pandoc.Shared (compactify, compactifyDL, escapeURI, crFilter)
44+import Text.Pandoc.Shared (compactify, compactifyDL, escapeURI, crFilter, underlineSpan)
45import Control.Monad (guard, void, when)
45import Control.Monad (guard, void, when)
46import Control.Monad.Reader (Reader, asks, runReader)
46import Control.Monad.Reader (Reader, asks, runReader)
47import Data.Default
47import Data.Default
@@ -393,7 +393,7 @@ bold :: T2T Inlines
393bold = inlineMarkup inline B.strong '*' (B.str)
393bold = inlineMarkup inline B.strong '*' (B.str)
394
394
395underline :: T2T Inlines
395underline :: T2T Inlines
396−underline = inlineMarkup inline B.emph '_' (B.str)
396+underline = inlineMarkup inline underlineSpan '_' (B.str)
397
397
398strike :: T2T Inlines
398strike :: T2T Inlines
399strike = inlineMarkup inline B.strikeout '-' (B.str)
399strike = inlineMarkup inline B.strikeout '-' (B.str)
src/Text/Pandoc/Shared.hs+8
@@ -72,6 +72,7 @@ module Text.Pandoc.Shared (
72 addMetaField,
72 addMetaField,
73 makeMeta,
73 makeMeta,
74 eastAsianLineBreakFilter,
74 eastAsianLineBreakFilter,
75+ underlineSpan,
75 -- * TagSoup HTML handling
76 -- * TagSoup HTML handling
76 renderTags',
77 renderTags',
77 -- * File handling
78 -- * File handling
@@ -563,6 +564,13 @@ eastAsianLineBreakFilter = bottomUp go
563 _ -> x:SoftBreak:y:zs
564 _ -> x:SoftBreak:y:zs
564 go xs = xs
565 go xs = xs
565
566
567+-- | Builder for underline.
568+-- This probably belongs in Builder.hs in pandoc-types.
569+-- Will be replaced once Underline is an element.
570+underlineSpan :: Inlines -> Inlines
571+underlineSpan = B.spanWith ("", ["underline"], [])
572+
573+
566--
574--
567-- TagSoup HTML handling
575-- TagSoup HTML handling
568--
576--
test/Tests/Readers/Org.hs+5
@@ -8,6 +8,7 @@ import Test.Tasty
8import Tests.Helpers
8import Tests.Helpers
9import Text.Pandoc
9import Text.Pandoc
10import Text.Pandoc.Builder
10import Text.Pandoc.Builder
11+import Text.Pandoc.Shared (underlineSpan)
11
12
12org :: Text -> Pandoc
13org :: Text -> Pandoc
13org = purely $ readOrg def{ readerExtensions = getDefaultExtensions "org" }
14org = purely $ readOrg def{ readerExtensions = getDefaultExtensions "org" }
@@ -57,6 +58,10 @@ tests =
57 " */super/*" =?>
58 " */super/*" =?>
58 para (strong . emph $ "super")
59 para (strong . emph $ "super")
59
60
61+ , "Underline" =:
62+ "_underline_" =?>
63+ para (underlineSpan $ "underline")
64+
60 , "Strikeout" =:
65 , "Strikeout" =:
61 "+Kill Bill+" =?>
66 "+Kill Bill+" =?>
62 para (strikeout . spcSep $ [ "Kill", "Bill" ])
67 para (strikeout . spcSep $ [ "Kill", "Bill" ])
test/Tests/Readers/Txt2Tags.hs+3−2
@@ -10,6 +10,7 @@ import Text.Pandoc
10import Text.Pandoc.Arbitrary ()
10import Text.Pandoc.Arbitrary ()
11import Text.Pandoc.Builder
11import Text.Pandoc.Builder
12import Text.Pandoc.Class
12import Text.Pandoc.Class
13+import Text.Pandoc.Shared (underlineSpan)
13
14
14t2t :: Text -> Pandoc
15t2t :: Text -> Pandoc
15-- t2t = handleError . readTxt2Tags (T2TMeta "date" "mtime" "in" "out") def
16-- t2t = handleError . readTxt2Tags (T2TMeta "date" "mtime" "in" "out") def
@@ -69,12 +70,12 @@ tests =
69
70
70 , "Inline markup is greedy" =:
71 , "Inline markup is greedy" =:
71 "***** ///// _____ ----- ````` \"\"\"\"\" '''''" =?>
72 "***** ///// _____ ----- ````` \"\"\"\"\" '''''" =?>
72− para (spcSep [strong "*", emph "/", emph "_"
73+ para (spcSep [strong "*", emph "/", underlineSpan "_"
73 , strikeout "-", code "`", text "\""
74 , strikeout "-", code "`", text "\""
74 , rawInline "html" "'"])
75 , rawInline "html" "'"])
75 , "Markup must be greedy" =:
76 , "Markup must be greedy" =:
76 "********** ////////// __________ ---------- `````````` \"\"\"\"\"\"\"\"\"\" ''''''''''" =?>
77 "********** ////////// __________ ---------- `````````` \"\"\"\"\"\"\"\"\"\" ''''''''''" =?>
77− para (spcSep [strong "******", emph "//////", emph "______"
78+ para (spcSep [strong "******", emph "//////", underlineSpan "______"
78 , strikeout "------", code "``````", text "\"\"\"\"\"\""
79 , strikeout "------", code "``````", text "\"\"\"\"\"\""
79 , rawInline "html" "''''''"])
80 , rawInline "html" "''''''"])
80 , "Inlines must be glued" =:
81 , "Inlines must be glued" =:
test/docx/inline_formatting.native+1−1
@@ -1,5 +1,5 @@
1[Para [Str "Regular",Space,Str "text",Space,Emph [Str "italics"],Space,Strong [Str "bold",Space,Emph [Str "bold",Space,Str "italics"]],Str "."]
1[Para [Str "Regular",Space,Str "text",Space,Emph [Str "italics"],Space,Strong [Str "bold",Space,Emph [Str "bold",Space,Str "italics"]],Str "."]
2,Para [Str "This",Space,Str "is",Space,SmallCaps [Str "Small",Space,Str "Caps"],Str ",",Space,Str "and",Space,Str "this",Space,Str "is",Space,Strikeout [Str "strikethrough"],Str "."]
2,Para [Str "This",Space,Str "is",Space,SmallCaps [Str "Small",Space,Str "Caps"],Str ",",Space,Str "and",Space,Str "this",Space,Str "is",Space,Strikeout [Str "strikethrough"],Str "."]
3−,Para [Str "Some",Space,Str "people",Space,Str "use",Space,Emph [Str "single",Space,Str "underlines",Space,Str "for",Space,Emph [Str "emphasis"]],Str "."]
3+,Para [Str "Some",Space,Str "people",Space,Str "use",Space,Span ("",["underline"],[]) [Str "single",Space,Str "underlines",Space,Str "for",Space,Emph [Str "emphasis"]],Str "."]
4,Para [Str "Above",Space,Str "the",Space,Str "line",Space,Str "is",Space,Superscript [Str "superscript"],Space,Str "and",Space,Str "below",Space,Str "the",Space,Str "line",Space,Str "is",Space,Subscript [Str "subscript"],Str "."]
4,Para [Str "Above",Space,Str "the",Space,Str "line",Space,Str "is",Space,Superscript [Str "superscript"],Space,Str "and",Space,Str "below",Space,Str "the",Space,Str "line",Space,Str "is",Space,Subscript [Str "subscript"],Str "."]
5,Para [Str "A",Space,Str "line",LineBreak,Str "break."]]
5,Para [Str "A",Space,Str "line",LineBreak,Str "break."]]
test/html-reader.html+2
@@ -317,6 +317,8 @@ These should not be escaped: \$ \\ \> \[ \{
317<p>So is <strong><em>this</em></strong> word.</p>
317<p>So is <strong><em>this</em></strong> word.</p>
318<p>This is code: <code>&gt;</code>, <code>$</code>, <code>\</code>, <code>\$</code>, <code>&lt;html&gt;</code>.</p>
318<p>This is code: <code>&gt;</code>, <code>$</code>, <code>\</code>, <code>\$</code>, <code>&lt;html&gt;</code>.</p>
319<p>This is <span style="font-variant: small-caps;">small caps</span>.</p>
319<p>This is <span style="font-variant: small-caps;">small caps</span>.</p>
320+<p>These are all underlined: <u>foo</u> and <ins>bar</ins>.</p>
321+<p>These are all strikethrough: <s>foo</s>, <strike>bar</strike>, and <del>baz</del>.</p>
320<hr />
322<hr />
321<h1>Smart quotes, ellipses, dashes</h1>
323<h1>Smart quotes, ellipses, dashes</h1>
322<p>"Hello," said the spider. "'Shelob' is my name."</p>
324<p>"Hello," said the spider. "'Shelob' is my name."</p>
test/html-reader.native+2
@@ -207,6 +207,8 @@ Pandoc (Meta {unMeta = fromList [("generator",MetaInlines [Str "pandoc"]),("titl
207,Para [Str "So",Space,Str "is",Space,Strong [Emph [Str "this"]],Space,Str "word."]
207,Para [Str "So",Space,Str "is",Space,Strong [Emph [Str "this"]],Space,Str "word."]
208,Para [Str "This",Space,Str "is",Space,Str "code:",Space,Code ("",[],[]) ">",Str ",",Space,Code ("",[],[]) "$",Str ",",Space,Code ("",[],[]) "\\",Str ",",Space,Code ("",[],[]) "\\$",Str ",",Space,Code ("",[],[]) "<html>",Str "."]
208,Para [Str "This",Space,Str "is",Space,Str "code:",Space,Code ("",[],[]) ">",Str ",",Space,Code ("",[],[]) "$",Str ",",Space,Code ("",[],[]) "\\",Str ",",Space,Code ("",[],[]) "\\$",Str ",",Space,Code ("",[],[]) "<html>",Str "."]
209,Para [Str "This",Space,Str "is",Space,SmallCaps [Str "small",Space,Str "caps"],Str "."]
209,Para [Str "This",Space,Str "is",Space,SmallCaps [Str "small",Space,Str "caps"],Str "."]
210+,Para [Str "These",Space,Str "are",Space,Str "all",Space,Str "underlined:",Space,Span ("",["underline"],[]) [Str "foo"],Space,Str "and",Space,Span ("",["underline"],[]) [Str "bar"],Str "."]
211+,Para [Str "These",Space,Str "are",Space,Str "all",Space,Str "strikethrough:",Space,Strikeout [Str "foo"],Str ",",Space,Strikeout [Str "bar"],Str ",",Space,Str "and",Space,Strikeout [Str "baz"],Str "."]
210,HorizontalRule
212,HorizontalRule
211,Header 1 ("smart-quotes-ellipses-dashes",[],[]) [Str "Smart",Space,Str "quotes,",Space,Str "ellipses,",Space,Str "dashes"]
213,Header 1 ("smart-quotes-ellipses-dashes",[],[]) [Str "Smart",Space,Str "quotes,",Space,Str "ellipses,",Space,Str "dashes"]
212,Para [Str "\"Hello,\"",Space,Str "said",Space,Str "the",Space,Str "spider.",Space,Str "\"'Shelob'",Space,Str "is",Space,Str "my",Space,Str "name.\""]
214,Para [Str "\"Hello,\"",Space,Str "said",Space,Str "the",Space,Str "spider.",Space,Str "\"'Shelob'",Space,Str "is",Space,Str "my",Space,Str "name.\""]
test/textile-reader.native+1−1
@@ -86,7 +86,7 @@ Pandoc (Meta {unMeta = fromList []})
86 ,([Str "beer"],
86 ,([Str "beer"],
87 [[Plain [Str "fresh",Space,Str "and",Space,Str "bitter"]]])]
87 [[Plain [Str "fresh",Space,Str "and",Space,Str "bitter"]]])]
88,Header 1 ("inline-markup",[],[]) [Str "Inline",Space,Str "Markup"]
88,Header 1 ("inline-markup",[],[]) [Str "Inline",Space,Str "Markup"]
89−,Para [Str "This",Space,Str "is",Space,Emph [Str "emphasized"],Str ",",Space,Str "and",Space,Str "so",Space,Emph [Str "is",Space,Str "this"],Str ".",LineBreak,Str "This",Space,Str "is",Space,Strong [Str "strong"],Str ",",Space,Str "and",Space,Str "so",Space,Strong [Str "is",Space,Str "this"],Str ".",LineBreak,Str "Hyphenated-words-are-ok,",Space,Str "as",Space,Str "well",Space,Str "as",Space,Str "strange_underscore_notation.",LineBreak,Str "A",Space,Link ("",[],[]) [Strong [Str "strong",Space,Str "link"]] ("http://www.foobar.com",""),Str "."]
89+,Para [Str "This",Space,Str "is",Space,Emph [Str "emphasized"],Str ",",Space,Str "and",Space,Str "so",Space,Emph [Str "is",Space,Str "this"],Str ".",LineBreak,Str "This",Space,Str "is",Space,Strong [Str "strong"],Str ",",Space,Str "and",Space,Str "so",Space,Strong [Str "is",Space,Str "this"],Str ".",LineBreak,Str "This",Space,Str "is",Space,Span ("",["underline"],[]) [Str "inserted"],Str ",",Space,Str "and",Space,Str "this",Space,Str "is",Space,Strikeout [Str "deleted"],Str ".",LineBreak,Str "Hyphenated-words-are-ok,",Space,Str "as",Space,Str "well",Space,Str "as",Space,Str "strange_underscore_notation.",LineBreak,Str "A",Space,Link ("",[],[]) [Strong [Str "strong",Space,Str "link"]] ("http://www.foobar.com",""),Str "."]
90,Para [Emph [Strong [Str "This",Space,Str "is",Space,Str "strong",Space,Str "and",Space,Str "em."]],LineBreak,Str "So",Space,Str "is",Space,Strong [Emph [Str "this"]],Space,Str "word",Space,Str "and",Space,Emph [Strong [Str "that",Space,Str "one"]],Str ".",LineBreak,Strikeout [Str "This",Space,Str "is",Space,Str "strikeout",Space,Str "and",Space,Strong [Str "strong"]]]
90,Para [Emph [Strong [Str "This",Space,Str "is",Space,Str "strong",Space,Str "and",Space,Str "em."]],LineBreak,Str "So",Space,Str "is",Space,Strong [Emph [Str "this"]],Space,Str "word",Space,Str "and",Space,Emph [Strong [Str "that",Space,Str "one"]],Str ".",LineBreak,Strikeout [Str "This",Space,Str "is",Space,Str "strikeout",Space,Str "and",Space,Strong [Str "strong"]]]
91,Para [Str "Superscripts:",Space,Str "a",Superscript [Str "bc"],Str "d",Space,Str "a",Space,Superscript [Strong [Str "hello"]],Space,Str "a",Superscript [Str "hello",Space,Str "there"],Str ".",LineBreak,Str "Subscripts:",Space,Subscript [Str "here"],Space,Str "H",Space,Subscript [Str "2"],Str "O,",Space,Str "H",Space,Subscript [Str "23"],Str "O,",Space,Str "H",Space,Subscript [Str "many",Space,Str "of",Space,Str "them"],Str "O."]
91,Para [Str "Superscripts:",Space,Str "a",Superscript [Str "bc"],Str "d",Space,Str "a",Space,Superscript [Strong [Str "hello"]],Space,Str "a",Superscript [Str "hello",Space,Str "there"],Str ".",LineBreak,Str "Subscripts:",Space,Subscript [Str "here"],Space,Str "H",Space,Subscript [Str "2"],Str "O,",Space,Str "H",Space,Subscript [Str "23"],Str "O,",Space,Str "H",Space,Subscript [Str "many",Space,Str "of",Space,Str "them"],Str "O."]
92,Para [Str "Dashes",Space,Str ":",Space,Str "How",Space,Str "cool",Space,Str "\8212",Space,Str "automatic",Space,Str "dashes."]
92,Para [Str "Dashes",Space,Str ":",Space,Str "How",Space,Str "cool",Space,Str "\8212",Space,Str "automatic",Space,Str "dashes."]
test/textile-reader.textile+1
@@ -149,6 +149,7 @@ h1. Inline Markup
149
149
150This is _emphasized_, and so __is this__.
150This is _emphasized_, and so __is this__.
151This is *strong*, and so **is this**.
151This is *strong*, and so **is this**.
152+This is +inserted+, and this is -deleted-.
152Hyphenated-words-are-ok, as well as strange_underscore_notation.
153Hyphenated-words-are-ok, as well as strange_underscore_notation.
153A "*strong link*":http://www.foobar.com.
154A "*strong link*":http://www.foobar.com.
154
155
test/txt2tags.native+2−2
@@ -29,8 +29,8 @@ Pandoc (Meta {unMeta = fromList [("author",MetaList [MetaInlines [Str "author"]]
29,Para [Strikeout [Str "-------+--------"]]
29,Para [Strikeout [Str "-------+--------"]]
30,Para [Str "(",Space,Strikeout [Str "----------------"],Space,Str ")"]
30,Para [Str "(",Space,Strikeout [Str "----------------"],Space,Str ")"]
31,Header 1 ("inline",[],[]) [Str "Inline"]
31,Header 1 ("inline",[],[]) [Str "Inline"]
32−,Para [Str "i)",Space,Strong [Str "b"],Space,Emph [Str "i"],Space,Emph [Str "u"],Space,Strikeout [Str "s"],Space,Code ("",[],[]) "m",Space,Str "r",Space,RawInline (Format "html") "t",SoftBreak,Str "i)",Space,Strong [Str "bo"],Space,Emph [Str "it"],Space,Emph [Str "un"],Space,Strikeout [Str "st"],Space,Code ("",[],[]) "mo",Space,Str "ra",Space,RawInline (Format "html") "tg",SoftBreak,Str "i)",Space,Strong [Str "bold"],Space,Emph [Str "ital"],Space,Emph [Str "undr"],Space,Strikeout [Str "strk"],Space,Code ("",[],[]) "mono",Space,Str "raw",Space,RawInline (Format "html") "tggd",SoftBreak,Str "i)",Space,Strong [Str "bo",Space,Str "ld"],Space,Emph [Str "it",Space,Str "al"],Space,Emph [Str "un",Space,Str "dr"],Space,Strikeout [Str "st",Space,Str "rk"],Space,Code ("",[],[]) "mo no",Space,Str "r",Space,Str "aw",Space,RawInline (Format "html") "tg gd",SoftBreak,Str "i)",Space,Strong [Str "bo",Space,Str "*",Space,Str "ld"],Space,Emph [Str "it",Space,Str "/",Space,Str "al"],Space,Emph [Str "un",Space,Str "_",Space,Str "dr"],Space,Strikeout [Str "st",Space,Str "-",Space,Str "rk"],Space,Code ("",[],[]) "mo ` no",Space,Str "r",Space,Str "\"",Space,Str "aw",Space,RawInline (Format "html") "tg ' gd",SoftBreak,Str "i)",Space,Strong [Str "bo",Space,Str "**ld"],Space,Emph [Str "it",Space,Str "//al"],Space,Emph [Str "un",Space,Str "__dr"],Space,Strikeout [Str "st",Space,Str "--rk"],Space,Code ("",[],[]) "mo ``no",Space,Str "r",Space,Str "\"\"aw",Space,RawInline (Format "html") "tg ''gd",SoftBreak,Str "i)",Space,Strong [Str "bo",Space,Str "**",Space,Str "ld"],Space,Emph [Str "it",Space,Str "//",Space,Str "al"],Space,Emph [Str "un",Space,Str "__",Space,Str "dr"],Space,Strikeout [Str "st",Space,Str "--",Space,Str "rk"],Space,Code ("",[],[]) "mo `` no",Space,Str "r",Space,Str "\"\"",Space,Str "aw",Space,RawInline (Format "html") "tg '' gd",SoftBreak,Str "i)",Space,Strong [Str "**bold**"],Space,Emph [Str "//ital//"],Space,Emph [Str "__undr__"],Space,Strikeout [Str "--strk--"],Space,Code ("",[],[]) "``mono``",Space,Str "\"\"raw\"\"",Space,RawInline (Format "html") "''tggd''",SoftBreak,Str "i)",Space,Strong [Str "*bold*"],Space,Emph [Str "/ital/"],Space,Emph [Str "_undr_"],Space,Strikeout [Str "-strk-"],Space,Code ("",[],[]) "`mono`",Space,Str "\"raw\"",Space,RawInline (Format "html") "'tggd'"]
32+,Para [Str "i)",Space,Strong [Str "b"],Space,Emph [Str "i"],Space,Span ("",["underline"],[]) [Str "u"],Space,Strikeout [Str "s"],Space,Code ("",[],[]) "m",Space,Str "r",Space,RawInline (Format "html") "t",SoftBreak,Str "i)",Space,Strong [Str "bo"],Space,Emph [Str "it"],Space,Span ("",["underline"],[]) [Str "un"],Space,Strikeout [Str "st"],Space,Code ("",[],[]) "mo",Space,Str "ra",Space,RawInline (Format "html") "tg",SoftBreak,Str "i)",Space,Strong [Str "bold"],Space,Emph [Str "ital"],Space,Span ("",["underline"],[]) [Str "undr"],Space,Strikeout [Str "strk"],Space,Code ("",[],[]) "mono",Space,Str "raw",Space,RawInline (Format "html") "tggd",SoftBreak,Str "i)",Space,Strong [Str "bo",Space,Str "ld"],Space,Emph [Str "it",Space,Str "al"],Space,Span ("",["underline"],[]) [Str "un",Space,Str "dr"],Space,Strikeout [Str "st",Space,Str "rk"],Space,Code ("",[],[]) "mo no",Space,Str "r",Space,Str "aw",Space,RawInline (Format "html") "tg gd",SoftBreak,Str "i)",Space,Strong [Str "bo",Space,Str "*",Space,Str "ld"],Space,Emph [Str "it",Space,Str "/",Space,Str "al"],Space,Span ("",["underline"],[]) [Str "un",Space,Str "_",Space,Str "dr"],Space,Strikeout [Str "st",Space,Str "-",Space,Str "rk"],Space,Code ("",[],[]) "mo ` no",Space,Str "r",Space,Str "\"",Space,Str "aw",Space,RawInline (Format "html") "tg ' gd",SoftBreak,Str "i)",Space,Strong [Str "bo",Space,Str "**ld"],Space,Emph [Str "it",Space,Str "//al"],Space,Span ("",["underline"],[]) [Str "un",Space,Str "__dr"],Space,Strikeout [Str "st",Space,Str "--rk"],Space,Code ("",[],[]) "mo ``no",Space,Str "r",Space,Str "\"\"aw",Space,RawInline (Format "html") "tg ''gd",SoftBreak,Str "i)",Space,Strong [Str "bo",Space,Str "**",Space,Str "ld"],Space,Emph [Str "it",Space,Str "//",Space,Str "al"],Space,Span ("",["underline"],[]) [Str "un",Space,Str "__",Space,Str "dr"],Space,Strikeout [Str "st",Space,Str "--",Space,Str "rk"],Space,Code ("",[],[]) "mo `` no",Space,Str "r",Space,Str "\"\"",Space,Str "aw",Space,RawInline (Format "html") "tg '' gd",SoftBreak,Str "i)",Space,Strong [Str "**bold**"],Space,Emph [Str "//ital//"],Space,Span ("",["underline"],[]) [Str "__undr__"],Space,Strikeout [Str "--strk--"],Space,Code ("",[],[]) "``mono``",Space,Str "\"\"raw\"\"",Space,RawInline (Format "html") "''tggd''",SoftBreak,Str "i)",Space,Strong [Str "*bold*"],Space,Emph [Str "/ital/"],Space,Span ("",["underline"],[]) [Str "_undr_"],Space,Strikeout [Str "-strk-"],Space,Code ("",[],[]) "`mono`",Space,Str "\"raw\"",Space,RawInline (Format "html") "'tggd'"]
33−,Para [Str "i)",Space,Strong [Str "*"],Space,Emph [Str "/"],Space,Emph [Str "_"],Space,Strikeout [Str "-"],Space,Code ("",[],[]) "`",Space,Str "\"",Space,RawInline (Format "html") "'",SoftBreak,Str "i)",Space,Strong [Str "**"],Space,Emph [Str "//"],Space,Emph [Str "__"],Space,Strikeout [Str "--"],Space,Code ("",[],[]) "``",Space,Str "\"\"",Space,RawInline (Format "html") "''",SoftBreak,Str "i)",Space,Strong [Str "***"],Space,Emph [Str "///"],Space,Emph [Str "___"],Space,Strikeout [Str "---"],Space,Code ("",[],[]) "```",Space,Str "\"\"\"",Space,RawInline (Format "html") "'''",SoftBreak,Str "i)",Space,Strong [Str "****"],Space,Emph [Str "////"],Space,Emph [Str "____"],Space,Strikeout [Str "----"],Space,Code ("",[],[]) "````",Space,Str "\"\"\"\"",Space,RawInline (Format "html") "''''",SoftBreak,Str "i)",Space,Strong [Str "*****"],Space,Emph [Str "/////"],Space,Emph [Str "_____"],Space,Strikeout [Str "-----"],Space,Code ("",[],[]) "`````",Space,Str "\"\"\"\"\"",Space,RawInline (Format "html") "'''''",SoftBreak,Str "i)",Space,Strong [Str "******"],Space,Emph [Str "//////"],Space,Emph [Str "______"],Space,Strikeout [Str "------"],Space,Code ("",[],[]) "``````",Space,Str "\"\"\"\"\"\"",Space,RawInline (Format "html") "''''''"]
33+,Para [Str "i)",Space,Strong [Str "*"],Space,Emph [Str "/"],Space,Span ("",["underline"],[]) [Str "_"],Space,Strikeout [Str "-"],Space,Code ("",[],[]) "`",Space,Str "\"",Space,RawInline (Format "html") "'",SoftBreak,Str "i)",Space,Strong [Str "**"],Space,Emph [Str "//"],Space,Span ("",["underline"],[]) [Str "__"],Space,Strikeout [Str "--"],Space,Code ("",[],[]) "``",Space,Str "\"\"",Space,RawInline (Format "html") "''",SoftBreak,Str "i)",Space,Strong [Str "***"],Space,Emph [Str "///"],Space,Span ("",["underline"],[]) [Str "___"],Space,Strikeout [Str "---"],Space,Code ("",[],[]) "```",Space,Str "\"\"\"",Space,RawInline (Format "html") "'''",SoftBreak,Str "i)",Space,Strong [Str "****"],Space,Emph [Str "////"],Space,Span ("",["underline"],[]) [Str "____"],Space,Strikeout [Str "----"],Space,Code ("",[],[]) "````",Space,Str "\"\"\"\"",Space,RawInline (Format "html") "''''",SoftBreak,Str "i)",Space,Strong [Str "*****"],Space,Emph [Str "/////"],Space,Span ("",["underline"],[]) [Str "_____"],Space,Strikeout [Str "-----"],Space,Code ("",[],[]) "`````",Space,Str "\"\"\"\"\"",Space,RawInline (Format "html") "'''''",SoftBreak,Str "i)",Space,Strong [Str "******"],Space,Emph [Str "//////"],Space,Span ("",["underline"],[]) [Str "______"],Space,Strikeout [Str "------"],Space,Code ("",[],[]) "``````",Space,Str "\"\"\"\"\"\"",Space,RawInline (Format "html") "''''''"]
34,Para [Str "i)",Space,Str "****",Space,Str "////",Space,Str "____",Space,Str "----",Space,Str "````",Space,Str "\"\"\"\"",Space,Str "''''",SoftBreak,Str "i)",Space,Str "**",Space,Str "**",Space,Str "//",Space,Str "//",Space,Str "__",Space,Str "__",Space,Str "--",Space,Str "--",Space,Str "``",Space,Str "``",Space,Str "\"\"",Space,Str "\"\"",Space,Str "''",Space,Str "''"]
34,Para [Str "i)",Space,Str "****",Space,Str "////",Space,Str "____",Space,Str "----",Space,Str "````",Space,Str "\"\"\"\"",Space,Str "''''",SoftBreak,Str "i)",Space,Str "**",Space,Str "**",Space,Str "//",Space,Str "//",Space,Str "__",Space,Str "__",Space,Str "--",Space,Str "--",Space,Str "``",Space,Str "``",Space,Str "\"\"",Space,Str "\"\"",Space,Str "''",Space,Str "''"]
35,Para [Str "i)",Space,Str "**",Space,Str "bold**",Space,Str "//",Space,Str "ital//",Space,Str "__",Space,Str "undr__",Space,Str "--",Space,Str "strk--",Space,Str "``",Space,Str "mono``",Space,Str "\"\"",Space,Str "raw\"\"",Space,Str "''",Space,Str "tggd''",SoftBreak,Str "i)",Space,Str "**bold",Space,Str "**",Space,Str "//ital",Space,Str "//",Space,Str "__undr",Space,Str "__",Space,Str "--strk",Space,Str "--",Space,Str "``mono",Space,Str "``",Space,Str "\"\"raw",Space,Str "\"\"",Space,Str "''tggd",Space,Str "''",SoftBreak,Str "i)",Space,Str "**",Space,Str "bold",Space,Str "**",Space,Str "//",Space,Str "ital",Space,Str "//",Space,Str "__",Space,Str "undr",Space,Str "__",Space,Str "--",Space,Str "strk",Space,Str "--",Space,Str "``",Space,Str "mono",Space,Str "``",Space,Str "\"\"",Space,Str "raw",Space,Str "\"\"",Space,Str "''",Space,Str "tggd",Space,Str "''"]
35,Para [Str "i)",Space,Str "**",Space,Str "bold**",Space,Str "//",Space,Str "ital//",Space,Str "__",Space,Str "undr__",Space,Str "--",Space,Str "strk--",Space,Str "``",Space,Str "mono``",Space,Str "\"\"",Space,Str "raw\"\"",Space,Str "''",Space,Str "tggd''",SoftBreak,Str "i)",Space,Str "**bold",Space,Str "**",Space,Str "//ital",Space,Str "//",Space,Str "__undr",Space,Str "__",Space,Str "--strk",Space,Str "--",Space,Str "``mono",Space,Str "``",Space,Str "\"\"raw",Space,Str "\"\"",Space,Str "''tggd",Space,Str "''",SoftBreak,Str "i)",Space,Str "**",Space,Str "bold",Space,Str "**",Space,Str "//",Space,Str "ital",Space,Str "//",Space,Str "__",Space,Str "undr",Space,Str "__",Space,Str "--",Space,Str "strk",Space,Str "--",Space,Str "``",Space,Str "mono",Space,Str "``",Space,Str "\"\"",Space,Str "raw",Space,Str "\"\"",Space,Str "''",Space,Str "tggd",Space,Str "''"]
36,Header 1 ("link",[],[]) [Str "Link"]
36,Header 1 ("link",[],[]) [Str "Link"]