From 274dba9e77b186b298d1b042694049022db778b9 Mon Sep 17 00:00:00 2001 From: Michael Park Date: Tue, 11 Jun 2019 17:05:00 -0700 Subject: [PATCH] Implemented embedded Markdown for inline code. This is not committed due to https://github.com/jgm/pandoc/issues/5574. --- data/filter/wg21.py | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/data/filter/wg21.py b/data/filter/wg21.py index 2e4ee1e..11d1045 100755 --- a/data/filter/wg21.py +++ b/data/filter/wg21.py @@ -258,7 +258,7 @@ def build_row(elems): return pf.Table(*rows, **kwargs) def codeblock(elem, doc): - if not isinstance(elem, pf.CodeBlock): + if not isinstance(elem, pf.Code) and not isinstance(elem, pf.CodeBlock): return None if not elem.classes: @@ -271,7 +271,7 @@ def codeblock(elem, doc): syntaxdir = os.path.join(datadir, 'syntax') text = pf.convert_text( - elem, + pf.Plain(elem) if isinstance(elem, pf.Code) else elem, input_format='panflute', output_format=doc.format, extra_args=[ @@ -289,7 +289,8 @@ def repl(match_obj): # Undo `escapeLaTeX` from https://github.com/jgm/skylighting match = match.replace('\\textbackslash{}', '\\') \ .replace('\\{', '{') \ - .replace('\\}', '}') + .replace('\\}', '}') \ + .replace('\\VerbBar{}', '|') plain = pf.Plain(*pf.convert_text(match)[0].content) return pf.convert_text( @@ -297,17 +298,24 @@ def repl(match_obj): input_format='panflute', output_format=doc.format) - result = pf.RawBlock(escape_span.sub(repl, text), doc.format) + if isinstance(elem, pf.Code): + result = pf.RawInline(escape_span.sub(repl, text), doc.format) + elif isinstance(elem, pf.CodeBlock): + result = pf.RawBlock(escape_span.sub(repl, text), doc.format) if 'diff' not in elem.classes: return result # For HTML, this is handled via CSS in `data/template/wg21.html`. command = '\\renewcommand{{\\{}}}[1]{{\\textcolor[HTML]{{{}}}{{#1}}}}' - return pf.Div( - pf.RawBlock(command.format('VariableTok', doc.get_metadata('addcolor')), 'latex'), - pf.RawBlock(command.format('StringTok', doc.get_metadata('rmcolor')), 'latex'), - result) + + add = command.format('VariableTok', doc.get_metadata('addcolor')) + rm = command.format('StringTok', doc.get_metadata('rmcolor')) + + if isinstance(elem, pf.Code): + return pf.Span(pf.RawInline(add, 'latex'), pf.RawInline(rm, 'latex'), result) + elif isinstance(elem, pf.CodeBlock): + return pf.Div(pf.RawBlock(add, 'latex'), pf.RawBlock(rm, 'latex'), result) def bibliography(elem, doc): if not isinstance(elem, pf.Div) or elem.identifier != 'bibliography':