#!/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)