仲間が増えたよ!
掲題のとおり、Pandoc 2.9.2 で 入力ファイル形式にcsvが追加されました。
https://pandoc.org/releases.html#pandoc-2.9.2-2020-02-15
他にも変更点多々ありますが、ひとまずcsvファイルを入力にしたときの挙動を見ておきます。
とりあえずcsvファイルを準備。irisデータで。
write.csv(head(iris), "iris.csv")
Markdownへの変換
とりあえずMarkdown形式へ変換してみます。入力ファイル形式csv
を指定し、markdown
形式へ先のcsvファイルを変換します。
pandoc -f csv -t markdown iris.csv
結果は以下の通り。
Sepal.Length Sepal.Width Petal.Length Petal.Width Species --- -------------- ------------- -------------- ------------- --------- 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa
これで、Markdownの面倒くさい表形式への変換がPandocだけでも出来ることがわかりました。
とはいえ、これは全体がcsv
であるファイルを単一のmarkdown
ファイルに変換しているだけなので、
Markdownファイル中でcsv
ファイルを取り込むといったことは(まだ)できません。
もちろん内部でPandocを呼び出して上記変換を行って結合すればよいですが、たとえばR Markdownであればそもそもその言語で処理を書けばよいということになるので…。
Pandoc's ASTへの変換時点でTable
形式となっている
Pandocのデータ構造も確認しておきます。
pandoc -f csv -t native iris.csv
結果は以下のように、Table
となっています。
[Table [] [AlignDefault,AlignDefault,AlignDefault,AlignDefault,AlignDefault,AlignDefault] [0.0,0.0,0.0,0.0 ,0.0,0.0] [[] ,[Plain [Str "Sepal.Length"]] ,[Plain [Str "Sepal.Width"]] ,[Plain [Str "Petal.Length"]] ,[Plain [Str "Petal.Width"]] ,[Plain [Str "Species"]]] [[[Plain [Str "1"]] ,[Plain [Str "5.1"]] ,[Plain [Str "3.5"]] ,[Plain [Str "1.4"]] ,[Plain [Str "0.2"]] ,[Plain [Str "setosa"]]] ,[Plain [Str "3"]] ,[Plain [Str "1.4"]] ,[Plain [Str "0.2"]] ,[Plain [Str "setosa"]]] ,[[Plain [Str "3"]] ,[Plain [Str "4.7"]] ,[Plain [Str "3.2"]] ,[Plain [Str "1.3"]] ,[Plain [Str "0.2"]] ,[Plain [Str "setosa"]]] ,[[Plain [Str "4"]] ,[Plain [Str "4.6"]] ,[Plain [Str "3.1"]] ,[Plain [Str "1.5"]] ,[Plain [Str "0.2"]] ,[Plain [Str "setosa"]]] ,[[Plain [Str "5"]] ,[Plain [Str "5"]] ,[Plain [Str "3.6"]] ,[Plain [Str "1.4"]] ,[Plain [Str "0.2"]] ,[Plain [Str "setosa"]]] ,[[Plain [Str "6"]] ,[Plain [Str "5.4"]] ,[Plain [Str "3.9"]] ,[Plain [Str "1.7"]] ,[Plain [Str "0.4"]] ,[Plain [Str "setosa"]]]]]
この結果から、csvのReaderは従来からあるTable形式を返しているだけということがわかり、Pandocのフィルタをこのあとに書く場合はTable
を受ける仕様でないといけない、ということがわかりますね。
現状のPandoc's MarkdownのTableの仕様そのものに不満がある場合はその不満点はそのまま残るということになります。
まとめ
- Pandoc 2.9.2からcsvファイル形式を入力ファイル形式に指定することが出来る
- このとき、単一のcsvファイルを指定したファイル形式の表形式として出力できる(表形式が出力できるファイル形式なら何でも問題なし。
docx
形式でも対応可能) - 中間表現として、PandocのNative ASTは
Table
となっている。そのため、従来のPandocのTable
の表現力によって制限される。フィルタを書く場合は対象はTable
とすること。 - その他、オプションやファイルの取り込みは未調査。
以上です。