除了頁面之外或代替頁面引用跑步者的目錄

除了頁面之外或代替頁面引用跑步者的目錄

我正在使用該類jurabook,我想更改目錄的行為。 jurabook提供了讓跑者對段落進行編號的可能性。這些跑者提供比頁面更具體的參考。

我希望目錄顯示對跑步者的引用而不是頁面,或者除了對頁面的引用之外更好。是否可以相應地更改目錄的行為?

這是使用 jurabook 和 runner 的文檔的最小範例。

\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

這是一種方法。

注意:此解決方案的一個弱點是,即使某個部分不包含\rn,它仍然會(在目錄中)關聯到與前面\rn加 1 的值相對應的跑步者值。

在此輸入影像描述

\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}

另一種方法(由 David Carlisle 提出)使用 etex 算術來避免分配新的計數器:

\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}

相關內容