jlreq
jlreq copied to clipboard
\backmatter以降はhyperref packageによる章の参照が効かない
状況
Option bookをtureにして、hyperrefをつかい、LuaLaTeXでコンパイルすると、 \backmatte以降の章の参照先が目次、しおりともにずれる。
環境
LuaHBTeX, Version 1.16.0 (TeX Live 2023) jlreq 2023-03-05 2023-04-20 v7.00w
再現用コード
\documentclass[book]{jlreq}
\usepackage[
unicode=ture,
pdfusetitle=ture,
bookmarks=true,
]{hyperref}
\title{タイトル}
\author{著者}
\begin{document}
\frontmatter
\maketitle
\tableofcontents
\chapter{はじめに}
\mainmatter
\chapter{テストA}
\chapter{テストB}
\chapter{テストC}
\appendix
\chapter{テストD}
\backmatter
\chapter{おわりに}
この章へのリンクが機能しないようです。
目次やしおりで「おわりに」をクリックすると、
テストDへとんでしまいます。
\end{document}
ありがとうございます.hyperrefはchapter
カウンタの値をリンク先にしているようなのですが,
- jlreqのデフォルトでは
\backmatter
で採番するのをやめるようにしているので,この値が増加しない(\refstepcounter
が呼び出されない)
というのが原因のようです.では採番するようにすればよいのかというとそうでもなく,\frontmatter
でchapter
カウンタをリセットしているので結局\fontmatter
前後の\chapter
ではchapter
カウンタはどちらも1となっていて,結局かぶってしまうのでやぱり失敗します.
ちょっと困ってしまいました.hyperrefパッケージは\@chapter
の方経由でもリンクを挟み込むということもしているように見えるのでそちらでどうにかならないか考えてみます.
(個人的メモ:\@makechapterhead
を内部で呼び出していないということに起因してパッケージが機能しないということもあった.)
ありがとうございます。
jlreqのデフォルトでは\backmatterで採番するのをやめるようにしているので,この値が増加しない(\refstepcounterが呼び出されない)
なるほどそういうことだったのですね。
なお、美しくないwork aroundですが、pandocでmarkdown-auto_identifiers拡張をONにしたときのように、
\hypertarget{おわりに}{%
\chapter{おわりに}\label{おわりに}}
とすればとりあえず目次としおりが正しく機能することは確認しました。
どうやら調べてみるとhyperref packageはあんまりお行儀がよくないようですね。 TeX wikiでも
「書籍の原稿」といった、「最終的な組版を書き手自身がやるのではない」文書の場合には、hyperref パッケージをはじめとする、お行儀の悪い(=LaTeX の内部処理をあちこち書き換える)パッケージは決して使用しないでください
どまでいわれていて驚きました。
また、\refstepcounterを上書きしたときのアンカーがテキスト要素とみなされてしまい、ページ先頭であってもページ先頭だとはみなされなくなり、\vspace によるマージンが入ってしまうというQiitaの記事を見つけました。
https://qiita.com/kauplan/items/2b404d770a905c38082e
(この記事ではほかにも、ものすごく苦言を呈されていますが……。)
こんにちは。
TeX Live 2024では、状況が少し変わっているようです。
- LuaHBTex 1.18.0 (TeX Live 2024)
- jlreq 2024/02/16 ( \listfiles コマンドの実行結果 )
Issueでのやりとりを参考にワークアラウンドを使ってみましたが、「はじめに」「おわりに」へは正しくジャンプしません。念のため英語も使ってみましたが同じ状況です。
\documentclass[book]{jlreq}
\usepackage[
unicode=ture,
pdfusetitle=ture,
bookmarks=true,
]{hyperref}
\listfiles
\title{タイトル}
\author{著者}
\begin{document}
\frontmatter
\maketitle
\tableofcontents
\hypertarget{はじめに}{
\chapter{はじめに}\label{はじめに}}
\hypertarget{Preface}{
\chapter{Preface}\label{Preface}}
\mainmatter
\chapter{テストA}
\chapter{テストB}
\chapter{テストC}
\appendix
\chapter{テストD}
\backmatter
\hypertarget{おわりに}{%
\chapter{おわりに}\label{おわりに}}
この章へのリンクが機能しないようです。
目次やしおりで「おわりに」をクリックすると、
テストDへとんでしまいます。
\hypertarget{Authornote}{
\chapter{Authornote}\label{Authornote}}
英語の章題にしてもリンクは機能していません。
\end{document}