niszetの日記

細かい情報を載せていくブログ

(Pandoc) Raw記法で各フォーマットが受け付けるFORMATの文字列

穴埋め記事だよ?

この記事は Pandoc Advent Calendar 2019 の3日目が空いているので小ネタを入れていこうというつもりで作った記事ですが、22日、本日も空いているので22日に入れることにしました。

Pandoc Advent Calendar 2019 はこちらから行けます。

adventar.org

過不足と条件付きが結構あるので注意。

さて、本題。Pandoc's Native ASTにはRawInlineRawBlockという要素があり、これらは出力ファイル形式の文法で書かれたコードをそのまま出力ファイルに埋め込むことが出来る便利な要素です。出力ファイル形式以外だと内容は無視されるので、docxように書いたコードとhtml用に書いたコードを入れておいても大丈夫…のはずです。Markdownの記法はマニュアルを読んで欲しいですが、Codeのようにバッククォートで囲った文字列の直後に{=FORMAT}の形で置きます。

pandoc.org

…なのですが、docxで出力するときはopenxmlを要求されるなど、正直言って自明ではありません。そしてマニュアルにも記載がありません。仕方がないのでWriterのコードを読んでそれらしき記述を抜き出しました。PandocのWriterって書き方が統一されていないので単純にgrepで持ってこれるものではなくて目視grepとなりました。

そのため、抜け漏れがあるかもしれません。あと、過剰なのもあるかも。

また、いくつかのファイル形式ではraw_htmlraw_texの拡張が必要な場合があります。また、それらの動作が完全に一致するかという問題もあります(すべて未検証)。TeXやHTMLの仲間ではなく、自身のフォーマット名と異なるものは要注意です。

また、とあるファイル形式ではRawBlockRawInlineのどちらかのみが存在、というのもありました(失念)

さらに、ファイル形式によってはRaw記法がないものがあります。

また、表中ではファイル形式名(-tで指定するもの)ではなく、Writerのファイル名となっています。tidyな表じゃないですが、ご容赦を。

Writer format1 format2 format3 format4 format5 format6
AsciiDoc.hs asciidoc
CommonMark.hs html latex tex markdown
ConTeXt.hs context tex
Docbook.hs docbook html
Docx.hs openxml
DokuWiki.hs dokuwiki html
EPUB.hs html
FB2.hs fb2
HTML.hs html latex tex html5 html4
Haddock.hs haddock
ICML.hs icml
Ipynb.hs html revealjs latex markdown rst ipynb
JATS.hs jats
Jira.hs jira
LaTeX.hs latex tex beamer
Man.hs man
Markdown.hs markdown html html5 html4 latex tex
MediaWiki.hs mediawiki html
Ms.hs ms
Muse.hs
Native.hs
ODT.hs opendocument
Org.hs latex tex org html
Powerpoint.hs openxml
RST.hs rst tex latex
RTF.hs rtf
Roff.hs
TEI.hs tei
Texinfo.hs texinfo tex latex
Textile.hs html textile latex tex
XWiki.hs xwiki
ZimWiki.hs zimwiki html

いずれちゃんと情報整備したいですが、ひとまず公開します。