Skip to content

Commit e4b5939

Browse files
committed
import PR mity/md4c#284
1 parent 1b8e1a8 commit e4b5939

File tree

3 files changed

+28
-5
lines changed

3 files changed

+28
-5
lines changed

lib/markdown.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include "ejudge/xalloc.h"
1919

2020
#include "md4c/md4c-html.h"
21+
#include "md4c/src/md4c-html.h"
2122

2223
#include <stdio.h>
2324
#include <stdlib.h>
@@ -62,7 +63,7 @@ markdown_parse(
6263
fhtml = open_memstream(&bhtml, &zhtml);
6364
if (!fhtml) goto done;
6465
unsigned parser_flags = MD_FLAG_LATEXMATHSPANS;
65-
unsigned renderer_flags = MD_HTML_FLAG_SKIP_UTF8_BOM;
66+
unsigned renderer_flags = MD_HTML_FLAG_SKIP_UTF8_BOM | MD_HTML_FLAG_MATHJAX;
6667
if (md_html(bmem, zmem, output_func, fhtml, parser_flags, renderer_flags) < 0) {
6768
goto done;
6869
}

md4c/src/md4c-html.c

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -460,8 +460,18 @@ enter_span_callback(MD_SPANTYPE type, void* detail, void* userdata)
460460
case MD_SPAN_IMG: render_open_img_span(r, (MD_SPAN_IMG_DETAIL*) detail); break;
461461
case MD_SPAN_CODE: RENDER_VERBATIM(r, "<code>"); break;
462462
case MD_SPAN_DEL: RENDER_VERBATIM(r, "<del>"); break;
463-
case MD_SPAN_LATEXMATH: RENDER_VERBATIM(r, "<x-equation>"); break;
464-
case MD_SPAN_LATEXMATH_DISPLAY: RENDER_VERBATIM(r, "<x-equation type=\"display\">"); break;
463+
case MD_SPAN_LATEXMATH:
464+
if (r->flags & MD_HTML_FLAG_MATHJAX) {
465+
if (r->flags & MD_HTML_FLAG_MATHJAX_USE_DOLLAR) RENDER_VERBATIM(r, "$");
466+
else RENDER_VERBATIM(r, "\\(");
467+
} else RENDER_VERBATIM(r, "<x-equation>");
468+
break;
469+
case MD_SPAN_LATEXMATH_DISPLAY:
470+
if (r->flags & MD_HTML_FLAG_MATHJAX) {
471+
if (r->flags & MD_HTML_FLAG_MATHJAX_USE_DOLLAR) RENDER_VERBATIM(r, "$$");
472+
else RENDER_VERBATIM(r, "\\[");
473+
} else RENDER_VERBATIM(r, "<x-equation type=\"display\">");
474+
break;
465475
case MD_SPAN_WIKILINK: render_open_wikilink_span(r, (MD_SPAN_WIKILINK_DETAIL*) detail); break;
466476
}
467477

@@ -486,8 +496,18 @@ leave_span_callback(MD_SPANTYPE type, void* detail, void* userdata)
486496
case MD_SPAN_IMG: render_close_img_span(r, (MD_SPAN_IMG_DETAIL*) detail); break;
487497
case MD_SPAN_CODE: RENDER_VERBATIM(r, "</code>"); break;
488498
case MD_SPAN_DEL: RENDER_VERBATIM(r, "</del>"); break;
489-
case MD_SPAN_LATEXMATH: /*fall through*/
490-
case MD_SPAN_LATEXMATH_DISPLAY: RENDER_VERBATIM(r, "</x-equation>"); break;
499+
case MD_SPAN_LATEXMATH:
500+
if (r->flags & MD_HTML_FLAG_MATHJAX) {
501+
if (r->flags & MD_HTML_FLAG_MATHJAX_USE_DOLLAR) RENDER_VERBATIM(r, "$");
502+
else RENDER_VERBATIM(r, "\\)");
503+
} else RENDER_VERBATIM(r, "</x-equation>");
504+
break;
505+
case MD_SPAN_LATEXMATH_DISPLAY:
506+
if (r->flags & MD_HTML_FLAG_MATHJAX) {
507+
if (r->flags & MD_HTML_FLAG_MATHJAX_USE_DOLLAR) RENDER_VERBATIM(r, "$$");
508+
else RENDER_VERBATIM(r, "\\]");
509+
} else RENDER_VERBATIM(r, "</x-equation>");
510+
break;
491511
case MD_SPAN_WIKILINK: RENDER_VERBATIM(r, "</x-wikilink>"); break;
492512
}
493513

md4c/src/md4c-html.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@
3838
#define MD_HTML_FLAG_VERBATIM_ENTITIES 0x0002
3939
#define MD_HTML_FLAG_SKIP_UTF8_BOM 0x0004
4040
#define MD_HTML_FLAG_XHTML 0x0008
41+
#define MD_HTML_FLAG_MATHJAX 0x1000
42+
#define MD_HTML_FLAG_MATHJAX_USE_DOLLAR 0x2000
4143

4244

4345
/* Render Markdown into HTML.

0 commit comments

Comments
 (0)