昨日のつづき
caption付けられるようになりますか?ということで、出来ました。
あと、Pandoc 側で用意されていたList用の関数に一部置き換えています(コメントアウトしているところが以前の記述)
入力ファイルはこんな感じ。Div
記法にcaption=キャプション文字列
を追加しただけです。それ以外は前回と同じなので説明を割愛。
# Test
This is a test document for including csv as a table format by using Div and lua filter.
::: {.csv file=iris.csv caption="This is a Iris table"}
This is dummy text
:::
これを処理するコードは以下のようになります。
function Div(e) if e.attr.classes:includes("csv", 1) then -- if e.attr.classes[1] == "csv" then filename = e.attr.attributes.file local f = assert(io.open(filename, "r")) local t = f:read("*all") f:close() local document = pandoc.read(t, "csv") pandoc_table = document.blocks[1] if e.attr.attributes["caption"] ~= nil then --pandoc_table.caption.insert(pandoc_table.caption, pandoc.Str(e.attr.attributes.caption)) pandoc_table.caption:insert(pandoc.Str(e.attr.attributes.caption)) end return(pandoc_table) end
Table
はちょっとデータ構造が複雑なので厄介ですが、基本的にはLuaのtableの操作なので慣れてくるとそんなに難しくないかなと。captionの文字列は途中に空白文字が入る場合は全体を""
で囲ってあげましょう(これは普通の場合もそう)
出力結果はこんな感じになりました。ちゃんとcaptionがついていますね。良かったよかった。