#!/usr/bin/env python3 """ オリジナルは https://github.com/jgm/pandocfilters/blob/master/examples/latexdivs.py 改変: * latex="true" を使わない * class の最初のものが特定のワードのとき、latexdivs-(ワード) を環境名とする * ただし center, right, left のときは、center, flushright, flushleft を環境名とする * class の最初のものが latex (または latexdivs)のとき、その次の class を (latexdivs- を付けずそのまま) 環境名とする e.g.
...
will becomes \begin{note}...\end{note} 参考: Pandoc's Markdown の ::: (コロン3つ)の使い方 * コロン3つのあとは「単語1つのみ」または波括弧に入れる * 波括弧に入れるクラス名はピリオドを付ける 正 ::: right ::: {.latex .quotation} ::: {#idlabel .latex .quotation} 誤 ::: latex right ::: latex {.right} ::: {latex quotation} 不具合: * 入れ子に対応していない """ from pandocfilters import toJSONFilter, RawBlock, Div def latex(x): return RawBlock('latex', x) def latexdivs(key, value, format, meta): available = ["latex", "latexdivs", "center", "right", "flushright", "left", "flushleft", "date", "to", "from", "subject", "title", "append", "end"] if key == 'Div': [[ident, classes, kvs], contents] = value if format == "latex": if ident == "": label = "" else: label = '\\label{' + ident + '}' if classes[0] in available: if classes[0] == "latex" or classes[0] == "latexdivs": classes.pop(0) elif classes[0] == "right": classes[0] = "flushright" elif classes[0] == "left": classes[0] = "flushleft" elif classes[0] == "center": classes[0] = "center" else: classes[0] = "latexdivs-" + classes[0] return([latex('\\begin{' + classes[0] + '}' + label)] + contents + [latex('\\end{' + classes[0] + '}')]) if __name__ == "__main__": toJSONFilter(latexdivs)