在某些印刷惯例中,页面范围会缩短以节省空间,例如,写成“1234-35”或甚至“1234-5”而不是“1234-1235”。我希望\pageref{foo}--\pageref{bar}
自动缩短为其中任何一种格式。
我从以下答案中得知
参考页码范围:LaTeX 可以将“3-4”转换为第 4f 页,或者将“3-5”转换为第 3ff 页吗?应该varioref
可以做到这一点,但让 Martin Scharrer 的定制适应我的问题,老实说,这超出了我的理解范围。
我怎样才能做到这一点?
或者我忽略了另一个可以开箱即用的软件包?
答案1
由于没有人接受,我尝试了以下方法,使用了上面提到的 Martin Scharrer 的示例。欢迎改进!
注释掉第一个条件会导致“1234-35”格式。
\documentclass[a3paper]{scrartcl}
\usepackage{varioref}
\makeatletter
\newcommand*{\vrefabbr}[2]{%
\begingroup
\vrefpagenum\@tempa{#1}%
\vrefpagenum\@tempb{#2}%
\if ?\@tempa\else
\if ?\@tempb\else
\ifx\@tempa\@tempb
\@tempa%
\else
\ifnum\@tempa>\@tempb\relax
\let\@tempc\@tempb
\let\@tempb\@tempa
\let\@tempa\@tempc
\fi
\ifnum\numexpr(\@tempa-5)/10= \numexpr(\@tempb-5)/10\relax
\@tempa --\the\numexpr\@tempb-(\@tempb-5)/10*10\relax
\else
\ifnum\numexpr(\@tempa-50)/100= \numexpr(\@tempb-50)/100\relax
\@tempa --\the\numexpr\@tempb-(\@tempb-50)/100*100\relax
\else
\ifnum\numexpr(\@tempa-500)/1000= \numexpr(\@tempb-500)/1000\relax
\@tempa --\the\numexpr\@tempb-(\@tempb-500)/1000*1000\relax
\else
\@tempa --\@tempb%
\fi
\fi
\fi
\fi
\fi
\fi
\endgroup
}
\makeatother
\begin{document}
ix--x: \vrefabbr{ix}{x}
ix--xiv: \vrefabbr{ix}{xiv}
xi--xiv: \vrefabbr{xi}{xiv}
xi--xv: \vrefabbr{xi}{xv}
xi--xvi: \vrefabbr{xi}{xvi}
xi--xii: \vrefabbr{xi}{xii}
xii--xiii: \vrefabbr{xii}{xiii}
xiii--xii: \vrefabbr{xiii}{xii}
xi--xi: \vrefabbr{xi}{xi}
xiii--xvi: \vrefabbr{xiii}{xvi}
xiii--xx: \vrefabbr{xiii}{xx}
xx--xxi: \vrefabbr{xx}{xxi}
xx--xxii: \vrefabbr{xx}{xxii}
xi--xxi: \vrefabbr{xi}{xxi}
xi--xx: \vrefabbr{xi}{xx}
cxix--cxvi: \vrefabbr{cxix}{cxvi}
cxix--cxii: \vrefabbr{cxix}{cxxii}
cxii--cxiii: \vrefabbr{cxii}{cxiii}
cxiii--cxii: \vrefabbr{cxiii}{cxxii}
cxi--cxi: \vrefabbr{cxi}{cxi}
cxiii--cxvi: \vrefabbr{cxiii}{cxvi}
cxiii--cxx: \vrefabbr{cxiii}{cxx}
cxx--cxxi: \vrefabbr{cxx}{cxxi}
cxx--cxxii: \vrefabbr{cxx}{cxxii}
cxi--cxxi: \vrefabbr{cxi}{cxxi}
cxi--cxx: \vrefabbr{cxi}{cxx}
cxi--cxxii: \vrefabbr{cxi}{cxxii}
mcxi--mcxvi: \vrefabbr{mcxi}{mcxvi}
mcxi--mcxii: \vrefabbr{mcxi}{mcxii}
mcxii--mcxiii: \vrefabbr{mcxii}{mcxiii}
mcxiii--mcxii: \vrefabbr{mcxiii}{mcxii}
mcxi--mcxi: \vrefabbr{mcxi}{mcxi}
mcxiii--mcxvi: \vrefabbr{mcxiii}{mcxvi}
mcxiii--mcxx: \vrefabbr{mcxiii}{mcxx}
mcxx--mcxxi: \vrefabbr{mcxx}{mcxxi}
mcxx--mcxxii: \vrefabbr{mcxx}{mcxxii}
mcxi--mcxxi: \vrefabbr{mcxi}{mcxxi}
mcxi--mcxx: \vrefabbr{mcxi}{mcxx}
mcxi--mcxxii: \vrefabbr{mcxi}{mcxxii}
cxi--mcxxii: \vrefabbr{cxi}{mcxxii}
cxi--mcxxii: \vrefabbr{cxi}{mcxxii}
xi--mcxxii: \vrefabbr{xi}{mcxxii}
ix--mcxxii: \vrefabbr{ix}{mcxxii}
mccxxxiv--mccxxxv \vrefabbr{mccxxxiv}{mccxxxv}
\setcounter{page}{9}
\section{}\label{ix}\newpage
\section{}\label{x}\newpage
\section{}\label{xi}\newpage
\section{}\label{xii}\newpage
\section{}\label{xiii}\newpage
\section{}\label{xiv}\newpage
\section{}\label{xv}\newpage
\section{}\label{xvi}\newpage
\section{}\label{xvii}\newpage
\section{}\label{xviii}\newpage
\section{}\label{xix}\newpage
\section{}\label{xx}\newpage
\section{}\label{xxi}\newpage
\section{}\label{xxii}\newpage
\setcounter{page}{111}
\section{}\label{cxi}\newpage
\section{}\label{cxii}\newpage
\section{}\label{cxiii}\newpage
\section{}\label{cxiv}\newpage
\section{}\label{cxv}\newpage
\section{}\label{cxvi}\newpage
\section{}\label{cxvii}\newpage
\section{}\label{cxviii}\newpage
\section{}\label{cxix}\newpage
\section{}\label{cxx}\newpage
\section{}\label{cxxi}\newpage
\section{}\label{cxxii}\newpage
\setcounter{page}{1111}
\section{}\label{mcxi}\newpage
\section{}\label{mcxii}\newpage
\section{}\label{mcxiii}\newpage
\section{}\label{mcxiv}\newpage
\section{}\label{mcxv}\newpage
\section{}\label{mcxvi}\newpage
\section{}\label{mcxvii}\newpage
\section{}\label{mcxviii}\newpage
\section{}\label{mcxix}\newpage
\section{}\label{mcxx}\newpage
\section{}\label{mcxxi}\newpage
\section{}\label{mcxxii}\newpage
\setcounter{page}{1234}
\section{}\label{mccxxxiv}\newpage
\section{}\label{mccxxxv}\newpage
\end{document}