review
review copied to clipboard
Page Media Moduleの脚注HTML表現モードを追加する?
Re:VIEWのEPUBからVivliostyleに変換する方法で制作しているユーザーから脚注の取り扱いについての質問があり、いったんはモンキーパッチで対応していました。 VivliostyleというかCSS Paged Media Moduleにおいては、脚注を分離した形ではなく参照位置内にspanで入れるようになっています。 https://www.w3.org/TR/css-gcpm-3/#footnotes
もともと類似のことはIDGXMLビルダがそうで、現在のRe:VIEW実装であればfootnoteメソッドを空にしてinline_fnメソッドでspan脚注を書き出すだけなので実装は容易です。inline_footnoteみたいなフラグで切り替える処理を入れることになるのかなと思います。
reファイル
paragraph@<fn>{f1}……
//footnote[f1][notetext……]
通常の脚注HTML
<p>paragraph<a id="fnb-f1" href="#fn-f1" class="noteref" epub:type="noteref">*1</a>……</p>
<div class="footnote" epub:type="footnote" id="fn-f1"><p class="footnote">[*1] notetext……</p></div>
Vivliostyleが期待する脚注HTML
<p>paragraph<span class="footnote">notetext……</span>……</p>
モンキーパッチreview-ext.rb
module ReVIEW
module HTMLBuilderOverride
def footnote(id, str)
end
def inline_fn(id)
%Q(<span class="footnote">#{compile_inline(@chapter.footnote(id).content.strip)}</span>)
rescue KeyError
app_error "unknown footnote: #{id}"
end
end
class HTMLBuilder
prepend HTMLBuilderOverride
end
end
これはどうするのがいいんでしょうね。
- 設定でなんとかする?
- インライン記法を別に用意する?
脚注という意図は変わらないのでインライン記法を別に、はしづらいですね。
- 設定で挙動分岐?
- Vivliostyleビルダを追加? EPUB生成までがセットなので結局epubmakerもいじらないといけなくなる
と考えると、HTMLBuilder内で設定で分けるのが無難そうかなぁという見立てです。