review icon indicating copy to clipboard operation
review copied to clipboard

Page Media Moduleの脚注HTML表現モードを追加する?

Open kmuto opened this issue 3 months ago • 2 comments

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

kmuto avatar Sep 03 '25 13:09 kmuto

これはどうするのがいいんでしょうね。

  • 設定でなんとかする?
  • インライン記法を別に用意する?

takahashim avatar Sep 04 '25 11:09 takahashim

脚注という意図は変わらないのでインライン記法を別に、はしづらいですね。

  • 設定で挙動分岐?
  • Vivliostyleビルダを追加? EPUB生成までがセットなので結局epubmakerもいじらないといけなくなる

と考えると、HTMLBuilder内で設定で分けるのが無難そうかなぁという見立てです。

kmuto avatar Sep 05 '25 13:09 kmuto