From: Fletcher T. Penney Date: Thu, 12 Oct 2017 18:39:03 +0000 (-0400) Subject: FIXED: Fix math markers in code spans X-Git-Tag: 6.2.2^2~2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=275fae56338e02555ed142d98bed8f6b56c7f284;p=multimarkdown FIXED: Fix math markers in code spans --- diff --git a/Sources/libMultiMarkdown/html.c b/Sources/libMultiMarkdown/html.c index 156f333..c2549d3 100644 --- a/Sources/libMultiMarkdown/html.c +++ b/Sources/libMultiMarkdown/html.c @@ -1816,7 +1816,7 @@ parse_citation: case PAIR_MATH: print_const(""); - mmd_export_token_tree_html_raw(out, source, t->child, scratch); + mmd_export_token_tree_html_math(out, source, t->child, scratch); print_const(""); break; @@ -2076,11 +2076,11 @@ void mmd_export_token_html_raw(DString * out, const char * source, token * t, sc break; case MATH_BRACKET_OPEN: - print_const("\\["); + print_const("\\\\["); break; case MATH_BRACKET_CLOSE: - print_const("\\]"); + print_const("\\\\]"); break; case MATH_DOLLAR_SINGLE: @@ -2102,11 +2102,11 @@ void mmd_export_token_html_raw(DString * out, const char * source, token * t, sc break; case MATH_PAREN_OPEN: - print_const("\\("); + print_const("\\\\("); break; case MATH_PAREN_CLOSE: - print_const("\\)"); + print_const("\\\\)"); break; case QUOTE_DOUBLE: @@ -2133,6 +2133,35 @@ void mmd_export_token_html_raw(DString * out, const char * source, token * t, sc } +void mmd_export_token_html_math(DString * out, const char * source, token * t, scratch_pad * scratch) { + if (t == NULL) { + return; + } + + switch (t->type) { + case MATH_BRACKET_OPEN: + print_const("\\["); + break; + + case MATH_BRACKET_CLOSE: + print_const("\\]"); + break; + + case MATH_PAREN_OPEN: + print_const("\\("); + break; + + case MATH_PAREN_CLOSE: + print_const("\\)"); + break; + + default: + mmd_export_token_html_raw(out, source, t, scratch); + break; + } +} + + void mmd_start_complete_html(DString * out, const char * source, scratch_pad * scratch) { meta * m; @@ -2246,6 +2275,19 @@ void mmd_export_token_tree_html_raw(DString * out, const char * source, token * } +void mmd_export_token_tree_html_math(DString * out, const char * source, token * t, scratch_pad * scratch) { + while (t != NULL) { + if (scratch->skip_token) { + scratch->skip_token--; + } else { + mmd_export_token_html_math(out, source, t, scratch); + } + + t = t->next; + } +} + + void mmd_export_footnote_list_html(DString * out, const char * source, scratch_pad * scratch) { if (scratch->used_footnotes->size > 0) { footnote * note; diff --git a/Sources/libMultiMarkdown/html.h b/Sources/libMultiMarkdown/html.h index 39a4b74..26386bf 100644 --- a/Sources/libMultiMarkdown/html.h +++ b/Sources/libMultiMarkdown/html.h @@ -66,6 +66,7 @@ void mmd_export_token_tree_html(DString * out, const char * source, token * t, s void mmd_export_token_html_raw(DString * out, const char * source, token * t, scratch_pad * scratch); void mmd_export_token_tree_html_raw(DString * out, const char * source, token * t, scratch_pad * scratch); +void mmd_export_token_tree_html_math(DString * out, const char * source, token * t, scratch_pad * scratch); void mmd_export_citation_list_html(DString * out, const char * source, scratch_pad * scratch); void mmd_export_footnote_list_html(DString * out, const char * source, scratch_pad * scratch); diff --git a/Sources/libMultiMarkdown/latex.c b/Sources/libMultiMarkdown/latex.c index 6b31942..389f686 100644 --- a/Sources/libMultiMarkdown/latex.c +++ b/Sources/libMultiMarkdown/latex.c @@ -2132,6 +2132,14 @@ void mmd_export_token_latex_tt(DString * out, const char * source, token * t, sc t->next->type = TEXT_EMPTY; } + case MATH_BRACKET_OPEN: + case MATH_BRACKET_CLOSE: + case MATH_PAREN_OPEN: + case MATH_PAREN_CLOSE: + print_const("\\textbackslash{}\\textbackslash{}"); + print_char(source[t->start + 2]); + break; + case TEXT_EMPTY: break; diff --git a/tests/MMD6Tests/Escapes.fodt b/tests/MMD6Tests/Escapes.fodt index 031e3c4..1f74fb9 100644 --- a/tests/MMD6Tests/Escapes.fodt +++ b/tests/MMD6Tests/Escapes.fodt @@ -367,6 +367,8 @@ office:mimetype="application/vnd.oasis.opendocument.text"> `foo` foo bar + +\\[foo] diff --git a/tests/MMD6Tests/Escapes.html b/tests/MMD6Tests/Escapes.html index 6c6d413..562ce77 100644 --- a/tests/MMD6Tests/Escapes.html +++ b/tests/MMD6Tests/Escapes.html @@ -101,6 +101,8 @@

foo bar

+

\\[foo]

+ diff --git a/tests/MMD6Tests/Escapes.htmlc b/tests/MMD6Tests/Escapes.htmlc index 8a55c6f..313e257 100644 --- a/tests/MMD6Tests/Escapes.htmlc +++ b/tests/MMD6Tests/Escapes.htmlc @@ -95,3 +95,5 @@ latex config: article

`foo`

foo bar

+ +

\\[foo]

diff --git a/tests/MMD6Tests/Escapes.tex b/tests/MMD6Tests/Escapes.tex index c54321e..fc3cb3e 100644 --- a/tests/MMD6Tests/Escapes.tex +++ b/tests/MMD6Tests/Escapes.tex @@ -98,5 +98,7 @@ $>$ foo~bar +\texttt{\textbackslash{}\textbackslash{}[foo]} + \input{mmd6-article-footer} \end{document} diff --git a/tests/MMD6Tests/Escapes.text b/tests/MMD6Tests/Escapes.text index a5c49cf..1d55629 100644 --- a/tests/MMD6Tests/Escapes.text +++ b/tests/MMD6Tests/Escapes.text @@ -94,3 +94,5 @@ latex config: article \`foo\` foo\ bar + +`\\[foo]`