コード読んだけどまだよくわかってない。
HRはそもそもBlock要素なんですが、ParaなどのBlock要素は正しくBlockQuote中に取り込まれるので、段落要素であることが原因ではないとはわかっていますが、コード見てもまだよくわかってません。docx形式で出力する、水平線がブロック引用(>
ではじまる行)内に収まらないという問題です。
--to native
すれば正しくHRがBQ中にあることは見えるので、Writer依存であることは確認できますね。
んで、あとは生成されたdocxを解凍して、中身のタグを見て、これをluaフィルタで置き換える形で対応すればよいという事で、昨日プロトタイプを書いた。
ここでいっか。これでいけるよ。
— niszet (@niszet0) 2020年10月18日
function Span(e)
if e.classes:find("hr", 0) then
tag = '<w:pict><v:rect style="width:0;height:1.5pt" o:hralign="center" o:hrstd="t" o:hr="t" /></w:pict>'
e = pandoc.RawInline('openxml', tag)
end
return e
end
このあとK4氏の返信見て、それもできるじゃんってことでもう一個かいた。
出来たね。2本目のhrも同じようになった
— niszet (@niszet0) 2020年10月18日
function HorizontalRule(e)
tag = '<w:pict><v:rect style="width:0;height:1.5pt" o:hralign="center" o:hrstd="t" o:hr="t" /></w:pict>'
return pandoc.Para(pandoc.RawInline('openxml', tag))
end pic.twitter.com/vcYMQeQ0x4
いずれ気が向いたときにPandoc/lua-filterにPR出します。