-
Notifications
You must be signed in to change notification settings - Fork 0
/
pandoc-to-markdown.tex
117 lines (114 loc) · 3.74 KB
/
pandoc-to-markdown.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
% Pandoc to Markdown mapping
\def\pandocDocumentBegin{\markdownRendererDocumentBegin}%
\def\pandocDocumentEnd{\markdownRendererDocumentEnd}%
\def\pandocBlocksep{\markdownRendererInterblockSeparator}%
%% Block elements
\ExplSyntaxOn
\cs_new:Npn
\pandocCodeBlock
#1 #2
{
\tl_if_empty:nTF
{ #2 }
{ \markdownRendererInputVerbatim { #1 } }
{ \markdownRendererInputFencedCode { #1 } { #2 } }
}
\cs_new:Npn
\pandocRawBlock
#1 #2
{
\tl_if_eq:nnT
{ #1 }
{ tex }
{ #2 }
}
\ExplSyntaxOff
%%% Most block elements are broken into two "Begin" and "End" parts to avoid
%%% running out of memory during macro expansion, since their contents can be
%%% very large, especially in the case of Divs.
\def\pandocBlockQuoteBegin{\markdownRendererBlockQuoteBegin}%
\def\pandocBlockQuoteEnd{\markdownRendererBlockQuoteEnd}%
\def\pandocOrderedListBegin{\markdownRendererOlBegin}%
\def\pandocOrderedListItemBegin{\markdownRendererOlItem}%
\def\pandocOrderedListItemEnd{\markdownRendererOlItemEnd}%
\def\pandocOrderedListEnd{\markdownRendererOlEnd}%
\def\pandocBulletListBegin{\markdownRendererUlBegin}%
\def\pandocBulletListItemBegin{\markdownRendererUlItem}%
\def\pandocBulletListItemEnd{\markdownRendererUlItemEnd}%
\def\pandocBulletListEnd{\markdownRendererUlEnd}%
\def\pandocDefinitionListBegin{\markdownRendererDlBegin}%
\def\pandocDefinitionListItemBegin#1{\markdownRendererDlItem{#1}}%
\def\pandocDefinitionListDefinitionBegin{\markdownRendererDlDefinitionBegin}%
\def\pandocDefinitionListDefinitionEnd{\markdownRendererDlDefinitionEnd}%
\def\pandocDefinitionListItemEnd{\markdownRendererDlItemEnd}%
\def\pandocDefinitionListEnd{\markdownRendererDlEnd}%
\ExplSyntaxOn
\cs_new:Npn
\pandocHeader
#1 #2
{
\int_case:nn
{ #1 }
{
{ 1 } { \markdownRendererHeadingOne { #2 } }
{ 2 } { \markdownRendererHeadingTwo { #2 } }
{ 3 } { \markdownRendererHeadingThree { #2 } }
{ 4 } { \markdownRendererHeadingFour { #2 } }
{ 5 } { \markdownRendererHeadingFive { #2 } }
{ 6 } { \markdownRendererHeadingSix { #2 } }
}
}
\cs_new:Npn
\pandocHorizontalRule
{
\cs_if_exist_use:NF
\markdownRendererThematicBreak
\markdownRendererHorizontalRule
}
\ExplSyntaxOff
\def\pandocDivBegin{}%
\def\pandocDivEnd{}%
\def\pandocDisplayMath#1{\[#1\]}%
\def\pandocTable{\markdownRendererTable}%
%% Inline elements
\def\pandocEmph{\markdownRendererEmphasis}%
\def\pandocUnderline#1{#1}%
\def\pandocStrong{\markdownRendererStrongEmphasis}%
\def\pandocStrikeout#1{#1}%
\def\pandocSubscript#1{#1}%
\def\pandocSuperscript#1{#1}%
\def\pandocSmallCaps#1{#1}%
\def\pandocSingleQuoted#1{`#1'}%
\def\pandocDoubleQuoted#1{``#1''}%
\def\pandocCite{\markdownRendererCite}%
\def\pandocCode{\markdownRendererCodeSpan}%
\def\pandocLineBreak{\markdownRendererLineBreak}%
\def\pandocInlineMath#1{$#1$}%
\ExplSyntaxOn
\cs_new:Npn
\pandocRawInline
#1 #2
{
\tl_if_eq:nnT
{ #1 }
{ tex }
{ #2 }
}
\ExplSyntaxOff
\def\pandocLink#1#2#3#4{\markdownRendererLink{#1}{#2}{#3}{#4}}
\def\pandocImage#1#2#3#4{\markdownRendererImage{#1}{#2}{#3}{#4}}
\def\pandocCaptionedImage#1#2#3#4{\markdownRendererImage{#1}{#2}{#3}{#4}}
\def\pandocNote#1{#1}%
\def\pandocSpan#1{#1}%
%% Special characters
\def\pandocAmpersand{\markdownRendererAmpersand}%
\def\pandocBackslash{\markdownRendererBackslash}%
\def\pandocCircumflex{\markdownRendererCircumflex}%
\def\pandocDollarSign{\markdownRendererDollarSign}%
\def\pandocHash{\markdownRendererHash}%
\def\pandocLeftBrace{\markdownRendererLeftBrace}%
\def\pandocPercentSign{\markdownRendererPercentSign}%
\def\pandocPipe{\markdownRendererPipe}%
\def\pandocRightBrace{\markdownRendererRightBrace}%
\def\pandocTilde{\markdownRendererTilde}%
\def\pandocUnderscore{\markdownRendererUnderscore}%