ページに加えて、またはページの代わりにランナーを参照するための目次

ページに加えて、またはページの代わりにランナーを参照するための目次

私は クラスを使用しておりjurabook、目次の動作を変更したいと考えています。 は、 jurabook段落に番号を付けるランナーを持つ可能性を提供します。 これらのランナーは、ページよりも具体的な参照を提供します。

目次にページではなくランナーへの参照を表示したいのですが、ページへの参照に加えてさらに良い方法があります。それに応じて目次の動作を変更することは可能ですか?

以下は、jurabook とランナーを使用したドキュメントの最小限の例です。

\documentclass[compact,a5paper,12pt]{jurabook}
\usepackage[a5paper, left=1.5cm, right=1.5cm, top=2cm, bottom=1.5cm]{geometry}

\newcommand{\lorem}{\rn{Lorem} ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

}

\begin{document}

\tableofcontents

\chapter{Chapter}
\section{Test}
\lorem
\lorem
\section{Test 2}
\lorem
\lorem
\lorem
\section{Test 3}
\lorem
\lorem
\section{Test 4}
\lorem
\lorem
\end{document}

編集:

ご回答ありがとうございます。最小限の例であればうまくいきます。しかし、より広い範囲に適用するには問題があります。

hyperref パッケージを含めると、ソリューションは機能しません。タイプセッティングでエラーが発生します。

どの数字がどの数字なのかを示したい場合、テキストはページからはみ出てしまいます。たとえば、次のコードを使用します。

\def\addcontentsline#1#2#3{%
  \addtocontents{#1}{%
     \protect\contentsline{#2}{#3}{page \thepage\ (runner \the\numexpr\value{runner}+1\relax)}}}%

答え1

これを実行する方法の 1 つを次に示します。

注意: このソリューションの弱点の 1 つは、セクションに が含まれていない場合でも\rn、前のランナー値に 1 を加えた値に対応するランナー値に (toc 内で) 関連付けられることです\rn

ここに画像の説明を入力してください

\documentclass[compact,a5paper,12pt]{jurabook}
\usepackage[a5paper, left=1.5cm, right=1.5cm, top=2cm, bottom=1.5cm]{geometry}
\usepackage{titletoc}

\newcounter{runnerplusone}

\renewcommand\addcontentsline[3]{%
    \setcounter{runnerplusone}{\value{runner}}%
    \addtocounter{runnerplusone}{1}%
    \addtocontents{#1}{%
    \protect\contentsline{#2}{#3}{\thepage\ (\therunnerplusone)}}}


\newcommand{\lorem}{\rn{Lorem} ipsum dolor sit amet, consetetur sadipscing elitr,
sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At
vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,
no sea takimata sanctus est Lorem ipsum dolor sit amet.
}

\begin{document}
\tableofcontents
\chapter{Chapter}
\section{Test}
\lorem
\lorem 
\section{Test 2}
\lorem
\lorem
\lorem
\section{Test 3}
\lorem
\lorem
\section{Test 4}
\lorem
\lorem
\end{document}

新しいカウンターの割り当てを避けるためにetex演算を使用する代替案(David Carlisleによって提案)は、

\def\addcontentsline#1#2#3{%
  \addtocontents{#1}{%
     \protect\contentsline{#2}{#3}{\thepage\ (\the\numexpr\value{runner}+1\relax)}}}

編集: 上記の解決策は、hyperrefがロードされると機能しなくなります。この問題を回避するために、egreg は次のことを提案しました。

\documentclass[compact,a5paper,12pt]{jurabook}
\usepackage[a5paper, left=1.5cm, right=1.5cm, top=2cm, bottom=1.5cm]{geometry}
\usepackage{titletoc}
\usepackage{xpatch}
\usepackage{hyperref}

\xpatchcmd\addcontentsline{\thepage}{\thepage\ (\the\numexpr\value{runner}+1\relax)}{}{}

\newcommand{\lorem}{\rn{Lorem} ipsum dolor sit amet, consetetur sadipscing elitr,
sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At
vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,
no sea takimata sanctus est Lorem ipsum dolor sit amet.
}

\begin{document}
\tableofcontents
\chapter{Chapter}
\section{Test}
\lorem
\lorem 
\section{Test 2}
\lorem
\lorem
\lorem
\section{Test 3}
\lorem
\lorem
\section{Test 4}
\lorem
\lorem
\end{document}

関連情報