2020年7月29日

Issue 64の3は,とりあえず次のようにすると期待通りに動く.

\edef\jlreq@do{
  \unexpanded{\def\@footnotemark#1}{\unexpanded{}%
    \unexpanded{\setbox\@tempboxa}=\noexpand\hbox{\expandonce{\@footnotemark{#1}}}%
    \unexpanded{%
      \@tempdima=\wd\@tempboxa
      \ifjlreqadjustreferencemark
        \jlreq@savepos@for@rest@linewidth
        \ifdim\jlreq@current@linewidth<\wd\@tempboxa
          \@tempdima=\jlreq@current@linewidth
        \fi
      \fi
      \setbox\jlreq@tempboxb=\hbox{阿}%
      \setbox\jlreq@tempboxa=\hbox to\z@{\hskip-\@tempdima\raise\dimexpr\ht\jlreq@tempboxb + \dp\@tempboxa\relax\box\@tempboxa\hss}%
      \dp\jlreq@tempboxa=0pt
      \ht\jlreq@tempboxa=0pt
      \box\jlreq@tempboxa
    }%
  }
}
\jlreq@do
\def\@makefnmark{{\scriptsize\@thefnmark}}

hyperrefは\@footnotemarkを書き換えて,<リンク開始>\@makefnmark<リンク終了>みたいになるみたいで,この\@makefnmarkの前後を基準にリンクをはる.しかしinterlinear時は\@makefnmarkは負の\hskipが入っているので,\@makefnmarkの開始時の位置と合印の見た目上の位置がずれる,ということのようだ.なので,上のように\@makefnmarkを単純なものにして,リンクの入った結果の出てくる\@footnotemarkの全体を前に戻すようにすればよい.

んーでも合印の見た目上の出力は\@makefnmarkに入れるべきで,\@footnotemarkに入れるのはどうなんだ.しかもこのやり方だと,他パッケージより後に\@footnotemarkを書き換えないとならない.他パッケージを優先させるためにこの手の書き換えはクラスファイル読み込み時にしかやらないようにしているんだよなぁ.

0 件のコメント:

コメントを投稿

コメントの追加にはサードパーティーCookieの許可が必要です