引用其他章节时无需使用 \label 章节号

引用其他章节时无需使用 \label 章节号

简而言之,我需要重新编码目录,因为我打算包含一个简短的介绍或摘要,说明本章的内容。当然,如果已经为此目的构建了一个包,那也很好。

\begin{enumerate}
  \item \Nameref{<chapter-number>} \hfill \Pageref{<chapter-number>}
        This chapter is about blah.
\end{enumerate}

但是,我不想不断地给书的每一章贴标签,然后一遍又一遍地回头更新。

\Nameref是否有上述和命令的代码\Pageref(其功能类似于\nameref和,\pageref但直接引用章节编号)?

答案1

具有自动标签生成和相关计数器的版本helpchapter\label注入后\refstepcounter{chapter}带有前缀helpchapter:

该宏\DisplayEnumTocLine{Foo}使用enumi计数器并撤回名称和页面引用等\nameref{helpchapter:\number\value{enumi}}。强制参数的内容显示为描述文本。

带星号的版本\DisplayEnumTocLine不会为名称和页面引用生成超链接,示例显示了两个版本的用法。

(注意:这个xassoccnt包在这里并不是真正必要的,但它简化了helpchapter这里的自动步进)。

\documentclass{book}

\usepackage{enumitem}
\usepackage{xassoccnt}

\newcounter{helpchapter}
\DeclareAssociatedCounters{chapter}{helpchapter}

\usepackage{xpatch}

\makeatletter
\xpatchcmd{\@chapter}{%
  \refstepcounter{chapter}%
}{%
  \refstepcounter{chapter}%
  \label{helpchapter:\number\value{helpchapter}}%
}{}{}

\NewDocumentCommand{\DisplayEnumTocLine}{sO{helpchapter:}+m}{%
  \IfBooleanTF{#1}{%
    \nameref*{#2\number\value{enumi}} \hfill  \pageref*{#2\number\value{enumi}}% 
  }{%
    \nameref{#2\number\value{enumi}} \hfill  \pageref{#2\number\value{enumi}}% 
  }%

  #3%
}


\makeatother

\usepackage{hyperref}

\usepackage{blindtext}



\begin{document}

\begin{enumerate}
\item \DisplayEnumTocLine{A foo chapter}
\item \DisplayEnumTocLine*{\blindtext} 
\end{enumerate}

\chapter{Foo chapter}

\chapter{Other chapter}



\end{document}

在此处输入图片描述

答案2

您可以将其他信息添加到目录中:

\documentclass{book}

\newcommand*{\addchapterinfo}[1]{%
  \addcontentsline{toc}{chapterinfo}{#1}%
}
\makeatletter
\newcommand{\l@chapterinfo}[2]{%
  \begingroup
    \leftskip 1.5em% same as \l@chapter uses
    \noindent #1\par
  \endgroup
  \addvspace{.5\baselineskip}% add additional vertical space  
}
\makeatother

\usepackage{mwe}

\begin{document}
\tableofcontents
\chapter{First Chapter}
\addchapterinfo{This is additional text for the chapter entry}
\lipsum

\chapter{Second Chapter}
\addchapterinfo{\blindtext}
\lipsum[1]
\section{First Section in Second Chapter}
\lipsum

\end{document}

包含附加章节信息和部分的目录

如果您不喜欢目录中的章节条目,请使用\setcounter{tocdepth}{0}。这将导致:

包含附加章节信息但没有章节的目录

相关内容