目录:问题和解决方案的页码并排显示?

目录:问题和解决方案的页码并排显示?

《概率的一千次练习》(Grimmett,Stirzaker)一书有一个非常漂亮的目录:在此处输入图片描述

看起来,这本书只包含章节:首先,出现所有练习章节(包括部分),然后是相应的解决方案(具有相同的章节/部分结构)。我重置了章节编号(见下文)以反映这一点,但如何创建如上所示的目录?

这是一个基本模板:

\documentclass{scrbook}
\usepackage[american]{babel}

\begin{document}
\tableofcontents
\chapter{Chapter 1}
\section{Section 1}
\section{Section 2}
\section{Section 3}
\clearpage
\setcounter{chapter}{0}
\chapter{Solutions to Chapter 1}
\section{Solutions to Section 1}
\section{Solutions to Section 2}
\section{Solutions to Section 3}
\end{document}

答案1

有点老套,但结果令人满意...目前,仍需要手动为每个解决方案部分添加标签。如果这也能自动化就更好了。

\documentclass{scrbook}
\usepackage[american]{babel}
\usepackage{hyperref}

\usepackage{titletoc}

% {section}, [left], {above}, {before with label}, {before wo label},
% {filler and page}, [after]
\titlecontents{chapter}[1.5em]{\addvspace{1pc}\bfseries}{\contentslabel{1.2em}}{}
    {\hfill\contentspage\hspace{5.2em}\pageref{\thecontentslabel}\hspace*{-1.4em}}
\titlecontents{section}[4em]{\addvspace{0.1pc}}{\contentslabel{2.5em}}{}
    {\hfill\contentspage\hspace{6.1em}\hyperlink{\thecontentslabel}{\pageref{\thecontentslabel}}\hspace*{-1.6em}}
\newcommand{\sectionsol}[2]{\hypertarget{#2}{\section{#1}\label{#2}}}

\begin{document}
\tableofcontents
\addtocontents{toc}{\hfill Questions\hspace{1em}Solutions\par}

% Exercises
\chapter{Chapter 1}
\section{Section 1}
\section{Section 2}
\section{Section 3}

% Solutions
\setcounter{chapter}{0}
\addtocontents{toc}{\setcounter{tocdepth}{-1}}% removes all toc entries of after this line
\chapter{Solutions to Chapter 1}\label{1}
\sectionsol{Solutions to Section 1}{1.1}
\sectionsol{Solutions to Section 2}{1.2}
\sectionsol{Solutions to Section 3}{1.3}
\setcounter{tocdepth}{2}% display contents (down to subsections) in toc again

\end{document}

在此处输入图片描述

从此行删除所有级别的目录条目。如果您希望附录等内容出现在此行之后的目录中,则必须将此行为改回。

总的来说,这个想法是重新定义目录的格式。手动添加对章节标签的交叉引用。然后手动添加标签。不过,肯定有更优雅的方式来做到这一点。

编辑:为包添加了手动修复hyperref。手动添加 ahypertarget是通过新的 defined\sectionsol命令,它定义了目标和标签。最后,hyperlink在 toc 中添加 a ,它指向超目标。

编辑:复制了 Marius Hofert 调整后的解决方案,该解决方案具有更好的间距。并保存它以备出现更好的解决方案时使用。

使用mathtools包时\setcounter时,宏必须受到保护。请参阅此答案以了解更多详细信息。

答案2

正如我在评论中提到的,QStar 建议的解决方案存在问题。由于我没有收到他的回复,所以我又提出了一个问题。请参阅这里更重要的是这里(德语)寻求解决方案。

相关内容