压缩章节编号而不重复参考文献中的章节编号

压缩章节编号而不重复参考文献中的章节编号

我想压缩参考文献中的章节数量,但不重复章节编号,同时保持和的全部hyperref功能\ref

\documentclass{book}

\usepackage{hyperref}
\usepackage{bookmark}

\begin{document}

\chapter{intro}
I want the hyperref functionallity and automated references of 
\ref{sec:chap3sec3}--\ref{sec:chap3sec5}; 
but the look of 3.3--5. 
\ref{sec:chap3sec3}--\hyperref[sec:chap3sec5]{5} does half of what I want, 
but I don't know how to get the section number without chapter number.

\chapter{two}
\chapter{three}
\section{chap3sec1}
\section{chap3sec2}
\section{chap3sec3}\label{sec:chap3sec3}
\section{chap3sec4}
\section{chap3sec5}\label{sec:chap3sec5}

\end{document}

我怎样才能做到这一点?

答案1

LaTeX 只存储完整的参考文献编号。要获取编号的章节部分,首先需要提取参考文献。然后可以删除第一个点之前的章节部分:

\usepackage{refcount}

\makeatletter
\newcommand*{\stripref}[1]{%
  \refused{#1}%
  \begingroup
    \edef\x{\getrefbykeydefault{#1}{}{\noexpand\textbf{??}}}%
    \hyperref[{#1}]{%
      \expandafter\stripref@aux\x.\@nil
    }%
  \endgroup
}
\def\stripref@aux#1.#2\@nil{%
  \ifx\\#2\\%
    #1%
  \else
    \stripref@dot#2\@nil
  \fi
}
\def\stripref@dot#1.\@nil{#1}
\makeatother

用法:\ref{sec:chap3sec3}--\stripref{sec:chap3sec5}

相关内容