git.iko.soy/typeable/pandoc
on master help sign in
Consistent underline for Readers (#2270)

* Added underlineSpan builder function. This can be easily updated if needed. The purpose is for Readers to transform underlines consistently. * Docx Reader: Use underlineSpan and update test * Org Reader: Use underlineSpan and add test * Textile Reader: Use underlineSpan and add test case * Txt2Tags Reader: Use underlineSpan and update test * HTML Reader: Use underlineSpan and add test case

commit7f8a3c6cb70e61666598873dbcea8ef45ab85b56 authorhftf <hftf@users.noreply.github.com> dateFri 27 Oct 2017, 18:45 (9 years ago) parent2ddf086
14 files changed+39−15
src/Text/Pandoc/Readers/Docx.hs+3−2 src/Text/Pandoc/Readers/HTML.hs+5−1 src/Text/Pandoc/Readers/Org/Inlines.hs+2−2 src/Text/Pandoc/Readers/Textile.hs+2−2 src/Text/Pandoc/Readers/Txt2Tags.hs+2−2 src/Text/Pandoc/Shared.hs+8 test/Tests/Readers/Org.hs+5 test/Tests/Readers/Txt2Tags.hs+3−2 test/docx/inline_formatting.native+1−1 test/html-reader.html+2 test/html-reader.native+2 test/textile-reader.native+1−1 test/textile-reader.textile+1 test/txt2tags.native+2−2
src/Text/Pandoc/Readers/Docx.hs+3−2
@@ -52,12 +52,13 @@ implemented, [-] means partially implemented):
5252* Inlines
5353
5454 - [X] Str
55− - [X] Emph (italics and underline both read as Emph)
55+ - [X] Emph
5656 - [X] Strong
5757 - [X] Strikeout
5858 - [X] Superscript
5959 - [X] Subscript
6060 - [X] SmallCaps
61+ - [-] Underline (was previously converted to Emph)
6162 - [ ] Quoted
6263 - [ ] Cite
6364 - [X] Code (styled with `VerbatimChar`)
@@ -287,7 +288,7 @@ runStyleToTransform rPr
287288 | Just SubScrpt <- rVertAlign rPr =
288289 subscript . (runStyleToTransform rPr {rVertAlign = Nothing})
289290 | Just "single" <- rUnderline rPr =
290− emph . (runStyleToTransform rPr {rUnderline = Nothing})
291+ underlineSpan . (runStyleToTransform rPr {rUnderline = Nothing})
291292 | otherwise = id
292293
293294runToInlines :: PandocMonad m => Run -> DocxContext m Inlines
src/Text/Pandoc/Readers/HTML.hs+5−1
@@ -45,7 +45,7 @@ import Text.Pandoc.Definition
4545import qualified Text.Pandoc.Builder as B
4646import Text.Pandoc.Builder (Blocks, Inlines, trimInlines, HasMeta(..))
4747import Text.Pandoc.Shared ( extractSpaces, addMetaField
48− , escapeURI, safeRead, crFilter )
48+ , escapeURI, safeRead, crFilter, underlineSpan )
4949import Text.Pandoc.Options (
5050 ReaderOptions(readerExtensions,readerStripComments), extensionEnabled,
5151 Extension (Ext_epub_html_exts,
@@ -627,6 +627,7 @@ inline = choice
627627 , pSuperscript
628628 , pSubscript
629629 , pStrikeout
630+ , pUnderline
630631 , pLineBreak
631632 , pLink
632633 , pImage
@@ -696,6 +697,9 @@ pStrikeout = do
696697 contents <- mconcat <$> manyTill inline (pCloses "span")
697698 return $ B.strikeout contents)
698699
700+pUnderline :: PandocMonad m => TagParser m Inlines
701+pUnderline = pInlinesInTags "u" underlineSpan <|> pInlinesInTags "ins" underlineSpan
702+
699703pLineBreak :: PandocMonad m => TagParser m Inlines
700704pLineBreak = do
701705 pSelfClosing (=="br") (const True)
src/Text/Pandoc/Readers/Org/Inlines.hs+2−2
@@ -45,6 +45,7 @@ import Text.Pandoc.Class (PandocMonad)
4545import Text.Pandoc.Definition
4646import Text.Pandoc.Options
4747import Text.Pandoc.Readers.LaTeX (inlineCommand, rawLaTeXInline)
48+import Text.Pandoc.Shared (underlineSpan)
4849import Text.TeXMath (DisplayType (..), readTeX, writePandoc)
4950import qualified Text.TeXMath.Readers.MathML.EntityMap as MathMLEntityMap
5051
@@ -572,9 +573,8 @@ strong = fmap B.strong <$> emphasisBetween '*'
572573strikeout :: PandocMonad m => OrgParser m (F Inlines)
573574strikeout = fmap B.strikeout <$> emphasisBetween '+'
574575
575−-- There is no underline, so we use strong instead.
576576underline :: PandocMonad m => OrgParser m (F Inlines)
577−underline = fmap B.strong <$> emphasisBetween '_'
577+underline = fmap underlineSpan <$> emphasisBetween '_'
578578
579579verbatim :: PandocMonad m => OrgParser m (F Inlines)
580580verbatim = return . B.code <$> verbatimBetween '='
src/Text/Pandoc/Readers/Textile.hs+2−2
@@ -68,7 +68,7 @@ import Text.Pandoc.Options
6868import Text.Pandoc.Parsing
6969import Text.Pandoc.Readers.HTML (htmlTag, isBlockTag, isInlineTag)
7070import Text.Pandoc.Readers.LaTeX (rawLaTeXBlock, rawLaTeXInline)
71−import Text.Pandoc.Shared (trim, crFilter)
71+import Text.Pandoc.Shared (trim, crFilter, underlineSpan)
7272import Data.Text (Text)
7373import qualified Data.Text as T
7474
@@ -468,7 +468,7 @@ inlineMarkup = choice [ simpleInline (string "??") (B.cite [])
468468 , simpleInline (string "__") B.emph
469469 , simpleInline (char '*') B.strong
470470 , simpleInline (char '_') B.emph
471− , simpleInline (char '+') B.emph -- approximates underline
471+ , simpleInline (char '+') underlineSpan
472472 , simpleInline (char '-' <* notFollowedBy (char '-')) B.strikeout
473473 , simpleInline (char '^') B.superscript
474474 , simpleInline (char '~') B.subscript
src/Text/Pandoc/Readers/Txt2Tags.hs+2−2
@@ -41,7 +41,7 @@ import qualified Text.Pandoc.Builder as B
4141import Text.Pandoc.Definition
4242import Text.Pandoc.Options
4343import 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)
4545import Control.Monad (guard, void, when)
4646import Control.Monad.Reader (Reader, asks, runReader)
4747import Data.Default
@@ -393,7 +393,7 @@ bold :: T2T Inlines
393393bold = inlineMarkup inline B.strong '*' (B.str)
394394
395395underline :: T2T Inlines
396−underline = inlineMarkup inline B.emph '_' (B.str)
396+underline = inlineMarkup inline underlineSpan '_' (B.str)
397397
398398strike :: T2T Inlines
399399strike = inlineMarkup inline B.strikeout '-' (B.str)
src/Text/Pandoc/Shared.hs+8
@@ -72,6 +72,7 @@ module Text.Pandoc.Shared (
7272 addMetaField,
7373 makeMeta,
7474 eastAsianLineBreakFilter,
75+ underlineSpan,
7576 -- * TagSoup HTML handling
7677 renderTags',
7778 -- * File handling
@@ -563,6 +564,13 @@ eastAsianLineBreakFilter = bottomUp go
563564 _ -> x:SoftBreak:y:zs
564565 go xs = xs
565566
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+
566574--
567575-- TagSoup HTML handling
568576--
test/Tests/Readers/Org.hs+5
@@ -8,6 +8,7 @@ import Test.Tasty
88import Tests.Helpers
99import Text.Pandoc
1010import Text.Pandoc.Builder
11+import Text.Pandoc.Shared (underlineSpan)
1112
1213org :: Text -> Pandoc
1314org = purely $ readOrg def{ readerExtensions = getDefaultExtensions "org" }
@@ -57,6 +58,10 @@ tests =
5758 " */super/*" =?>
5859 para (strong . emph $ "super")
5960
61+ , "Underline" =:
62+ "_underline_" =?>
63+ para (underlineSpan $ "underline")
64+
6065 , "Strikeout" =:
6166 "+Kill Bill+" =?>
6267 para (strikeout . spcSep $ [ "Kill", "Bill" ])
test/Tests/Readers/Txt2Tags.hs+3−2
@@ -10,6 +10,7 @@ import Text.Pandoc
1010import Text.Pandoc.Arbitrary ()
1111import Text.Pandoc.Builder
1212import Text.Pandoc.Class
13+import Text.Pandoc.Shared (underlineSpan)
1314
1415t2t :: Text -> Pandoc
1516-- t2t = handleError . readTxt2Tags (T2TMeta "date" "mtime" "in" "out") def
@@ -69,12 +70,12 @@ tests =
6970
7071 , "Inline markup is greedy" =:
7172 "***** ///// _____ ----- ````` \"\"\"\"\" '''''" =?>
72− para (spcSep [strong "*", emph "/", emph "_"
73+ para (spcSep [strong "*", emph "/", underlineSpan "_"
7374 , strikeout "-", code "`", text "\""
7475 , rawInline "html" "'"])
7576 , "Markup must be greedy" =:
7677 "********** ////////// __________ ---------- `````````` \"\"\"\"\"\"\"\"\"\" ''''''''''" =?>
77− para (spcSep [strong "******", emph "//////", emph "______"
78+ para (spcSep [strong "******", emph "//////", underlineSpan "______"
7879 , strikeout "------", code "``````", text "\"\"\"\"\"\""
7980 , rawInline "html" "''''''"])
8081 , "Inlines must be glued" =:
test/docx/inline_formatting.native+1−1
@@ -1,5 +1,5 @@
11[Para [Str "Regular",Space,Str "text",Space,Emph [Str "italics"],Space,Strong [Str "bold",Space,Emph [Str "bold",Space,Str "italics"]],Str "."]
22,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 "."]
44,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 "."]
55,Para [Str "A",Space,Str "line",LineBreak,Str "break."]]
test/html-reader.html+2
@@ -317,6 +317,8 @@ These should not be escaped: \$ \\ \> \[ \{
317317<p>So is <strong><em>this</em></strong> word.</p>
318318<p>This is code: <code>&gt;</code>, <code>$</code>, <code>\</code>, <code>\$</code>, <code>&lt;html&gt;</code>.</p>
319319<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>
320322<hr />
321323<h1>Smart quotes, ellipses, dashes</h1>
322324<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
207207,Para [Str "So",Space,Str "is",Space,Strong [Emph [Str "this"]],Space,Str "word."]
208208,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 "."]
209209,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 "."]
210212,HorizontalRule
211213,Header 1 ("smart-quotes-ellipses-dashes",[],[]) [Str "Smart",Space,Str "quotes,",Space,Str "ellipses,",Space,Str "dashes"]
212214,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 []})
8686 ,([Str "beer"],
8787 [[Plain [Str "fresh",Space,Str "and",Space,Str "bitter"]]])]
8888,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 "."]
9090,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"]]]
9191,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."]
9292,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
149149
150150This is _emphasized_, and so __is this__.
151151This is *strong*, and so **is this**.
152+This is +inserted+, and this is -deleted-.
152153Hyphenated-words-are-ok, as well as strange_underscore_notation.
153154A "*strong link*":http://www.foobar.com.
154155
test/txt2tags.native+2−2
@@ -29,8 +29,8 @@ Pandoc (Meta {unMeta = fromList [("author",MetaList [MetaInlines [Str "author"]]
2929,Para [Strikeout [Str "-------+--------"]]
3030,Para [Str "(",Space,Strikeout [Str "----------------"],Space,Str ")"]
3131,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'"]
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") "''''''"]
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,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") "''''''"]
3434,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 "''"]
3535,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 "''"]
3636,Header 1 ("link",[],[]) [Str "Link"]