带破折号的章节参考范围

带破折号的章节参考范围

在我的文档中,我引用了句子中的一串章节。一个有代表性的例子是:

I am referencing Sections \ref{A}, \ref{B}, \ref{C}.

然后会出现如下结果:

I am referencing Sections 6.1, 6.2, 6.3.

我怎样才能让它显示:

I am referencing Sections 6.1-3

无需进行硬编码?

答案1

使用cleveref您可以压缩范围并使用\crefstripprefix(该包的最新版本),您可以从参考范围中删除通用前缀:

\documentclass{book}
\usepackage{cleveref}

\crefrangelabelformat{section}{#3#1#4--#5\crefstripprefix{#1}{#2}#6}

\begin{document}

\setcounter{chapter}{5}
\chapter{Test chapter}

As we see in \cref{sec:testa,sec:testb,sec:testc}...

\section{Test section}
\label{sec:testa}
\section{Test section}
\label{sec:testc}
\section{Test section}
\label{sec:testb}

\end{document}

在此处输入图片描述

使用\crefrangelabelformat您可以自定义一系列参考的格式。它的语法如下:

\crefrangelabelformat{<type>}{<format>}

第一个参数指定<type>将定制的引用;对于第二个参数,cleveref文档解释道:

该参数应包含六个参数:#1#2#3#4#5#6。前两个(#1#2)是定义引用范围的两个标签计数器的格式化版本。接下来的两个(#3#4)表示第一个引用的超链接的开始和结束,最后两个(#5#6)表示第二个引用的超链接。超链接参数必须按顺序出现。

\crefstripprefix只是从范围的第二部分删除前缀(在本例中是章节号)。

下面是一个增强的示例,其中前缀已被删除,以便交叉引用部分、小节和方程式的范围:

\documentclass{book}
\usepackage{cleveref}

\crefrangelabelformat{section}{#3#1#4--#5\crefstripprefix{#1}{#2}#6}
\crefrangelabelformat{subsection}{#3#1#4--#5\crefstripprefix{#1}{#2}#6}
\crefrangelabelformat{equation}{(#3#1#4--#5\crefstripprefix{#1}{#2}#6)}

\begin{document}

\setcounter{chapter}{5}
\chapter{Test chapter}

As we see in \cref{sec:testa,sec:testb,sec:testc}...

As we see in \cref{ssec:testa,ssec:testb,ssec:testc}...

As we see in \cref{equ:testa,equ:testb,equ:testc}...

\section{Test section}
\begin{equation}
\label{equ:testa}
a = b.
\end{equation}
\begin{equation}
\label{equ:testb}
a = b.
\end{equation}
\begin{equation}
\label{equ:testc}
a = b.
\end{equation}
\label{sec:testa}
\section{Test section}
\label{sec:testc}
\subsection{Test ssubection}
\label{ssec:testa}
\subsection{Test ssubection}
\label{ssec:testb}
\subsection{Test ssubection}
\label{ssec:testc}
\section{Test section}
\label{sec:testb}

\end{document}

在此处输入图片描述

相关内容