我希望像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}
我确信你可以根据自己的喜好对此进行微调。