参考章节编号

参考章节编号

我正在写一本有多个章节的书(如果相关的话,分为不同的部分)。章节是编号的。我想要一种方法将章节名称转换为章节编号,在我的文本中的其他地方。也就是说,我想说“参见第 4 章,其中深入介绍了魔法”。负责深入介绍魔法的章节可能会在编辑过程中发生变化:我希望章节编号随之自动更改。我不想只引用名称。我正在使用 LaTeX 的章节自动编号功能。这可能吗?

\documentclass[12pt,a4paper]{book}
\usepackage[latin1]{inputenc}
\begin{document}
\chapter{Sample 1}
    This is covered in more detail in Chapter X.
\chapter{Sample 2}
\end{document}

答案1

LaTeX 提供了这种现成的交叉引用方案。将其放在\label{<label>}可以引用的计数器(如章节、节、小节、定理等)后面,并在其他地方使用它\ref{<label>}。这将仅返回计数器编号,而不会返回任何其他内容:

在此处输入图片描述

\documentclass[openany]{book}
\usepackage[paper=a6paper]{geometry}% Just for this example
\usepackage{xparse,nameref}
\NewDocumentCommand{\chapref}{s m}{Chapter~\ref{#2}\IfBooleanF{#1}{ \nameref{#2}}}
\begin{document}
\chapter{Sample 1}\label{ch:first}
This is covered in more detail in \chapref*{ch:second}. Also see~\ref{ch:second}.

\chapter{Sample 2}\label{ch:second}
This is covered in more detail in \chapref{ch:first}. Also see~\ref{ch:first}.
\end{document}

上面的例子\label在每个 之后设置了 s \chapter。它们是使用 引用的\ref{<label>},这显然只是返回章节编号。然而,加上nameref我们也可以抓住章节标题,将其引用为。和 的\nameref{<label>}组合包含在我定义为 的内容中,这转化为。 后者取决于您是否使用/不使用星号。\ref\nameref\chaprefChapter~\ref{<label>} \nameref{<label>}\nameref\chapref*

上述示例可以通过以下方式实现完整功能:hyperref,提供文档间超链接。

该选项[openany]只是为了使这两个章节适合放在后续页面,而不需要在您的文档中。

答案2

作为 Werner 代码的替代方案,您还可以使用其中一个软件包来自动设置此功能。fancyrefcleveref是我想到的两个。例如:

\documentclass[openany]{book}
\usepackage[paper=a6paper]{geometry}% Just for this example
\usepackage{fancyref}
\begin{document}
\chapter{Sample 1}\label{chap:first}
This is covered in more detail in \fref{chap:second}. Also see~\ref{chap:second}. \Fref{chap:second} covers this in excruciating detail.

\chapter{Sample 2}\label{chap:second}
This is covered in more detail in \fref{chap:first}. Also see~\ref{chap:first}. \Fref{chap:first} covers this in more detail.
\end{document}

使用 <code>fancyref</code> 的引用

请注意,如果标签中使用了前缀,chapter则会自动添加,并且会产生大写和非大写的输出。(我相信这可以进一步自动化,但我自己没有用过它。)chap\Fref\frefcleveref

相关内容