可变章节参考

可变章节参考

我希望像varioref这样排版某些参考文献:如果我在第 2 章中引用第 3 章,我希望输出看起来像“...在下一章中---”而不是“...在第 3 章第 XXX 页...”,对于章节、部分等也类似。

是否有人知道这样的包或者我该如何进行调整varioref以满足我的需要?

答案1

您可以尝试以下选项,使用smartref包裹。我们首先通过\addtoreflist{chapter}定义宏的调用

\sgetchapterval{<macro>}{<lab>}

它将与标签关联的章节计数器的值存储<lab>在 中<macro>。然后,使用一些\ifthenelse语句(由 提供)xifthen),我们判断该章节的引用是否是以前的或者下一个章节。否则,我们默认为varioref参考使用\vref

在此处输入图片描述

\documentclass{book}
\usepackage{smartref}% http://ctan.org/pkg/smartref
\usepackage{varioref}% http://ctan.org/pkg/varioref
\usepackage{xifthen}% http://ctan.org/pkg/xifthen
\addtoreflist{chapter}% Provides chapter counter extraction
\newcounter{mychap}% Additional chapter counter

\newcommand{\chapref}[1]{%
  \sgetchapterval{\themychap}{#1}% Save chapter counter from reference in \themychap
  \setcounter{mychap}{\value{chapter}}%
  \addtocounter{mychap}{1}% Next chapter
  \ifthenelse{\equal{\mychap}{\themychap}}%
    {the next chapter}%
    {\addtocounter{mychap}{-2}% Previous chapter
     \ifthenelse{\equal{\mychap}{\themychap}}%
       {the previous chapter}%
       {Chapter~\vref{#1}}%
    }%
}%
\begin{document}
\chapter{First chapter} \label{chap:first}
See Chapter~\vref{chap:second} and Chapter~\vref{chap:last}. See \chapref{chap:second} or \chapref{chap:last}.
\chapter{Second chapter} \label{chap:second}
\chapter{Last chapter} \label{chap:last}
See Chapter~\vref{chap:second} and Chapter~\vref{chap:first}. See \chapref{chap:second} or \chapref{chap:first}.
\end{document}

我确信你可以根据自己的喜好对此进行微调。

相关内容