niszetの日記

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

(Pandoc) -sをつけると-t nativeでもMeta情報が出力される

基本かもしれないが…。

このIssueを見ていて気付いた。

github.com

これでMeta関係の調査がはかどります(大体終わってしまったけど)

2019/10/22 追記

具体例がなかったので。

たとえば、以下のように入力する 1

echo A | pandoc  -fmarkdown -tnative -s

と、以下のように出力される。echo A としているのは空だとエラーになってしまったため。

Pandoc (Meta {unMeta = fromList []})
[Para [Str "A"]]

Meta情報が完全に空の場合はこのようになる。なぜunMetaが出力される仕様なのかがわからないと言えばわからないが…。

複数行の入力をターミナルから直接行うのは大変なので、別途ファイルを作る。

---
title: aa
---

# hoge

fuga

これを同様に、以下のようにnative形式で表示する。

pandoc test.md -fmarkdown -tnative -s

すると、このように出力される。fromListの引数であるリスト内に、(Str, Meta [])のような形で 2 書かれるようだ。インライン要素の集まりとして定義されている。

Pandoc (Meta {unMeta = fromList [("title",MetaInlines [Str "aa"])]})
[Header 1 ("hoge",[],[]) [Str "hoge"]
,Para [Str "fuga"]]

メタ部分を

---
title: aa bb
author:
  - A
  - B
---

のように書き換えると次のようになる(メタ部分だけ抜粋)。

Pandoc (Meta {unMeta = fromList [("author",MetaList [MetaInlines [Str "A"],MetaInlines [Str "B"]]),("title",MetaInlines [Str "aa",Space,Str "bb"])]})

fromListに含まれるのはタプルのリストのまま変わらず、複数の要素をリストで含む場合はMetaListがそれぞれのMetaInlines []のリストの形で持つようになっている。MetaブロックであってもSpaceは有効である。つまりStrで検索してもマッチしない場合は空白文字を含む可能性を考慮すべきである。

…という風に結構メタ部分は読むのが少し大変になっている。もっと複雑な構造もあるが、それはまた別途記事にまとめよう…。


  1. 完全に余談だけど、-が1つのオプションはその値とつなげて書くことが出来る。--fromの場合はスペースを挟まないといけない。]

  2. この書き方不正確かもしれない。