脚注・後注番号の順番がMakerによって変わる
概要
脚注(footnote)および後注(endnote)で、採番の順序がMakerによって異なるようです。
- 本文での参照
@<fn>/@<endnote>の登場順に採番される:pdf - 注の中身
//footnote,//endnoteの登場順に採番される:web, idgxml, epub, text
本文での参照と注の中身の順序が一致している限りは問題ありませんが、両者の並び順が食い違う.reファイルでは、想定と異なる注番号が振られることがありえます。 (例: PDFで出力を確認してからEPUBやInDesignに移ると、番号が思っていたものと違う)
環境
- Review 5.5.0
review-init直後のプロジェクト- テスト用Re:VIEWファイル
= Footnote Order Test
body1-footnote1 @<fn>{body1-footnote1}
body2-footnote3 @<fn>{body2-footnote3}
body3-footnote2 @<fn>{body3-footnote2}
//footnote[body1-footnote1][body1-footnote1]
//footnote[body3-footnote2][body3-footnote2]
//footnote[body2-footnote3][body2-footnote3]
= Endnote Order Test
body1-endnote1 @<endnote>{body1-endnote1}
body2-endnote3 @<endnote>{body2-endnote3}
body3-endnote2 @<endnote>{body3-endnote2}
//endnote[body1-endnote1][body1-endnote1]
//endnote[body3-endnote2][body3-endnote2]
//endnote[body2-endnote3][body2-endnote3]
== Endnotes
//printendnotes
期待する出力
Builderによらず、注番号の並び順が一致する
実際の出力
5種類のMakerでテストした結果の一部です(初めendnoteだけの問題と思っていたのでendnoteの結果中心です。footnoteでも同様の結果でした)。
本文での@<endnote>の登場順に番号が振られました。
Text
//endnoteの登場順に番号が振られました。
■H1■第1章 Endnote Order Test
body1-endnote1 【後注1】
body2-endnote3 【後注3】
body3-endnote2 【後注2】
■H2■1.1 Endnotes
◆→開始:後注←◆
【後注1】body1-endnote1
【後注2】body3-endnote2
【後注3】body2-endnote3
◆→終了:後注←◆
InDesign XML
//endnoteの登場順に番号が振られました。
<?xml version="1.0" encoding="UTF-8"?>
<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/">
<title aid:pstyle="h1">第1章 Endnote Order Test</title>
<?dtp level="1" section="第1章 Endnote Order Test"?>
<p>body1-endnote1 <span type='endnoteref' idref='endnoteb-body1-endnote1'>(1)</span></p>
<p>body2-endnote3 <span type='endnoteref' idref='endnoteb-body2-endnote3'>(3)</span></p>
<p>body3-endnote2 <span type='endnoteref' idref='endnoteb-body3-endnote2'>(2)</span></p>
<title aid:pstyle="h2">1.1 Endnotes</title>
<?dtp level="2" section="1.1 Endnotes"?>
<endnotes>
<endnote id='endnoteb-body1-endnote1'><span type='endnotenumber'>(1)</span> body1-endnote1</endnote>
<endnote id='endnoteb-body3-endnote2'><span type='endnotenumber'>(2)</span> body3-endnote2</endnote>
<endnote id='endnoteb-body2-endnote3'><span type='endnotenumber'>(3)</span> body2-endnote3</endnote>
</endnotes>
</doc>
考えられる対処
A. Makerによらず注番号の振り方を統一する
本文での参照
@<fn>/@<endnote>の登場順に採番される:pdf 注の中身//footnote,//endnoteの登場順に採番される:web, idgxml, epub, text
のいずれかの動作に統一されれば出力先による齟齬はなくなります。 本文中で注番号が連番になって欲しい場合が多いと考えられるので、これを行うとしたらPDF以外の4つをPDFと同じになるように修正することになるでしょうか?
B. 本文中の参照と注の中身で順番が違っていたら自動修正する、または警告する
過去のissuesを拝見している限り、注番号の振り方にはいろいろと難しい問題がありそうです。
本issueで上げた問題は、参照の登場順と注の中身の登場順が一致するよう.reファイルを修正すれば起こりません。
従って、もし番号を振る順番の修正ができない場合、生成中に内部で注の登場順を入れ替えてしまうか、「順番が違うため注番号が前後する可能性がある」という警告を出すことが考えられます。
はい、既知ではあるのですがだいぶ厄介な問題であります。 実はpdfmakerでもfootnotetextに展開せざるを得ない場所、たとえば見出しやキャプションあたりに入れた場合だと、順序違いのfootnoteを入れられたときに、やはりさまざまに変なことが起きます。
ということで、対処Aは結局pdfmakerも正しくはなく、なんとかするのもかなり難しいのでこの線でがんばるのは厳しいですね。 対処Bについては、「登場順を入れ替える」はfootnote等は章末に必ずまとめるルールではない(段落間あちこちに入る書き方をしているものも多い)ので、順序を差し替えるのはやはり不可能です。ということで「順番が違うため前後する可能性がある」を警告する(※前後移動させるフロート図表のときもあるので一概にエラーにはできない)という方向が妥当そうではあるのですが、実装をどうしたらいいか悩んでいます。参照側と定義側それぞれ位置情報(参照側は行だけでなく列位置も)を持たせてひととおり通した後に解析、みたいなことにしないといけない気がしますが、だいぶ大掛かりになりそう。