niszetの日記

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

(Pandoc) デフォルトファイルの項目名を突き合わせる作業

コードを読むのが一番。

Pandoc 2.8からデフォルト設定をまとめたファイルを扱うことが出来るようになりました。これについては去年のアドカレにてsky_y氏ががっつりまとめていますのでそちらを参照してください。

qiita.com

しかし、この記事でも言われていますが、項目名がオプション名と必ずしも一致していないということなので、調べました。具体的には現時点のソースコードgrepして目検しながらエクセルに貼りつけるお仕事です。仕事じゃないのに何故こんな苦行を私は…?

今後のことも考えると自動化しておくと良さそうですね。

ソースコードについて、オプション周りはこの辺りで処理してそうです。

github.com

また、コマンドラインオプションはこの辺りで処理しているので、これを見ました。

github.com

コマンドラインからの入力できるオプションとデフォルトファイルのキー名について列挙した表は次のようになります。違いがある箇所はコメントをつけています。また、個別にサブオプションがあったりしますが、これは公式のマニュアル中にある、デフォルトファイルの記述例を見てみてください。実際にはこれらの追加のオプションは元々のコマンドで省略可能なオプションを明示的につけるときの挙動のようですので、サブ項目があるかどうかは各オプションの説明を見てみてください。デフォルトファイルの記述例と対比して確認すればわかると思います(確認が面倒なので投げました

また、上記のとおり目視でチェックしているので、抜け漏れや間違いもあるかもしれません。何か気づいたらご連絡ください。一応抜き取りでいくつかはソースコード上で一致を確認していますが、実際に動作して確認したわけではありません。

補足として、cmd側でNoteとして書いてあるものは、対応するキー名が表の下部にあります。また、Noteと書かれている項目はデフォルトファイル中の項目にのみだけ現れます。例えばinput-fileがそうです。

省略記法 cmd入力1 cmd入力2 ファイルのキー1 ファイルのキー2 コメント
fr from read from reader read/readerで違いあり
tw to write to writer write/writerで違いあり
o output output-file output/output-fileで違いあり
data-dir data-dir
M metadata metadata
metadata-file metadata-file metadata-files 単数形はリストでなくても良い。
d defaults このファイルを指定するオプションなので対応する記述はない
file-scope file-scope
s standalone standalone
template template
V variable variables コマンドラインと単複が異なる
wrap wrap
ascii ascii
toc table-of-contents toc table-of-contents
toc-depth toc-depth
N number-sections number-sections
number-offset number-offset
top-level-division top-level-division
extract-media extract-media
resource-path resource-path
H include-in-header include-in-header
B include-before-body include-before-body
A include-after-body include-after-body
no-highlight スタイルにnoneを当てればよいのか?要調査
highlight-style highlight-style
syntax-definition syntax-definition syntax-definitions 単数形はリストでなくても良い。
dpi dpi
eol eol
columns columns
p preserve-tabs preserve-tabs
tab-stop tab-stop
pdf-engine pdf-engine
pdf-engine-opt pdf-engine-opt pdf-engine-opts 単数形はリストでなくても良い。
reference-doc reference-doc
self-contained self-contained
request-header request-headers コマンドラインと単複が異なる
abbreviations abbreviations
indented-code-classes indented-code-classes
default-image-extension default-image-extension
F filter filters コマンドラインと単複が異なる。typeとpathが子要素にある
L lua-filter 拡張子が.luaの場合に自動認識。
shift-heading-level-by shift-heading-level-by
track-changes track-changes
strip-comments strip-comments
reference-links reference-links
reference-location reference-location
atx-headers atx-headers
listings listings
i incremental incremental
slide-level slide-level
section-divs section-divs
html-q-tags html-q-tags
email-obfuscation email-obfuscation
id-prefix identifier-prefix コマンドラインと名前が異なる
T title-prefix title-prefix
c css css
epub-subdirectory epub-subdirectory
epub-cover-image epub-cover-image
epub-metadata epub-metadata
epub-embed-font epub-fonts コマンドラインと単複が異なる
epub-chapter-level epub-chapter-level
ipynb-output ipynb-output
bibliography bibliography
csl csl
citation-abbreviations ファイルにはないが、別の記法で対応できる。
natbib *Note4
biblatex *Note4
mathml *Note3
webtex *Note3
mathjax *Note3
katex *Note3
gladtex *Note3
trace trace
dump-args dump-args
ignore-args ignore-args
verbose *Note5
quiet *Note5
fail-if-warnings fail-if-warnings
log log-file
bash-completion ファイル側にはない
list-input-formats ファイル側にはない
list-output-formats ファイル側にはない
list-extensions ファイル側にはない
list-highlight-languages ファイル側にはない
list-highlight-styles ファイル側にはない
D print-default-template ファイル側にはない
print-default-data-file ファイル側にはない
print-highlight-style ファイル側にはない
v version ファイル側にはない
h help ファイル側にはない
*Note1 input-file input-files 入力ファイル名はコマンドライン上ではオプションナシ
*Note2 strip-empty-paragraphs deprecated Optionなのになぜか指定できる。"+empty_paragraphs" のextensionで使うべき。
*Note3 html-math-method plain, webtex, gladtex, mathml, mathjax, katex。Urlも指定できる。
*Note4 cite-method citeproc, natbib, or biblatex
*Note5 verbosity ERROR, WARNING, or INFO
補足 オプション名のあとに[=***]の形で指定が出来るものはデフォルトファイル中でもその名前で値の設定が可能