jlreq
jlreq copied to clipboard
[TeXQA:3859] jlreq で hyperref の \nameref を使いたい
[TeXQA:3859] jlreq で hyperref の \nameref を使いたい https://okumuralab.org/tex/mod/forum/discuss.php?d=3859
は、現状のhyperrefパッケージの実装に場当たり的に習うと、\jlreq@BlockHeading@start@iiに\NR@gettitle{<running heading>}を入れることになりそうですが…、nameref側の実装が変わったらめんどいので、\@part, \@spart, \@chapter, \@schapter, \@ssectの柱文字列だけの互換性だけ作っとけば良さそうな気もします。
%#!lualatex --synctex=1 d3859
\documentclass[luatex,article]{jlreq}
\usepackage[unicode]{hyperref}
\makeatletter
\@ifpackageloaded{nameref}{%
\let\clone@jlreq@BlockHeading@start@ii\jlreq@BlockHeading@start@ii
\long\def\jlreq@BlockHeading@start@ii#1#2#3#4#5#6#7#8{%
\NR@gettitle{#5}\clone@jlreq@BlockHeading@start@ii{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}%
}
}{}
\makeatother
\begin{document}
\section{test1}
\label{sec:test1}
節の名前を参照しています。 \ref{sec:test2} の「\nameref{sec:test2}」と \ref{sec:test3} の「\nameref{sec:test3}」です。
節の名前を参照しています。 \ref{sec:日本語のラベル} の「\nameref{sec:日本語のラベル}」です。
\section{test2 は日本語を含む節の名前}
\label{sec:test2}
\section{test3}
\label{sec:test3}
節の名前を参照しています。 \ref{sec:test1} の「\nameref{sec:test1}」と \ref{sec:test2} の「\nameref{sec:test2}」です。
\section{test4}
\label{sec:日本語のラベル}
\end{document}