texlive[46549] Master: cleveref (5feb18)
commits+karl at tug.org
commits+karl at tug.org
Mon Feb 5 22:55:40 CET 2018
Revision: 46549
http://tug.org/svn/texlive?view=revision&revision=46549
Author: karl
Date: 2018-02-05 22:55:39 +0100 (Mon, 05 Feb 2018)
Log Message:
-----------
cleveref (5feb18)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/cleveref/cleveref.pdf
trunk/Master/texmf-dist/source/latex/cleveref/cleveref.dtx
trunk/Master/texmf-dist/source/latex/cleveref/cleveref.ins
trunk/Master/texmf-dist/tex/latex/cleveref/cleveref.sty
trunk/Master/tlpkg/libexec/ctan2tds
Modified: trunk/Master/texmf-dist/doc/latex/cleveref/cleveref.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/source/latex/cleveref/cleveref.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/cleveref/cleveref.dtx 2018-02-05 12:35:05 UTC (rev 46548)
+++ trunk/Master/texmf-dist/source/latex/cleveref/cleveref.dtx 2018-02-05 21:55:39 UTC (rev 46549)
@@ -1,9 +1,9 @@
-\def\packagedate{2013/12/28}
-\def\packageversion{0.19}
+\def\packagedate{2017/07/10}
+\def\packageversion{0.21}
% \iffalse meta-comment
%
% Package 'cleveref' to use with LaTeX2e
-% Copyright 2006--2013 Toby Cubitt
+% Copyright 2006--2017 Toby Cubitt
%
% Written and maintained by Toby Cubitt
%
@@ -46,7 +46,7 @@
%</driver>
% \fi
%
-% \CheckSum{19622}
+% \CheckSum{19606}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
@@ -279,13 +279,47 @@
% \package{algorithm2e} + \package{hyperref} support.}
% \changes{v0.18.9}{2013/03/22}{Fixed regression that broke
% \option{nameinlink} option.}
-% \changes{v0.19}{2013/12/28}{Added \package{breqn} package support.
+% \changes{v0.19}{2013/12/28}{Added \package{breqn} package support.
% Remove unwanted spaces in some macros. Added abbreviation for
-% ``Abbildung'' to German translations. Added \package{xr-hyperref}
+% ``Abbildung'' to German translations. Added \package{xr-hyper}
% package support. Fixed bug in \package{amsmath} \textbackslash{}tag
% support. Added \textbackslash{}crefstripprefix utility macro and
% example usage. Added separate \texttt{subequation} cross-reference
% type.}
+% \changes{v0.19.1}{2014/08/14}{Fixed bug in \textbackslash{}labelcref
+% format customization. Fixed subtle \textbackslash{}varioref bug
+% caused by a stray \%. Fixed typo in Swedish translations. Fix
+% \textbackslash{}setcrefrange to use same test for matching reference
+% types \textbackslash{}cref at processgroup and
+% \textbackslash{}cref at processgroupall.}
+% \changes{v0.19.2}{2015/11/18}{Fixed compatibility with REFTeX
+% \textbackslash{}appendix* command. Added catalan language support.
+% Fix \textbackslash{}@bsphack/\textbackslash{}@esphack spacing issues
+% in \textbackslash{}label refefinitions. Fix \textbackslash{}crefalias
+% mechanism in \package{hyperref} support. Fix bugs in \package{breqn}
+% and \package{varioref} support. Ensure any undefined
+% \textbackslash{}labelcref formats for sub-types (subsections,
+% subequations etc.) are copied from parent types. (This fixes missing
+% brackets around \textbackslash{}labelcref subequation references.)}
+% \changes{v0.20}{2016/08/10}{Fix erroneous \%'s after
+% \textbackslash{}advance which broke \package{varioref} support.
+% Add \textbackslash{}cref at ifstreq utility macro for
+% catcode-independent string comparison.
+% Fix sorting of enum\meta{x} labels.}
+% \changes{v0.21}{2017/07/10}{Add \texttt{cref@} prefix to
+% \textbackslash{}gobble at optarg to avoid conflicts with other packages.
+% Compress away duplicate references in \textbackslash{}cref etc.\ just
+% as we already did for \textbackslash{}cpageref. Fix
+% \textbackslash{}cpageref error on non-arabic page numbers. Fix bug
+% that disabled warning on more than one reference type within a
+% \textbackslash{}labelcref. Refactor \textbackslash{}cpageref to use
+% same machinery as \textbackslash{}cref, treating different page
+% numbering schemes within a document as different page number
+% ``types''. Refactor and simplify main \textbackslash{}@cref macro.
+% Fix compatibility with newer IEEEtrantools versions. Fix subtle
+% bug in \package{amsmath}$+$\package{hyperref} subequations support,
+% which made hyperlinks point to wrong location in \emph{all} equations
+% following the first use of subequations in a document.}
%
% \GetFileInfo{cleveref.sty}
%
@@ -415,21 +449,21 @@
% it all out for you automaticaly.
%
% \package{Cleveref} supports a number of languages other than English,
-% and also supports the \package{babel} package for those languages.
-% Either pass the desired language as an option to \package{cleveref}, or
-% pass it as a global option to |\documentclass|. Note that if you're
-% writing in a language in which nouns decline, the |\cref| and
-% |\cpageref| commands may be less useful, as they always produce the
-% cross-reference name in the nominative case.\footnote{Providing
-% separate variants of the \package{cleveref} commands for each noun case
-% quickly becomes more cumbersome than just typing the cross-reference
-% name by hand. Trying to determine the appropriate case automatically
-% would be tantamount to solving the full natural-language processing
-% problem in \package{cleveref}. Check back in a century or so for this
-% feature.} In such languages, you may instead prefer to use the
-% |\labelcref| and |\labelcpageref| commands. Unlike |\cref| and
-% |\cpageref|, these don't produce the name in front of the
-% cross-reference, so you must supply it (in the appropriate case)
+% and also supports the \package{babel} and \package{polyglossia}
+% packages for those languages. Either pass the desired language as an
+% option to \package{cleveref}, or pass it as a global option to
+% |\documentclass|. Note that if you're writing in a language in which
+% nouns decline, the |\cref| and |\cpageref| commands may be less useful,
+% as they always produce the cross-reference name in the nominative
+% case.\footnote{Providing separate variants of the \package{cleveref}
+% commands for each noun case quickly becomes more cumbersome than just
+% typing the cross-reference name by hand. Trying to determine the
+% appropriate case automatically would be tantamount to solving the full
+% natural-language processing problem in \package{cleveref}. Check back
+% in a century or so for this feature.} In such languages, you may
+% instead prefer to use the |\labelcref| and |\labelcpageref| commands.
+% Unlike |\cref| and |\cpageref|, these don't produce the name in front
+% of the cross-reference, so you must supply it (in the appropriate case)
% yourself. But they do still cope with multi-references, so you still
% gain some benefit from using \package{cleveref}.
%
@@ -837,7 +871,7 @@
% hyperlink target than the others.
%
%
-% \subsection{Avoiding Abbreviations in Cross-Reference Names}
+% \subsection{Abbreviations in Cross-Reference Names}
% \label{sec:noabbrev}
% \DescribeMacro{noabbrev}
% The default cross-reference names for some languages use common
@@ -848,9 +882,19 @@
% abbreviations in the default cross-reference names, pass the
% \option{noabbrev} option to the \package{cleveref} package.
%
+% Note that the default names \emph{never} use abbreviations for the
+% start-of-sentence variants (|\Cref| etc.)
+% This is because in good written English (and likely other languages
+% too), abbreviations should never be used at the beginning of a
+% sentence. Many of \TeX{}'s default settings (e.g.\ page margins) are
+% specifically chosen to encourage good typesetting style.
+% \package{Cleveref} tried to follow the same philosophy. If despite this
+% you insist on using abbreviations at the start of sentences, you will
+% need to customise the start-of-sentence formats yourself.
%
%
%
+%
% \section{Customising the Cross-Reference Formats}
% \label{sec:customising}
% The \package{cleveref} package allows you to take full control of the
@@ -1414,12 +1458,17 @@
% the usual way, though not all languages are supported
% yet.\footnote{Contributions of translations for missing languages are
% very welcome! See \cref{sec:new-features} for information on how to
-% contribute translations.} The \package{babel} package is also supported
-% when it is loaded, allowing you to change the language used in
-% cross-references using the \package{babel} language switching commands,
-% such as |\selectlanguage| and |\foreignlanguage|. Similar support is
-% provided for the \package{polyglossia} babel replacement package.
+% contribute translations.} Basic \package{cleveref} language support
+% will work even if \package{babel} or \package{polyglossia} are not
+% loaded. The only exception currently is Catalan (which requires the
+% |\lgem| command provided by these packages).
%
+% The \package{babel} package is fully supported if it is loaded,
+% allowing you to change the language used in cross-references using the
+% \package{babel} language switching commands, such as |\selectlanguage|
+% and |\foreignlanguage|. Similar support is provided for the
+% \package{polyglossia} babel replacement package.
+%
% Note that when using \package{babel}, you still need to tell
% \package{cleveref} which language it should use for the default
% cross-reference formats. It is \emph{not} sufficient to pass the
@@ -1502,7 +1551,7 @@
% cross-reference names are stored in macros called
% |\cref@|\meta{type}|@name|, |\Cref@|\meta{type}|@name|,
% |\cref@|\meta{type}|@name at plural|, and
-% |\Cref@|\meta{type}|@name at plural|.\linebreak[4] (Note that since these
+% |\Cref@|\meta{type}|@name at plural|. (Note that since these
% macro names contain the ``@'' character, you must use |\makeatletter|
% and |\makeatother| to access them.)
%
@@ -1694,7 +1743,7 @@
%
%
%
-% \section{Known Bugs, Non-Bugs, and Possible}
+% \section{Known Bugs, Non-Bugs, and Possible Improvements}
% \label{sec:known_bugs}
%
% \subsection{Non-Bugs}\label{sec:non-bugs}
@@ -1842,23 +1891,28 @@
% contributing the \package{amsthm} support code, and to Stefan Pinnow,
% Gonzalo Medina, Massimo Redaelli, Philip H\"olzenspies, Aleksander
% Gorohovski, Benjamin H{\o}yer, Johannes Mueller, Paulo Roberto Massa
-% Cereda and Simon Sigurdhsson for contributing translations. Thanks also
-% to Susanna Goldschmidt for additional help with the translations. Many
-% people have suggested improvements or reported bugs -- indeed, many
-% have put significant effort into helping investigate and fix them. So
-% thanks (in alphabetical order) to: Adrian Knoth, Akim Demaille, Alan
-% Munn, Aleksander Gorohovski, Anand Deopurkar, Andreas Haselbacher, Arne
-% Meier, Bas Ploeger, Dan Luecking, David Gleich, Denis Bitouz\'e,
-% Domenic Denicola, Donald Ars\-en\-eau, Hendrik Maryns, Iain Cunningham,
-% James Sharam, Jens Mueller, Joel C. Salomon, Jonas Nyrup, Joris Pinkse,
-% Kristian Debrabant, Leo Shidai Liu, Lev Bishop, Mak Trifkovic, Matej
-% Batic, Matt Gately, Matthew Skala, Michael Barber, Michael Gorven,
-% Michal Kaut, Mico Loretan, Nicolas Dudebout, Olivier Roy, Patrick
-% H\"acker, Paul Gomme, Ricardo de Aldama S\'anchez, Robert Fischer,
-% Stefan Pinnow, Steve Dower, Ted Pavlic, Thomas Arildsen, and Uwe L\"uck
-% for their help. (If I missed you out, please let me know!)
+% Cereda, Simon Sigurdhsson, Rafel Jaume Dey\`a and Eva Bosch Roura for
+% contributing translations. Thanks also to Susanna Goldschmidt for
+% additional help with the translations.
%
+% Many people have suggested improvements or reported bugs -- indeed,
+% many have put significant effort into helping investigate and fix them.
+% So thanks (in alphabetical order) to: Adrian Knoth, Akim Demaille, Alan
+% Munn, Aleksander Gorohovski, Amar Ghaisas, Anand Deopurkar, Andreas
+% Haselbacher, Arne Meier, Bas Ploeger, Christian Tuma, Dan Luecking,
+% David Gleich, Denis Bitouz\'e, Domenic Denicola, Donald Ars\-en\-eau,
+% Eric Ahlberg, Frank Mittlebach, Hendrik Maryns, Iain Cunningham, Ingolf
+% Becker, James Sharam, Jens Mueller, Joel C.
+% Salomon, Jonas Nyrup, Joris Pinkse, Kristian Debrabant, Leo Shidai Liu,
+% Lev Bishop, Mak Trifkovic, Matej Batic, Matt Gately, Matthew Skala,
+% Michael Barber, Michael Gorven, Michal Kaut, Mico Loretan, Milania,
+% Nicolas Dudebout, Olivier Roy, Patrick H\"acker, Paul Gomme, Ricardo de
+% Aldama S\'anchez, Robert Fischer, Sebastian \O{}rsted, Stefan Pinnow,
+% Steve Dower, Ted Pavlic, Thomas Arildsen, Tobias Jores, Uwe L\"uck and
+% Vadim Makarov for their help.
+% (If I inadvertently missed you out, please let me know!)
%
+%
% \StopEventually{\clearpage\PrintChanges\clearpage\PrintIndex}
%
%
@@ -1973,19 +2027,31 @@
\def\label{\@ifnextchar[\label at optarg\label at noarg}%]
\let\cref at label\label%
\def\label at noarg#1{%
+ \cref at old@label{#1}%
\@bsphack%
- \cref at old@label{#1}%
+ \edef\@tempa{{page}{\the\c at page}}%
+ \setcounter{page}{1}%
+ \edef\@tempb{\thepage}%
+ \expandafter\setcounter\@tempa%
+ \cref at constructprefix{page}{\cref at result}%
\protected at write\@auxout{}%
- {\string\newlabel{#1 at cref}{{\cref at currentlabel}{\thepage}}}%
+ {\string\newlabel{#1 at cref}{{\cref at currentlabel}%
+ {[\@tempb][\arabic{page}][\cref at result]\thepage}}}%
\@esphack}%
\def\label at optarg[#1]#2{%
+ \cref at old@label{#2}%
\@bsphack%
- \cref at old@label{#2}%
+ \edef\@tempa{{page}{\the\c at page}}%
+ \setcounter{page}{1}%
+ \edef\@tempb{\thepage}%
+ \expandafter\setcounter\@tempa%
+ \cref at constructprefix{page}{\cref at result}%
\protected at edef\cref at currentlabel{%
\expandafter\cref at override@label at type%
\cref at currentlabel\@nil{#1}}%
\protected at write\@auxout{}%
- {\string\newlabel{#2 at cref}{{\cref at currentlabel}{\thepage}}}%
+ {\string\newlabel{#2 at cref}{{\cref at currentlabel}%
+ {[\@tempb][\arabic{page}][\cref at result]\thepage}}}%
\@esphack}%
}% end of AtBeginDocument
% \end{macrocode}
@@ -2151,11 +2217,12 @@
% ``chapter'' fulfils that role.
% \begin{macrocode}
\@ifundefined{appendix}{}{%
- \g at addto@macro\appendix{%
+ \let\cref at old@appendix\appendix%
+ \def\appendix{%
\@ifundefined{chapter}{%
- \gdef\refstepcounter at noarg#1{%
- \cref at old@refstepcounter{#1}%
- \cref at constructprefix{#1}{\cref at result}%
+ \gdef\refstepcounter at noarg##1{%
+ \cref at old@refstepcounter{##1}%
+ \cref at constructprefix{##1}{\cref at result}%
% \end{macrocode}
% We add a large value to the front of the counter data, to force
% references to anything in appendices to be sorted after everything
@@ -2169,40 +2236,41 @@
% \end{macrocode}
% Override the cross-reference type of sectioning commands.
% \begin{macrocode}
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{section}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [appendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [appendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{subsection}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [subappendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [subappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{subsubsection}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [subsubappendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [subsubappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \@ifundefined{cref@#1 at alias}%
- {\def\@tempa{#1}}%
- {\def\@tempa{\csname cref@#1 at alias\endcsname}}%
+ \@ifundefined{cref@##1 at alias}%
+ {\def\@tempa{##1}}%
+ {\def\@tempa{\csname cref@##1 at alias\endcsname}}%
\protected at edef\cref at currentlabel{%
- [\@tempa][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [\@tempa][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\fi%
\fi%
\fi}%
+ \cref at old@appendix%
}{%
- \def\refstepcounter at noarg#1{%
- \cref at old@refstepcounter{#1}%
- \cref at constructprefix{#1}{\cref at result}%
+ \def\refstepcounter at noarg##1{%
+ \cref at old@refstepcounter{##1}%
+ \cref at constructprefix{##1}{\cref at result}%
% \end{macrocode}
% Again, the large value added to the front of the counter data forces
% references to appendix items to be sorted last.
@@ -2215,45 +2283,45 @@
% \end{macrocode}
% Override the cross-reference type of sectioning commands.
% \begin{macrocode}
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{chapter}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [appendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [appendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{section}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [subappendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [subappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{subsection}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [subsubappendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [subsubappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{subsubsection}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [subsubsubappendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [subsubsubappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \@ifundefined{cref@#1 at alias}%
- {\def\@tempa{#1}}%
- {\def\@tempa{\csname cref@#1 at alias\endcsname}}%
+ \@ifundefined{cref@##1 at alias}%
+ {\def\@tempa{##1}}%
+ {\def\@tempa{\csname cref@##1 at alias\endcsname}}%
\protected at edef\cref at currentlabel{%
- [\@tempa][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [\@tempa][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\fi%
\fi%
\fi%
\fi}%
- }%
+ \cref at old@appendix}%
}%
}% end of \@ifundefined{appendix}
% \end{macrocode}
@@ -2264,13 +2332,13 @@
% \subsection{Utility Macros}
%
% \subsubsection{miscellaneous}
-% \begin{macro}{\@gobble at optarg}
+% \begin{macro}{\cref at gobble@optarg}
% A basic macro that gobbles one argument plus, if present, one
% optional argument.
% \begin{macrocode}
-\def\@gobble at optarg{\@ifnextchar[\@@gobble at optarg\@gobble at orig}%]
-\def\@gobble at orig#1{}%
-\def\@@gobble at optarg[#1]#2{}%
+\def\cref at gobble@optarg{\@ifnextchar[\@cref at gobble@optarg\cref at gobble}%]
+\def\cref at gobble#1{}%
+\def\@cref at gobble@optarg[#1]#2{}%
% \end{macrocode}
% \end{macro}
%
@@ -2283,7 +2351,30 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\cref at ifstreq}
+% A utility macro to test string equality in a catcode-independent
+% fashion. Assumes both arguments are fully expandable. Note: using the
+% |\pdfstrcmp| primitive from |pdftex| would be more robust, but we don't
+% want to depend on |pdftex|. This macro suffices for our purposes.
+% \begin{macrocode}
+\def\cref at ifstreq#1#2#3#4{%
+ \begingroup%
+ \edef\@tempa{#1}%
+ \edef\@tempb{#2}%
+ \expandafter\def\expandafter\@tempa\expandafter{\csname\@tempa\endcsname}%
+ \expandafter\def\expandafter\@tempb\expandafter{\csname\@tempb\endcsname}%
+ \ifx\@tempa\@tempb%
+ \let\@tempc\@firstoftwo%
+ \else%
+ \let\@tempc\@secondoftwo%
+ \fi%
+ \expandafter%
+ \endgroup%
+ \@tempc{#3}{#4}}%
+% \end{macrocode}
+% \end{macro}
%
+%
% \subsubsection{\file{aux} file information}
% \begin{macro}{\cref at getlabel}
% \begin{macro}{\cref at gettype}
@@ -2310,12 +2401,6 @@
\expandafter\expandafter\expandafter#2%
\expandafter\expandafter\expandafter{%
\expandafter\@firstoftwo#2}}%
-\def\cref at getpageref#1#2{%
- \expandafter\let\expandafter#2\csname r@#1 at cref\endcsname%
- \expandafter\expandafter\expandafter\def%
- \expandafter\expandafter\expandafter#2%
- \expandafter\expandafter\expandafter{%
- \expandafter\@secondoftwo#2}}%
\def\cref at getlabel#1#2{%
\cref at getref{#1}{\@tempa}%
\expandafter\@cref at getlabel\@tempa\@nil#2}%
@@ -2345,6 +2430,49 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \begin{macro}{\cpageref at getlabel}
+% \begin{macro}{\cpageref at gettype}
+% \begin{macro}{\cpageref at getcounter}
+% Similarly for the page number information. Here, the information we
+% store in addition to the page label is the page label ``type'' (used
+% to distinguish different page numbering sequences, e.g.\ roman in the
+% front-matter and arabic in the main text), and the numerical value of
+% the page counter.
+% \begin{macrocode}
+\def\cpageref at getref#1#2{%
+ \expandafter\let\expandafter#2\csname r@#1 at cref\endcsname%
+ \expandafter\expandafter\expandafter\def%
+ \expandafter\expandafter\expandafter#2%
+ \expandafter\expandafter\expandafter{%
+ \expandafter\@secondoftwo#2}}%
+\def\cpageref at getlabel#1#2{%
+ \cpageref at getref{#1}{\@tempa}%
+ \expandafter\@cpageref at getlabel\@tempa\@nil#2}%
+\def\@cpageref at getlabel{\@ifnextchar[%]
+ \@@cpageref at getlabel{\@@cpageref at getlabel[][][]}}%
+\def\@@cpageref at getlabel[#1][#2][#3]#4\@nil#5{\def#5{#4}}%
+\def\cpageref at gettype#1#2{%
+ \cpageref at getref{#1}{\@tempa}%
+ \expandafter\@cpageref at gettype\@tempa\@nil#2}%
+\def\@cpageref at gettype{\@ifnextchar[%]
+ \@@cpageref at gettype{\@@cpageref at gettype[][][]}}%
+\def\@@cpageref at gettype[#1][#2][#3]#4\@nil#5{\def#5{#1}}%
+\def\cpageref at getcounter#1#2{%
+ \cpageref at getref{#1}{\@tempa}%
+ \expandafter\@cpageref at getcounter\@tempa\@nil#2}%
+\def\@cpageref at getcounter{\@ifnextchar[%]
+ \@@cpageref at getcounter{\@@cpageref at getcounter[][][]}}%
+\def\@@cpageref at getcounter[#1][#2][#3]#4\@nil#5{\def#5{#2}}%
+\def\cpageref at getprefix#1#2{%
+ \cpageref at getref{#1}{\@tempa}%
+ \expandafter\@cpageref at getprefix\@tempa\@nil#2}%
+\def\@cpageref at getprefix{\@ifnextchar[%]
+ \@@cpageref at getprefix{\@@cpageref at getprefix[][][]}}%
+\def\@@cpageref at getprefix[#1][#2][#3]#4\@nil#5{\def#5{#3}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \cmd{\cref at override@label at type} is a convenience macro for overriding
% the label type stored in \cmd{\cref at currentlabel}.
@@ -2497,9 +2625,25 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\cref at stack@dropempty}
+% Drop any empty references from head of a stack.
+% \begin{macrocode}
+\def\cref at stack@dropempty#1{%
+ \edef\@tempa{\cref at stack@top{#1}}%
+ \@whilesw\ifx\@tempa\@empty\fi{%
+ \cref at stack@pop{#1}%
+ \cref at isstackempty{#1}%
+ \if at cref@stackempty%
+ \let\@tempa\relax%
+ \else%
+ \edef\@tempa{\cref at stack@top{#1}}%
+ \fi}}%
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\cref at stack@sort}
-% The \cmd{\cref at stack@sort} macro sorts a stack, using the comparison
-% macro passed in the second argument, which we use later to sort lists
+% The \cmd{\cref at stack@sort} macro sorts a stack passed in |#2|, using
+% the comparison macro passed in |#1|, which we use later to sort lists
% of references. We use insertion sort despite its $O(n^2)$ scaling
% because it's simpler to code, and because we're very unlikely to
% encounter lists of more than ten or so references, so in practice a
@@ -2512,49 +2656,49 @@
% \end{macrocode}
% Push first element into sorted stack.
% \begin{macrocode}
- \edef\@element{\cref at stack@top{#1}}%
+ \edef\@element{\cref at stack@top{#2}}%
\expandafter\cref at stack@push\expandafter{\@element}{\@sortstack}%
- \cref at stack@pop{#1}%
+ \cref at stack@pop{#2}%
% \end{macrocode}
% If empty elements follow first one, need to add them after it in sorted
% stack.
% \begin{macrocode}
- \cref at isstackfull{#1}%
+ \cref at isstackfull{#2}%
\if at cref@stackfull%
- \edef\@tempa{\cref at stack@top{#1}}%
+ \edef\@tempa{\cref at stack@top{#2}}%
\@whilesw\ifx\@tempa\@empty\fi{%
\cref at stack@pull{}{\@sortstack}%
- \cref at stack@pop{#1}%
- \cref at isstackempty{#1}%
+ \cref at stack@pop{#2}%
+ \cref at isstackempty{#2}%
\if at cref@stackempty%
\let\@tempa\relax%
\else%
- \edef\@tempa{\cref at stack@top{#1}}%
+ \edef\@tempa{\cref at stack@top{#2}}%
\fi}%
\fi%
% \end{macrocode}
% Process elements from stack.
% \begin{macrocode}
- \cref at isstackfull{#1}%
+ \cref at isstackfull{#2}%
\@whilesw\if at cref@stackfull\fi{%
- \edef\@element{\cref at stack@top{#1}}%
- \cref at stack@pop{#1}%
+ \edef\@element{\cref at stack@top{#2}}%
+ \cref at stack@pop{#2}%
% \end{macrocode}
% If empty elements follow current one, need to add them to sorted stack,
% right after element we're currently dealing with.
% \begin{macrocode}
\def\@empties{}%
- \cref at isstackfull{#1}%
+ \cref at isstackfull{#2}%
\if at cref@stackfull%
- \edef\@tempa{\cref at stack@top{#1}}%
+ \edef\@tempa{\cref at stack@top{#2}}%
\@whilesw\ifx\@tempa\@empty\fi{%
\edef\@empties{\@empties,}%
- \cref at stack@pop{#1}%
- \cref at isstackempty{#1}%
+ \cref at stack@pop{#2}%
+ \cref at isstackempty{#2}%
\if at cref@stackempty%
\let\@tempa\relax%
\else%
- \edef\@tempa{\cref at stack@top{#1}}%
+ \edef\@tempa{\cref at stack@top{#2}}%
\fi}%
\fi%
% \end{macrocode}
@@ -2563,11 +2707,11 @@
% \begin{macrocode}
\edef\@tempa{{\expandafter\noexpand\@element}%
{\expandafter\noexpand\@empties}%
- {\noexpand\@sortstack}{\noexpand#2}}%
+ {\noexpand\@sortstack}{\noexpand#1}}%
\expandafter\cref at stack@insert\@tempa%
- \cref at isstackfull{#1}}%
+ \cref at isstackfull{#2}}%
\expandafter\endgroup\expandafter%
- \def\expandafter#1\expandafter{\@sortstack}}%
+ \def\expandafter#2\expandafter{\@sortstack}}%
% \end{macrocode}
% \end{macro}
%
@@ -2610,20 +2754,110 @@
% \end{macro}
%
%
-% \subsubsection{Sorting and comparison of counters}
+% \subsubsection{Reference comparison and sorting}
+% \begin{macro}{\cref at isrefsametype}
+% \begin{macro}{\if at cref@sametype}
+% Test if two references have same type, and set |\if at cref@sametype|
+% conditional accordingly.
+% \begin{macrocode}
+\newif\if at cref@sametype%
+\def\cref at isrefsametype#1#2{%
+ \begingroup%
+% \end{macrocode}
+% Undefined references are treated as different from any other type, but
+% the same type as each other.
+% \begin{macrocode}
+ \expandafter\ifx\csname r@#1 at cref\endcsname\relax%
+ \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
+ \def\@after{\@cref at sametypetrue}%
+ \else%
+ \def\@after{\@cref at sametypefalse}%
+ \fi%
+ \else%
+ \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
+ \def\@after{\@cref at sametypefalse}%
+% \end{macrocode}
+% To test if two references have the same type, we actually compare the
+% expansion of |\cref@|\meta{type}|@format| rather than the \meta{type}
+% per se. This allows references with different counters but identical
+% formatting (e.g.\ equations and subequations with the default
+% formatting) to be typeset as part of the same reference group, which is
+% almost always what we want.
+% \begin{macrocode}
+ \else%
+ \cref at gettype{#1}{\@type}%
+ \expandafter\expandafter\expandafter\def%
+ \expandafter\expandafter\expandafter\@formata%
+ \expandafter\expandafter\expandafter{%
+ \csname cref@\@type @format\endcsname%
+ {\@dummya}{\@dummyb}{\@dummyc}}%
+ \cref at gettype{#2}{\@type}%
+ \expandafter\expandafter\expandafter\def%
+ \expandafter\expandafter\expandafter\@formatb%
+ \expandafter\expandafter\expandafter{%
+ \csname cref@\@type @format\endcsname%
+ {\@dummya}{\@dummyb}{\@dummyc}}%
+ \ifx\@formata\@formatb%
+ \def\@after{\@cref at sametypetrue}%
+ \else%
+ \def\@after{\@cref at sametypefalse}%
+ \fi%
+ \fi%
+ \fi%
+ \expandafter\endgroup\@after}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cpageref at isrefsametype}
+% Test if two page references have same ``type'', and set
+% |\if at cref@sametype| conditional accordingly.
+% \begin{macrocode}
+\def\cpageref at isrefsametype#1#2{%
+ \begingroup%
+% \end{macrocode}
+% Undefined references are treated as different from any other type, but
+% the same type as each other.
+% \begin{macrocode}
+ \expandafter\ifx\csname r@#1 at cref\endcsname\relax%
+ \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
+ \def\@after{\@cref at sametypetrue}%
+ \else%
+ \def\@after{\@cref at sametypefalse}%
+ \fi%
+ \else%
+ \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
+ \def\@after{\@cref at sametypefalse}%
+ \else%
+ \cpageref at gettype{#1}{\@typea}%
+ \cpageref at gettype{#2}{\@typeb}%
+ \ifx\@typea\@typeb%
+ \def\@after{\@cref at sametypetrue}%
+ \else%
+ \def\@after{\@cref at sametypefalse}%
+ \fi%
+ \fi%
+ \fi%
+ \expandafter\endgroup\@after}%
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\cref at countercmp}
-% The \cmd{\cref at countercmp} macro compares two references according to
-% their respective sets of counter data, as returned by
-% \cmd{\cref at getcounter}. It \cmd{\chardef}'s its third argument to 0
-% if they're equal, 1 if the first comes earlier than the second, or 2
-% if the first comes later than the second. This is used later for
-% sorting references.
+% The \cmd{\cref at countercmp} macro compares references |#1| and |#2|
+% according to their respective sets of counter data (stored in the
+% \file{aux} file). It \cmd{\chardef}'s |#3| to 0 if they're equal, 1
+% if the first comes earlier than the second, or 2 if the first
+% reference comes later than the second. This is used later for sorting
+% references. \cmd{\cref at countercmp} compares the references
+% themselves, \cmd{\cpageref at countercmp} compares their page numbers.
% \begin{macrocode}
\def\cref at counter@first#1#2\@nil{#1}%
\def\cref at counter@rest#1#2\@nil{#2}%
-\def\cref at countercmp#1#2#3{%
+\def\cref at countercmp{\@cref at countercmp{cref}}%
+\def\cpageref at countercmp{\@cref at countercmp{cpageref}}%
+\def\@cref at countercmp#1#2#3#4{%
\begingroup%
- \def\@tempa{#1}%
+ \def\@tempa{#2}%
% \end{macrocode}
% In order to ensure empty references end up in the right place when
% sorting lists of multiple references, we make the comparison macro
@@ -2632,7 +2866,7 @@
\ifx\@tempa\@empty%
\def\cref at result{1}%
\else%
- \def\@tempa{#2}%
+ \def\@tempa{#3}%
\ifx\@tempa\@empty%
\def\cref at result{2}%
\else%
@@ -2639,20 +2873,20 @@
% \end{macrocode}
% Conversely, undefined references come after everything else.
% \begin{macrocode}
- \expandafter\ifx\csname r@#1 at cref\endcsname\relax%
+ \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
\def\cref at result{2}%
\else%
- \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
+ \expandafter\ifx\csname r@#3 at cref\endcsname\relax%
\def\cref at result{1}%
\else%
% \end{macrocode}
% The real work of comparing two references is done by
-% \cmd{\@cref at countercmp}.
+% \cmd{\@@cref at countercmp}.
% \begin{macrocode}
- \cref at getcounter{#1}{\@countera}%
- \cref at getprefix{#1}{\@prefixa}%
- \cref at getcounter{#2}{\@counterb}%
- \cref at getprefix{#2}{\@prefixb}%
+ \csname #1 at getcounter\endcsname{#2}{\@countera}%
+ \csname #1 at getprefix\endcsname{#2}{\@prefixa}%
+ \csname #1 at getcounter\endcsname{#3}{\@counterb}%
+ \csname #1 at getprefix\endcsname{#3}{\@prefixb}%
\cref at stack@init{\@countstacka}%
\expandafter\cref at stack@push\expandafter%
{\@countera}{\@countstacka}%
@@ -2667,21 +2901,21 @@
\expandafter\cref at stack@push\expandafter%
{\@prefixb}{\@countstackb}%
\fi%
- \@cref at countercmp%
+ \@@cref at countercmp%
\fi%
\fi%
\fi%
\fi%
\expandafter\endgroup\expandafter%
- \chardef\expandafter#3\expandafter=\cref at result\relax}%
+ \chardef\expandafter#4\expandafter=\cref at result\relax}%
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\@cref at countercmp}
-% The \cmd{\@cref at countercmp} macro recursively compares counter
+% \begin{macro}{\@@cref at countercmp}
+% The \cmd{\@@cref at countercmp} macro recursively compares counter
% components until it runs out of components for one of the references,
% or finds two corresponding components that are unequal.
% \begin{macrocode}
-\def\@cref at countercmp{%
+\def\@@cref at countercmp{%
\let\@iterate\relax%
\cref at isstackempty{\@countstacka}%
\if at cref@stackempty%
@@ -2706,7 +2940,7 @@
\ifnum\@tempa>\@tempb\relax%
\def\cref at result{2}%
\else%
- \def\@iterate{\@cref at countercmp}%
+ \def\@iterate{\@@cref at countercmp}%
\fi%
\fi%
\fi%
@@ -2715,60 +2949,6 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\cref at pagecmp}
-% The \cmd{\cref at pagecmp} macro compares two references according to
-% their page numbers, as returned by \cmd{\cref at getpage}. It
-% \cmd{\chardef}'s its third argument to 0 if they're equal, 1 if the
-% first comes earlier than the second, or 2 if the first comes later
-% than the second. This is used later for sorting page references.
-% \begin{macrocode}
-\def\cref at pagecmp#1#2#3{%
- \begingroup%
- \def\@tempa{#1}%
-% \end{macrocode}
-% In order to ensure empty references end up in the right place when
-% sorting lists of multiple references, we make the comparison macro
-% sort them before a non-empty reference.
-% \begin{macrocode}
- \ifx\@tempa\@empty%
- \def\cref at result{1}%
- \else%
- \def\@tempa{#2}%
- \ifx\@tempa\@empty%
- \def\cref at result{2}%
- \else%
-% \end{macrocode}
-% Conversely, undefined references come after everything else.
-% \begin{macrocode}
- \expandafter\ifx\csname r@#1 at cref\endcsname\relax%
- \def\cref at result{2}%
- \else%
- \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
- \def\cref at result{1}%
- \else%
-% \end{macrocode}
-% If both references are non-empty and are defined, we compare their page
-% numbers.
-% \begin{macrocode}
- \cref at getpageref{#1}{\@tempa}%
- \cref at getpageref{#2}{\@tempb}%
- \ifnum\@tempa<\@tempb\relax%
- \def\cref at result{1}\relax%
- \else%
- \ifnum\@tempa>\@tempb\relax%
- \def\cref at result{2}\relax%
- \else%
- \def\cref at result{0}\relax%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \expandafter\endgroup\expandafter%
- \chardef\expandafter#3\expandafter=\cref at result\relax}%
-% \end{macrocode}
-% \end{macro}
%
% \begin{macro}{\if at cref@inresetlist}
% \begin{macro}{\cref at isinresetlist}
@@ -2833,22 +3013,18 @@
% If counter in question is |subfigure| or |subtable|, check if it's
% reset by |figure| or |table|, respectively.
% \begin{macrocode}
- \def\@tempa{#1}%
- \def\@tempb{subfigure}%
- \ifx\@tempa\@tempb%
+ \cref at ifstreq{#1}{subfigure}{%
\cref at isinresetlist{#1}{figure}%
\if at cref@inresetlist%
\def#2{figure}%
\fi%
- \fi%
- \def\@tempa{#1}%
- \def\@tempb{subtable}%
- \ifx\@tempa\@tempb%
+ }{}%
+ \cref at ifstreq{#1}{subtable}{%
\cref at isinresetlist{#1}{table}%
\if at cref@inresetlist%
\def#2{table}%
\fi%
- \fi%
+ }{}%
% \end{macrocode}
% If counter in question is |equation|, and the counter |parentequation|
% is defined, check if it's reset by that. The |parentequation| counter
@@ -2861,9 +3037,7 @@
% implement amsmath's |subequations| environment (are there any?).
% \begin{macrocode}
\@ifundefined{cl at parentequation}{}{%
- \def\@tempa{#1}%
- \def\@tempb{equation}%
- \ifx\@tempa\@tempb%
+ \cref at ifstreq{#1}{equation}{%
\cref at isinresetlist{#1}{parentequation}%
\if at cref@inresetlist%
\expandafter\ifnum\c at parentequation=0\else%
@@ -2870,57 +3044,23 @@
\def#2{parentequation}%
\fi%
\fi%
- \fi}%
+ }{}}%
% \end{macrocode}
-% If counter in question is |enum|\meta{x}, check if it's reset by a
-% higher-level |enum|\meta{x}.
+% \LaTeX{} hard-codes resetting of |enum|\meta{x} counters by
+% higher-level |enum|\meta{x} counters, so we hard-code the results for
+% these cases.
% \begin{macrocode}
- \def\@tempa{#1}%
- \def\@tempb{enumii}%
- \ifx\@tempa\@tempb%
- \def#2{enum}%
- \fi%
- \def\@tempb{enumiii}%
- \ifx\@tempa\@tempb%
- \def#2{enum}%
- \fi%
- \def\@tempb{enumiv}%
- \ifx\@tempa\@tempb%
- \def#2{enum}%
- \fi%
- \def\@tempb{enumv}%
- \ifx\@tempa\@tempb%
- \def#2{enum}%
- \fi%
- \def\@tempb{enum}%
- \ifx#2\@tempb%
- \cref at isinresetlist{#1}{enumiv}%
- \if at cref@inresetlist%
- \def#2{enumiv}%
- \else%
- \cref at isinresetlist{#1}{enumiii}%
- \if at cref@inresetlist%
+ \cref at ifstreq{#1}{enumii}{%
+ \def#2{enumi}%
+ }{%
+ \cref at ifstreq{#1}{enumiii}{%
+ \def#2{enumii}%
+ }{%
+ \cref at ifstreq{#1}{enumiv}{%
\def#2{enumiii}%
- \else%
- \cref at isinresetlist{#1}{enumii}%
- \if at cref@inresetlist%
- \def#2{enumii}%
- \else%
- \cref at isinresetlist{#1}{enumi}%
- \if at cref@inresetlist%
- \def#2{enumi}%
- \else%
- \cref at isinresetlist{#1}{part}%
- \if at cref@inresetlist%
- \def#2{part}%
- \else%
- \let#2\relax%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
+ }{}%
+ }%
+ }%
% \end{macrocode}
% If we haven't found anything so far, check if it's reset by a
% sectioning command.
@@ -2965,66 +3105,49 @@
%
% \begin{macro}{\if at cref@refconsecutive}
% \begin{macro}{\cref at isrefconsecutive}
+% \begin{macro}{\cpageref at isrefconsecutive}
% Define a new conditional to test whether two references are
-% consecutive (needed when typesetting reference ranges). This uses
-% the counter and prefix (i.e.\ formatted version of the counter that
-% resets the label's counter) information provided by
+% consecutive (needed when compressing references and typesetting
+% reference ranges). This uses the counter and prefix (i.e.\ chain of
+% counters that reset the reference's counter) information provided by
% \cmd{\r@\meta{label}@cref} (via the \file{aux} file) to check if the
% prefixes are identical (i.e.\ the references come from the same
% chapter, section or whatever), and that the label counters differ
-% by~0 or~1.
+% by~0 or~1. \cmd{\cref at isrefconsecutive} tests the references
+% themselves, \cmd{\cpageref at isrefconsecutve} tests their page numbers.
% \begin{macrocode}
\newif\if at cref@refconsecutive%
-\def\cref at isrefconsecutive#1#2{%
+\def\cref at isrefconsecutive{\@cref at isrefconsecutive{cref}}%
+\def\cpageref at isrefconsecutive{\@cref at isrefconsecutive{cpageref}}%
+\def\@cref at isrefconsecutive#1#2#3{%
\begingroup%
- \countdef\refa at counter=0%
- \countdef\refb at counter=1%
- \cref at getcounter{#1}{\cref at result}%
- \refa at counter=\cref at result%
- \cref at getcounter{#2}{\cref at result}%
- \refb at counter=\cref at result%
- \cref at getprefix{#1}{\refa at prefix}%
- \cref at getprefix{#2}{\refb at prefix}%
- \def\@after{\@cref at refconsecutivefalse}%
- \ifx\refa at prefix\refb at prefix%
- \ifnum\refa at counter=\refb at counter\relax%
- \def\@after{\@cref at refconsecutivetrue}%
- \else%
- \advance\refa at counter 1\relax%
+ \def\@after{\@cref at refconsecutivefalse}%
+ \expandafter\ifx\csname r@#2 at cref\endcsname\relax\else%
+ \expandafter\ifx\csname r@#3 at cref\endcsname\relax\else%
+ \countdef\refa at counter=0%
+ \countdef\refb at counter=1%
+ \csname #1 at getcounter\endcsname{#2}{\cref at result}%
+ \refa at counter=\cref at result%
+ \csname #1 at getcounter\endcsname{#3}{\cref at result}%
+ \refb at counter=\cref at result%
+ \csname #1 at getprefix\endcsname{#2}{\refa at prefix}%
+ \csname #1 at getprefix\endcsname{#3}{\refb at prefix}%
+ \ifx\refa at prefix\refb at prefix%
\ifnum\refa at counter=\refb at counter\relax%
\def\@after{\@cref at refconsecutivetrue}%
+ \else%
+ \advance\refa at counter 1\relax%
+ \ifnum\refa at counter=\refb at counter\relax%
+ \def\@after{\@cref at refconsecutivetrue}%
+ \fi%
\fi%
\fi%
\fi%
+ \fi%
\expandafter\endgroup\@after}%
% \end{macrocode}
% \end{macro}
% \end{macro}
-%
-% \begin{macro}{\cref at ispagerefconsecutive}
-% Similarly, define a test for whether two page references are
-% consecutive (needed when typesetting page ranges). We use the same
-% |\if at cref@refconsecutive| conditional as above.
-% \begin{macrocode}
-\def\cref at ispagerefconsecutive#1#2{%
- \begingroup%
- \countdef\refa at counter=0%
- \countdef\refb at counter=1%
- \cref at getpageref{#1}{\cref at result}%
- \refa at counter=\cref at result%
- \cref at getpageref{#2}{\cref at result}%
- \refb at counter=\cref at result%
- \def\@after{\@cref at refconsecutivefalse}%
- \ifnum\refa at counter=\refb at counter\relax%
- \def\@after{\@cref at refconsecutivetrue}%
- \else%
- \advance\refa at counter 1\relax%
- \ifnum\refa at counter=\refb at counter\relax%
- \def\@after{\@cref at refconsecutivetrue}%
- \fi%
- \fi%
- \expandafter\endgroup\@after}%
-% \end{macrocode}
% \end{macro}
%
%
@@ -3031,162 +3154,96 @@
% \subsubsection{Reference stack processing}
% \begin{macro}{\cref at processgroup}
% \cmd{\cref at processgroup} processes the first group of references from
-% the stack passed in argument |#1|, by moving references to the stack
-% passed in argument |#2| until it encounters a reference that has a
+% the stack passed in argument |#2|, by moving references to the stack
+% passed in argument |#3| until it encounters a reference that has a
% different type to those that came before. Note that empty references
-% are treated as having the same type as the preceding one.
+% are treated as having the same type as the preceding one. If argument
+% |#1| is |cref| it processes references, it it's |cpageref| it
+% processes page references.
% \begin{macrocode}
-\def\cref at processgroup#1#2{%
- \edef\@nextref{\cref at stack@top{#1}}%
- \expandafter\ifx\csname r@\@nextref @cref\endcsname\relax%
- \def\@grouptype{\@undefined}%
- \def\@groupformat{\@undefined}%
- \else%
- \expandafter\cref at gettype\expandafter{\@nextref}{\@grouptype}%
- \expandafter\expandafter\expandafter\def%
- \expandafter\expandafter\expandafter\@groupformat%
- \expandafter\expandafter\expandafter{%
- \csname cref@\@grouptype @format\endcsname%
- {\@dummya}{\@dummyb}{\@dummyc}}%
- \fi%
- \let\@nexttype\@grouptype%
- \let\@nextformat\@groupformat%
-%
- \@whilesw\ifx\@nextformat\@groupformat\fi{%
- \expandafter\cref at stack@pull\expandafter{\@nextref}{#2}%
- \cref at stack@pop{#1}%
- \cref at isstackempty{#1}%
+\def\cref at processgroup#1#2#3{%
+ \cref at stack@dropempty{#2}%
+ \edef\@firstref{\cref at stack@top{#2}}%
+ \let\@nextref\@firstref%
+ \cref at isrefsametypetrue%
+ \@whilesw\if at cref@sametype\fi{%
+ \expandafter\cref at stack@pull\expandafter{\@nextref}{#3}%
+ \cref at stack@pop{#2}%
+ \cref at isstackempty{#2}%
\if at cref@stackempty%
- \let\@nexttype\relax%
- \let\@nextformat\relax%
+ \@cref at sametypefalse%
\else%
- \edef\@nextref{\cref at stack@top{#1}}%
+ \edef\@nextref{\cref at stack@top{#2}}%
\ifx\@nextref\@empty%
- \let\@nexttype\@grouptype%
- \let\@nextforamt\@groupformat%
+ \@cref at sametypetrue%
\else%
- \expandafter\ifx\csname r@\@nextref @cref\endcsname\relax%
- \def\@nexttype{\@undefined}%
- \def\@nextformat{\@undefined}%
- \else%
- \expandafter\cref at gettype\expandafter%
- {\@nextref}{\@nexttype}%
- \def\@tempa{\@undefined}%
- \ifx\@nexttype\@tempa%
- \def\@nextformat{\@undefined}%
- \else%
- \expandafter\expandafter\expandafter\def%
- \expandafter\expandafter\expandafter\@nextformat%
- \expandafter\expandafter\expandafter{%
- \csname cref@\@nexttype @format\endcsname%
- {\@dummya}{\@dummyb}{\@dummyc}}%
- \fi%
- \fi%
+ \csname #1 at isrefsametype\endcsname{\@firstref}{\@nextref}%
\fi%
- \fi}%
-}%
+ \fi}}%
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\cref at processgroupall}
% \cmd{\cref at processgroupall} processes the first group of references
-% from the stack passed in argument |#1|, by moving all references with
+% from the stack passed in argument |#2|, by moving all references with
% the same type as the first one into the stack passed in argument
-% |#2|.
+% |#3|. If argument |#1| is |cref| it processes references, if it's
+% |cpageref| it processes page references.
% \begin{macrocode}
-\def\cref at processgroupall#1#2{%
+\def\cref at processgroupall#1#2#3{%
\cref at stack@init{\@tempstack}%
- \edef\@nextref{\cref at stack@top{#1}}%
- \expandafter\ifx\csname r@\@nextref @cref\endcsname\relax%
- \def\@grouptype{\@undefined}%
- \def\@groupformat{\@undefined}%
- \else%
- \expandafter\cref at gettype\expandafter{\@nextref}{\@grouptype}%
- \expandafter\expandafter\expandafter\def%
- \expandafter\expandafter\expandafter\@groupformat%
- \expandafter\expandafter\expandafter{%
- \csname cref@\@grouptype @format\endcsname%
- {\@dummya}{\@dummyb}{\@dummyc}}%
- \fi%
- \let\@lasttype\@grouptype%
- \let\@lastformat\@groupformat%
- \cref at isstackfull{#1}%
-%
+ \cref at stack@dropempty{#2}%
+ \edef\@firstref{\cref at stack@top{#2}}%
+ \cref at isstackfull{#2}%
\@whilesw\if at cref@stackfull\fi{%
- \edef\@nextref{\cref at stack@top{#1}}%
+ \edef\@nextref{\cref at stack@top{#2}}%
\ifx\@nextref\@empty%
- \ifx\@lastformat\@groupformat%
- \let\@nexttype\@grouptype%
- \let\@nextformat\@groupformat%
- \else%
- \let\@nexttype\relax%
- \let\@nextformat\relax%
- \fi%
+ \expandafter\cref at stack@pull\expandafter{\@nextref}{#3}%
\else%
- \expandafter\ifx\csname r@\@nextref @cref\endcsname\relax%
- \def\@nexttype{\@undefined}%
- \def\@nextformat{\@undefined}%
+ \edef\@tempa{{\@firstref}{\@nextref}}%
+ \csname #1 at isrefsametype\expandafter\endcsname\@tempa%
+ \if at cref@sametype%
+ \expandafter\cref at stack@pull\expandafter{\@nextref}{#3}%
\else%
- \expandafter\cref at gettype\expandafter%
- {\@nextref}{\@nexttype}%
- \def\@tempa{\@undefined}%
- \ifx\@nexttype\@tempa%
- \def\@nextformat{\@undefined}%
- \else%
- \expandafter\expandafter\expandafter\def%
- \expandafter\expandafter\expandafter\@nextformat%
- \expandafter\expandafter\expandafter{%
- \csname cref@\@nexttype @format\endcsname%
- {\@dummya}{\@dummyb}{\@dummyc}}%
- \fi%
+ \expandafter\cref at stack@pull\expandafter{\@nextref}{\@tempstack}%
\fi%
\fi%
-%
- \ifx\@nextformat\@groupformat%
- \expandafter\cref at stack@pull\expandafter{\@nextref}{#2}%
- \else%
- \expandafter\cref at stack@pull\expandafter{\@nextref}{\@tempstack}%
- \fi%
- \cref at stack@pop{#1}%
- \let\@lasttype\@nexttype%
- \let\@lastformat\@nextformat%
- \cref at isstackfull{#1}}%
- \let#1\@tempstack}%
+ \cref at stack@pop{#2}%
+ \cref at isstackfull{#2}}%
+ \let#2\@tempstack}%
% \end{macrocode}
% \end{macro}
%
+%
% \begin{macro}{\cref at processconsecutive}
% \cmd{\cref at processconsecutive} processes the first sequence of
-% consecutive references from the stack passed in |#1|, sets the macro
-% passed as |#2| to the first reference in the sequence, sets |#3| to
-% the last reference, and sets the counter passed in |#4| to the number
-% of consecutive references in the sequence.
+% consecutive references from the stack passed in |#2|, sets the macro
+% passed as |#3| to the first reference in the sequence, sets |#4| to
+% the last reference, and sets the counter passed in |#5| to the number
+% of consecutive references in the sequence. If argument |#1| is |cref|
+% it processes references, if it's |cpageref| it processes page
+% references.
% \begin{macrocode}
\def\cref at processconsecutive#1#2#3#4#5{%
- #4=0%
- \edef\@nextref{\cref at stack@top{#1}}%
- \cref at stack@pop{#1}%
% \end{macrocode}
-% If stack only contains one reference, set appropriate return values.
+% Initialise return values to those appropriate for a single reference.
% \begin{macrocode}
- \cref at isstackempty{#1}%
- \if at cref@stackempty%
- \edef#2{\@nextref}%
- \let#3\relax%
- #4=1\relax%
+ \let#4\relax%
+ #5=1\relax%
+ \edef\@nextref{\cref at stack@top{#2}}%
+ \edef#3{\@nextref}%
+ \cref at stack@pop{#2}%
+ \cref at isstackfull{#2}%
% \end{macrocode}
% If stack contains multiple references, find end of consecutive references.
% \begin{macrocode}
- \else%
- \edef#2{\@nextref}%
- \let#3\relax%
- \edef\@nextref{\cref at stack@top{#1}}%
- #4=1\relax%
- \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
+ \if at cref@stackfull%
+ \edef\@nextref{\cref at stack@top{#2}}%
+ \expandafter\ifx\csname r@#3 at cref\endcsname\relax%
\@cref at refconsecutivefalse%
\else%
% \end{macrocode}
-% If next reference in substack is empty, it indicates that no
+% If next reference in stack is empty, it indicates that no
% further compression should take place. Having served its purpose,
% the empty reference and any consecutive empty references are
% removed from the stack.
@@ -3193,24 +3250,13 @@
% \begin{macrocode}
\ifx\@nextref\@empty%
\@cref at refconsecutivefalse%
- \@whilesw\ifx\@nextref\@empty\fi{%
- \cref at stack@pop{#1}%
- \cref at isstackempty{#1}%
- \if at cref@stackempty%
- \let\@nextref\relax%
- \else%
- \edef\@nextref{\cref at stack@top{#1}}%
- \fi}%
+ \cref at stack@dropempty{#2}%
% \end{macrocode}
% Otherwise, test whether next reference is consecutive or not.
% \begin{macrocode}
\else%
- \expandafter\ifx\csname r@\@nextref @cref\endcsname\relax%
- \@cref at refconsecutivefalse%
- \else%
- \edef\@tempa{{#2}{\@nextref}}%
- \expandafter#5\@tempa%
- \fi%
+ \edef\@tempa{{#3}{\@nextref}}%
+ \csname #1 at isrefconsecutive\expandafter\endcsname\@tempa%
\fi%
\fi%
% \end{macrocode}
@@ -3218,14 +3264,14 @@
% sequence.
% \begin{macrocode}
\@whilesw\if at cref@refconsecutive\fi{%
- \advance#4 1%
- \let#3\@nextref%
- \cref at stack@pop{#1}%
- \cref at isstackempty{#1}%
+ \advance#5 1\relax%
+ \let#4\@nextref%
+ \cref at stack@pop{#2}%
+ \cref at isstackempty{#2}%
\if at cref@stackempty%
\@cref at refconsecutivefalse%
\else%
- \edef\@nextref{\cref at stack@top{#1}}%
+ \edef\@nextref{\cref at stack@top{#2}}%
% \end{macrocode}
% If next reference is empty, remove any consecutive empty
% references and we're done.
@@ -3233,23 +3279,19 @@
\ifx\@nextref\@empty%
\@cref at refconsecutivefalse%
\@whilesw\ifx\@nextref\@empty\fi{%
- \cref at stack@pop{#1}%
- \cref at isstackempty{#1}%
+ \cref at stack@pop{#2}%
+ \cref at isstackempty{#2}%
\if at cref@stackempty%
\let\@nextref\relax%
\else%
- \edef\@nextref{\cref at stack@top{#1}}%
+ \edef\@nextref{\cref at stack@top{#2}}%
\fi}%
% \end{macrocode}
% Otherwise, test whether next reference is consecutive or not.
% \begin{macrocode}
\else%
- \expandafter\ifx\csname r@\@nextref @cref\endcsname\relax%
- \@cref at refconsecutivefalse%
- \else%
- \edef\@tempa{{#3}{\@nextref}}%
- \expandafter#5\@tempa%
- \fi%
+ \edef\@tempa{{#4}{\@nextref}}%
+ \csname #1 at isrefconsecutive\expandafter\endcsname\@tempa%
\fi%
\fi}%
\fi}%
@@ -3272,7 +3314,7 @@
\let\cref at acc\@empty%
\@crefstripprefix%
\cref at result%
- \endgroup}
+ \endgroup}%
% \end{macrocode}
% \end{macro}
%
@@ -3279,7 +3321,7 @@
% The real work is done by the recursive \cmd{\@crefstripprefix} macro,
% which compares characters one-by-one (accumulating runs of the same
% type of character -- digit or letter as it goes). It removes matching
-% characters them from the strings, and outputs the remaining characters
+% characters from the strings, and outputs the remaining characters
% from the second string (plus any accumulated characters of the same
% type) when it encounters the first non-matching character;
% \begin{macrocode}
@@ -3341,7 +3383,7 @@
\fi%
\edef\cref at result{\cref at acc\@tempb\@toksb}%
\fi%
- \@iterate}
+ \@iterate}%
% \end{macrocode}
%
% \begin{macro}{\cref at poptok}
@@ -3357,9 +3399,9 @@
\expandafter\expandafter\expandafter\def%
\expandafter\expandafter\expandafter#1%
\expandafter\expandafter\expandafter{%
- \expandafter\@cref at poptok#1\@nil}}
-\def\@cref at firsttok#1#2\@nil{#1}
-\def\@cref at poptok#1#2\@nil{#2}
+ \expandafter\@cref at poptok#1\@nil}}%
+\def\@cref at firsttok#1#2\@nil{#1}%
+\def\@cref at poptok#1#2\@nil{#2}%
% \end{macrocode}
% \end{macro}
%
@@ -3376,8 +3418,8 @@
% \begin{macrocode}
\DeclareRobustCommand{\cref}[1]{\@cref{cref}{#1}}%
\DeclareRobustCommand{\Cref}[1]{\@cref{Cref}{#1}}%
-\DeclareRobustCommand{\crefrange}[2]{\@setcrefrange{#1}{#2}{cref}{}}%
-\DeclareRobustCommand{\Crefrange}[2]{\@setcrefrange{#1}{#2}{Cref}{}}%
+\DeclareRobustCommand{\crefrange}[2]{\@setcrefrange{#1}{#2}{}}%
+\DeclareRobustCommand{\Crefrange}[2]{\@setCrefrange{#1}{#2}{}}%
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -3411,6 +3453,14 @@
\def\@cref#1#2{%
\leavevmode%
\begingroup%
+ \def\cref at variant{#1}%
+ \def\@tempa{\in@{page}}%
+ \expandafter\@tempa\expandafter{\cref at variant}%
+ \ifin@%
+ \def\cref at variant@get{cpageref}%
+ \else%
+ \def\cref at variant@get{cref}%
+ \fi%
% \end{macrocode}
% Initialise some things, and put all the references into a stack called
% \cmd{\@refstack}. Note that we fully expand the second argument, in
@@ -3420,13 +3470,13 @@
\countdef\count at consecutive=0%
\countdef\count at group=1%
\count at group=1%
- \def\cref at variant{#1}%
- \newif\if at secondref%
+ \countdef\count at subgroup=2%
\cref at stack@init{\@refstack}%
\edef\@tempa{#2}%
\expandafter\cref at stack@push\expandafter{\@tempa}{\@refstack}%
\cref at isstackfull{\@refstack}%
% \end{macrocode}
+%
% Loop until the reference stack is empty.
% \begin{macrocode}
\@whilesw\if at cref@stackfull\fi{%
@@ -3435,17 +3485,20 @@
% \begin{macrocode}
\cref at stack@init{\@refsubstack}%
\if at cref@sort%
- \cref at processgroupall{\@refstack}{\@refsubstack}%
- \cref at stack@sort{\@refsubstack}{\cref at countercmp}%
+ \expandafter\cref at processgroupall\expandafter%
+ {\cref at variant@get}{\@refstack}{\@refsubstack}%
+ \expandafter\cref at stack@sort\expandafter%
+ {\csname\cref at variant@get @countercmp\endcsname}{\@refsubstack}%
\else%
- \cref at processgroup{\@refstack}{\@refsubstack}%
+ \expandafter\cref at processgroup\expandafter%
+ {\cref at variant@get}{\@refstack}{\@refsubstack}%
\fi%
% \end{macrocode}
%
-% typeset appropriate conjunction between groups of reference types.
+% Typeset appropriate conjunction between groups of reference types.
% \begin{macrocode}
\ifnum\count at group=1\relax%
- \advance\count at group 1%
+ \advance\count at group 1\relax%
\else%
\cref at isstackfull{\@refstack}%
\if at cref@stackfull%
@@ -3457,151 +3510,99 @@
\@setcref at lastgroupconjunction%
\fi%
\fi%
- \advance\count at group 1%
- \def\cref at variant{cref}%
+ \advance\count at group 1\relax%
+ \lowercase{\def\cref at variant{#1}}%
\fi%
% \end{macrocode}
%
-% Process first group of consecutive references.
+% Process groups of consecutive references until substack is empty.
% \begin{macrocode}
- \if at cref@compress%
- \cref at processconsecutive%
- {\@refsubstack}{\@beginref}{\@endref}{\count at consecutive}%
- {\cref at isrefconsecutive}%
- \else%
- \edef\@beginref{\cref at stack@top{\@refsubstack}}%
- \cref at stack@pop{\@refsubstack}%
+ \count at subgroup=1%
+ \cref at isstackfull{\@refsubstack}%
+ \@whilesw\if at cref@stackfull\fi{%
+ \if at cref@compress%
+ \expandafter\cref at processconsecutive\expandafter{\cref at variant@get}%
+ {\@refsubstack}{\@beginref}{\@endref}{\count at consecutive}%
% \end{macrocode}
-% Empty references serve no purpose when we're not compressing
-% consecutive references, so we simply remove them.
+% Empty references serve no purpose when we're not compressing, so we
+% simply remove them and process the first non-empty reference..
% \begin{macrocode}
- \@whilesw\ifx\@beginref\@empty\fi{%
+ \else%
+ \cref at stack@dropempty{\@refsubstack}%
+ \edef\@beginref{\cref at stack@top{\@refsubstack}}%
\cref at stack@pop{\@refsubstack}%
- \cref at isstackempty{\@refsubstack}%
- \if at cref@stackempty%
- \let\@beginref\relax%
- \else%
- \edef\@beginref{\cref at stack@top{\@refsubstack}}%
- \fi}%
- \let\@endref\relax%
- \count at consecutive=1\relax%
- \fi%
-% \end{macrocode}
-% If there were no consecutive references, typeset the first reference;
-% \begin{macrocode}
- \ifnum\count at consecutive=1\relax%
- \cref at isstackfull{\@refsubstack}%
- \if at cref@stackfull%
- \expandafter\@setcref%
- \expandafter{\@beginref}{\cref at variant}{@first}%
- \else%
- \expandafter\@setcref%
- \expandafter{\@beginref}{\cref at variant}{}%
+ \let\@endref\relax%
+ \count at consecutive=1\relax%
\fi%
% \end{macrocode}
-% if there were only two consecutive references, typeset the first one
-% and return the second to the substack (we add an empty reference
-% after it just to make sure there's no further compression);
+% If the start and end labels are identical, treat it as a single
+% reference instead of a range
% \begin{macrocode}
- \else%
- \ifnum\count at consecutive=2\relax%
- \expandafter\@setcref%
- \expandafter{\@beginref}{\cref at variant}{@first}%
- \expandafter\cref at stack@push\expandafter%
- {\@endref,}{\@refsubstack}%
-% \end{macrocode}
-% otherwise, typeset a reference range.
-% \begin{macrocode}
- \else%
- \edef\@tempa{{\@beginref}{\@endref}}%
- \if at cref@stackempty%
- \expandafter\@setcrefrange\@tempa{\cref at variant}{}%
- \else%
- \expandafter\@setcrefrange\@tempa{\cref at variant}{@first}%
+ \ifnum\count at consecutive>1\relax%
+ \csname\cref at variant@get @getlabel\endcsname{\@beginref}{\@labela}%
+ \csname\cref at variant@get @getlabel\endcsname{\@endref}{\@labelb}%
+ \ifx\@labela\@labelb%
+ \let\@endref\relax%
+ \count at consecutive=1\relax%
\fi%
\fi%
- \fi%
% \end{macrocode}
-%
-% Process further groups of consecutive references, until substack is
-% empty.
+% If there were only two consecutive references, keep the first one and
+% return the second one to the substack. (We add an empty reference after
+% it just to make sure there's no further compression.)
% \begin{macrocode}
- \@secondreftrue%
- \cref at isstackfull{\@refsubstack}%
- \@whilesw\if at cref@stackfull\fi{%
- \if at cref@compress%
- \cref at processconsecutive%
- {\@refsubstack}{\@beginref}{\@endref}{\count at consecutive}%
- {\cref at isrefconsecutive}%
- \else%
- \edef\@beginref{\cref at stack@top{\@refsubstack}}%
- \cref at stack@pop{\@refsubstack}%
-% \end{macrocode}
-% Empty references serve no purpose when we're not compressing
-% consecutive references, so we simply remove them.
-% \begin{macrocode}
- \@whilesw\ifx\@beginref\@empty\fi{%
- \cref at stack@pop{\@refsubstack}%
- \cref at isstackempty{\@refsubstack}%
- \if at cref@stackempty%
- \let\@beginref\relax%
- \else%
- \edef\@beginref{\cref at stack@top{\@refsubstack}}%
- \fi}%
+ \ifnum\count at consecutive=2\relax%
+ \expandafter\cref at stack@push\expandafter{\@endref,}{\@refsubstack}%
\let\@endref\relax%
\count at consecutive=1\relax%
\fi%
% \end{macrocode}
-% If the substack is now empty, we will need to typeset an ``end''
-% reference, otherwise we will need to typeset a ``middle''
-% reference.
+% Work out which type of reference we need to typeset.
% \begin{macrocode}
- \cref at isstackempty{\@refsubstack}%
- \if at cref@stackempty%
- \if at secondref%
- \def\@pos{@second}%
+ \cref at isstackfull{\@refsubstack}%
+ \if at cref@stackfull%
+ \ifnum\count at subgroup=1\relax%
+ \def\@pos{@first}%
\else%
- \def\@pos{@last}%
+ \def\@pos{@middle}%
\fi%
\else%
- \def\@pos{@middle}%
+ \ifnum\count at subgroup=1\relax%
+ \def\@pos{}%
+ \else%
+ \ifnum\count at subgroup=2\relax%
+ \def\@pos{@second}%
+ \else%
+ \def\@pos{@last}%
+ \fi%
+ \fi%
\fi%
% \end{macrocode}
-% If there were no consecutive references, just typeset the next
-% reference;
+% If there were no consecutive references, just typeset the next
+% reference;
% \begin{macrocode}
\ifnum\count at consecutive=1\relax%
- \edef\@tempa{{\@beginref}{cref}{\@pos}}%
- \expandafter\@setcref\@tempa%
- \else%
+ \edef\@tempa{{\@beginref}{\@pos}}%
+ \csname @set\cref at variant\expandafter\endcsname\@tempa%
% \end{macrocode}
-% if there were only two consecutive references, typeset the first
-% one, and return the second one to the substack,
+% otherwise, typeset a reference range.
% \begin{macrocode}
- \ifnum\count at consecutive=2\relax%
- \expandafter\@setcref\expandafter%
- {\@beginref}{cref}{@middle}%
- \expandafter\cref at stack@push\expandafter%
- {\@endref}{\@refsubstack}%
-% \end{macrocode}
-% otherwise, typeset a reference range.
-% \begin{macrocode}
- \else%
- \edef\@tempa{{\@beginref}{\@endref}{cref}{\@pos}}%
- \expandafter\@setcrefrange\@tempa%
- \fi%
+ \else%
+ \edef\@tempa{{\@beginref}{\@endref}{\@pos}}%
+ \csname @set\cref at variant range\expandafter\endcsname\@tempa%
\fi%
- \@secondreffalse%
+ \advance\count at subgroup 1\relax%
\cref at isstackfull{\@refsubstack}%
}% end loop over reference substack
\cref at isstackfull{\@refstack}%
% \end{macrocode}
-% If we're typesetting a \cmd{\labelcref} reference and references in
-% stack have different types, throw a warning and stop processing.
+%
+% If we're typesetting a \cmd{\labelcref} reference and references in
+% stack have different types, throw a warning and stop processing.
% \begin{macrocode}
\if at cref@stackfull%
- \def\@tempa{#1}\def\@tempb{labelcref}%
- \ifx\@tempa\@tempb\relax%
+ \def\@tempa{labelcref}%
+ \ifx\cref at variant\@tempa%
\protect\G at refundefinedtrue%
\nfss at text{\reset at font\bfseries\space ??}%
\@latex at warning{References in label reference on page \thepage
@@ -3616,88 +3617,113 @@
%
%
% \begin{macro}{\@setcref}
-% The internal \cmd{\@setcref} macro deals with actually typesetting
-% the reference, by calling the appropriate type-dependent formatting
-% macro defined by \cmd{\crefformat} etc. |#1| contains the reference
-% itself, |#2| is either ``cref'' or ``Cref'' and determines the
-% capitalisation variant, and |#3| is either empty or one of
-% ``@second'', ``@middle'' or ``@last'', determining the type of
-% reference group to typeset.
+% \begin{macro}{\@setCref}
+% \begin{macro}{\@setlavelcref}
+% \begin{macro}{\@@setcref}
+% The \cmd{\@setcref}, \cmd{\@setCref} and \cmd{\@setlabelcref} macros
+% are called as appropriate by \cmd{\@cref} to typeset a reference.
+% These macros just turn the |cref|, |Cref| or |labelcref| variant into
+% a macro argument and pass it along to \cmd{\@@setcref}, which deals
+% with actually typesetting the reference by calling the appropriate
+% type-dependent formatting macro defined by \cmd{\crefformat} etc.
+% \cmd{\@@setcref} takes three arguments. |#1| is the variant passed
+% along by |\@set|\meta{x}|ref|. |#2| contains the reference itself.
+% |#3| is either empty or one of ``@second'', ``@middle'' or ``@last'',
+% determining the type of reference group to typeset.
% \begin{macrocode}
-\def\@setcref#1#2#3{%
- \expandafter\ifx\csname r@#1 at cref\endcsname\relax%
+\def\@setcref{\@@setcref{cref}}%
+\def\@setCref{\@@setcref{Cref}}%
+\def\@setlabelcref{\@@setcref{labelcref}}%
+\def\@@setcref#1#2#3{%
+ \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
\protect\G at refundefinedtrue%
\nfss at text{\reset at font\bfseries ??}%
- \@latex at warning{Reference `#1' on page \thepage \space undefined}%
+ \@latex at warning{Reference `#2' on page \thepage \space undefined}%
\else%
- \cref at gettype{#1}{\@temptype}% puts label type in \@temptype
- \cref at getlabel{#1}{\@templabel}% puts label in \@templabel
- \expandafter\ifx\csname #2@\@temptype @format#3\endcsname\relax%
+ \cref at gettype{#2}{\@temptype}% puts label type in \@temptype
+ \cref at getlabel{#2}{\@templabel}% puts label in \@templabel
+ \expandafter\ifx\csname #1@\@temptype @format#3\endcsname\relax%
% \end{macrocode}
% If reference format is undefined, but we're typesetting a
% \cmd{\labelcref}, fall back to default \cmd{\labelcref} format.
% \begin{macrocode}
- \edef\@tempa{#2}\def\@tempb{labelcref}%
+ \edef\@tempa{#1}\def\@tempb{labelcref}%
\ifx\@tempa\@tempb\relax%
- \expandafter\@@setcref\expandafter%
- {\csname #2 at default@format#3\endcsname}{#1}%
+ \expandafter\@@@setcref\expandafter%
+ {\csname #1 at default@format#3\endcsname}{#2}%
\else%
\protect\G at refundefinedtrue%
\nfss at text{\reset at font\bfseries ??}~\@templabel%
- \@latex at warning{#2 \space reference format for label type
+ \@latex at warning{#1\space reference format for label type
`\@temptype' undefined}%
\fi%
\else%
- \expandafter\@@setcref\expandafter%
- {\csname #2@\@temptype @format#3\endcsname}{#1}%
+ \expandafter\@@@setcref\expandafter%
+ {\csname #1@\@temptype @format#3\endcsname}{#2}%
\fi%
\fi}%
% \end{macrocode}
% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
-% \begin{macro}{\@@setcref}
+% \begin{macro}{\@@@setcref}
% We separate out the very final typesetting step into a separate
% macro, in order to make it easier to redefine things later to make
% them work with the \package{hyperref} package.
% \begin{macrocode}
-\def\@@setcref#1#2{\cref at getlabel{#2}{\@templabel}#1{\@templabel}{}{}}%
+\def\@@@setcref#1#2{\cref at getlabel{#2}{\@templabel}#1{\@templabel}{}{}}%
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@setcrefrange}
-% The internal \cmd{\@setcrefrange} macro deals with typesetting
-% reference ranges, just as \cmd{\@setcref} does for normal
-% references. The actual typesetting is no more complicated in the
-% range case; it's the error checking that makes the code so much
+% \begin{macro}{\@setCrefrange}
+% \begin{macro}{\@setlabelcrefrange}
+% \begin{macro}{\@@setcrefrange}
+% The \cmd{\@setcrefrange}, \cmd{\@setCrefrange} and
+% \cmd{\@setlabelrefrange} macros are called as appropriate by
+% \cmd{\@cref} to typeset a reference. The internal
+% \cmd{\@@setcrefrange} macro deals with actually typesetting reference
+% ranges, and takes four arguments. |#1| is the variant passed along by
+% |\@set|\meta{x}|ref|. |#2| and |#3| contains the references
+% themselves. |#4| is either empty or one of ``@second'', ``@middle''
+% or ``@last'', determining the type of reference group to typeset.
+%
+% The actual typesetting is no more complicated than in the
+% \cmd{\@@setcref} case; it's the error checking that makes the code
% longer. We now have to check whether \emph{two} references are
% undefined, whether \emph{two} reference formats are undefined,
% whether the reference types are consistent, and also combinations of
% these various errors.
% \begin{macrocode}
-\def\@setcrefrange#1#2#3#4{%
+\def\@setcrefrange{\@@setcrefrange{cref}}%
+\def\@setCrefrange{\@@setcrefrange{Cref}}%
+\def\@setlabelcrefrange{\@@setcrefrange{labelcref}}%
+\def\@@setcrefrange#1#2#3#4{%
\begingroup%
% \end{macrocode}
% Check if both references are defined.
% \begin{macrocode}
- \expandafter\ifx\csname r@#1 at cref\endcsname\relax%
+ \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
\protect\G at refundefinedtrue%
- \@latex at warning{Reference `#1' on page \thepage \space%
+ \@latex at warning{Reference `#2' on page \thepage \space%
undefined}%
- \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
+ \expandafter\ifx\csname r@#3 at cref\endcsname\relax%
\nfss at text{\reset at font\bfseries ??}--%
\nfss at text{\reset at font\bfseries ??}%
- \@latex at warning{Reference `#2' on page \thepage \space%
+ \@latex at warning{Reference `#3' on page \thepage \space%
undefined}%
\else%
- \cref at getlabel{#2}{\@labelb}%
+ \cref at getlabel{#3}{\@labelb}%
\nfss at text{\reset at font\bfseries ??}--\@labelb%
\fi%
\else%
- \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
+ \expandafter\ifx\csname r@#3 at cref\endcsname\relax%
\protect\G at refundefinedtrue%
- \cref at getlabel{#1}{\@labela}%
+ \cref at getlabel{#2}{\@labela}%
\@labela--\nfss at text{\reset at font\bfseries ??}%
- \@latex at warning{Reference `#2' on page \thepage %
+ \@latex at warning{Reference `#3' on page \thepage %
\space undefined}%
% \end{macrocode}
% If both references are defined, check that the reference format is
@@ -3704,28 +3730,26 @@
% defined.
% \begin{macrocode}
\else%
- \cref at gettype{#1}{\@typea}%
- \cref at gettype{#2}{\@typeb}%
- \cref at getlabel{#1}{\@labela}%
- \cref at getlabel{#2}{\@labelb}%
- \edef\@formata{\expandafter\noexpand%
- \csname #3range@\@typea @format#4\endcsname}%
- \edef\@formatb{\expandafter\noexpand%
- \csname #3range@\@typeb @format#4\endcsname}%
- \expandafter\ifx\@formata\relax%
+ \cref at gettype{#2}{\@typea}%
+ \cref at gettype{#3}{\@typeb}%
+ \cref at getlabel{#2}{\@labela}%
+ \cref at getlabel{#3}{\@labelb}%
+ \edef\@format{\expandafter\noexpand%
+ \csname #1range@\@typea @format#4\endcsname}%
+ \expandafter\ifx\@format\relax%
% \end{macrocode}
% If reference format is undefined, but we're typesetting a
% \cmd{\labelcref}, fall back to default \cmd{\labelcref}
% formats.
% \begin{macrocode}
- \edef\@tempa{#3}\def\@tempb{labelcref}%
+ \edef\@tempa{#1}\def\@tempb{labelcref}%
\ifx\@tempa\@tempb\relax%
- \expandafter\@@setcrefrange\expandafter%
- {\csname #3range at default@format#4\endcsname}{#1}{#2}%
+ \expandafter\@@@setcrefrange\expandafter%
+ {\csname #1range at default@format#4\endcsname}{#2}{#3}%
\else%
\protect\G at refundefinedtrue%
\nfss at text{\reset at font\bfseries ??}~\@labela--\@labelb%
- \@latex at warning{#3\space reference range format for label
+ \@latex at warning{#1 reference range format for label
type `\@typea' undefined}%
\fi%
\else%
@@ -3736,12 +3760,22 @@
% is defined, since if it isn't it will be caught here as a
% non-identical type.)
% \begin{macrocode}
+ \expandafter\expandafter\expandafter\def%
+ \expandafter\expandafter\expandafter\@formata%
+ \expandafter\expandafter\expandafter{%
+ \csname #1range@\@typea @format#4\endcsname%
+ {\@dummya}{\@dummyb}{\@dummyc}{\@dummyd}{\@dummye}{\@dummyf}}%
+ \expandafter\expandafter\expandafter\def%
+ \expandafter\expandafter\expandafter\@formatb%
+ \expandafter\expandafter\expandafter{%
+ \csname #1range@\@typeb @format#4\endcsname%
+ {\@dummya}{\@dummyb}{\@dummyc}{\@dummyd}{\@dummye}{\@dummyf}}%
\ifx\@formata\@formatb%
- \expandafter\@@setcrefrange\expandafter{\@formata}{#1}{#2}%
+ \expandafter\@@@setcrefrange\expandafter{\@format}{#2}{#3}%
\else%
\protect\G at refundefinedtrue%
\nfss at text{\reset at font\bfseries ??}~\@labela--\@labelb%
- \@latex at warning{References `#1' and `#2' in reference range
+ \@latex at warning{References `#2' and `#3' in reference range
on page \thepage \space have different types
`\@typea' and `\@typeb'}%
\fi%
@@ -3751,13 +3785,16 @@
\endgroup}%
% \end{macrocode}
% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
-% \begin{macro}{\@@setcrefrange}
+% \begin{macro}{\@@@setcrefrange}
% We again separate out the very final typesetting step into a
% separate macro, in order to make it easier to redefine things later
% to make them work with the \package{hyperref} package.
% \begin{macrocode}
-\def\@@setcrefrange#1#2#3{%
+\def\@@@setcrefrange#1#2#3{%
\cref at getlabel{#2}{\@labela}%
\cref at getlabel{#3}{\@labelb}%
#1{\@labela}{\@labelb}{}{}{}{}}%
@@ -3815,7 +3852,10 @@
%
% \begin{macro}{\@setnamecref}
% \cmd{\@setnamecref} is the real macro underlying all the
-% \cmd{\namecref} commands.
+% \cmd{\namecref} commands. |#1| is the capitalisation variant, |#2|
+% the reference, |#3| is either empty or |@plural| if the plural name
+% should be generated, and |#4| is either empty or contains
+% \cmd{\MakeLowercase} if a lower-cased name should be generated.
% \begin{macrocode}
\def\@setnamecref#1#2#3#4{%
\expandafter\ifx\csname r@#2 at cref\endcsname\relax%
@@ -3831,17 +3871,17 @@
}{%
\edef\@tempa{%
\expandafter\noexpand\csname #1@\@tempa @name#3\endcsname}%
- \expandafter\@@setnamecref\expandafter{\@tempa}{#4}%
+ \expandafter\@@@setnamecref\expandafter{\@tempa}{#4}%
}%
\fi}%
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@setnamecref}
+% \begin{macro}{\@@@setnamecref}
% We again separate out the final typesetting step of the
% \cmd{\namecref} commands.
% \begin{macrocode}
-\def\@@setnamecref#1#2{%
+\def\@@@setnamecref#1#2{%
\expandafter\def\expandafter\@tempa\expandafter{#1}%
\expandafter#2\@tempa}%
% \end{macrocode}
@@ -3860,16 +3900,14 @@
% commands, and \cmd{\labelcpageref} (the counterpart to
% \cmd{\labelcref}).
% \begin{macrocode}
-\DeclareRobustCommand{\cpageref}[1]{%
- \@cpageref{cref}{#1}{\@setcpageref}{\@setcpagerefrange}}%
-\DeclareRobustCommand{\Cpageref}[1]{%
- \@cpageref{Cref}{#1}{\@setcpageref}{\@setcpagerefrange}}%
+\DeclareRobustCommand{\cpageref}[1]{\@cref{cpageref}{#1}}%
+\DeclareRobustCommand{\Cpageref}[1]{\@cref{Cpageref}{#1}}%
\DeclareRobustCommand{\cpagerefrange}[2]{%
- \@setcpagerefrange{#1}{#2}{cref}{}}%
+ \@@setcpagerefrange{#1}{#2}{cref}{}}%
\DeclareRobustCommand{\Cpagerefrange}[2]{%
- \@setcpagerefrange{#1}{#2}{Cref}{}}%
+ \@@setcpagerefrange{#1}{#2}{Cref}{}}%
\DeclareRobustCommand{\labelcpageref}[1]{%
- \@cpageref{labelcref}{#1}{\@setcpageref}{\@setcpagerefrange}}%
+ \@cref{labelcpageref}{#1}}%
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -3876,214 +3914,80 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\@cpageref}
-% The \cmd{\@cpageref} macro is the work-horse of the clever page
-% referencing features (analogous to the role of \cmd{\@cref} for
-% cross-references, though slightly simpler as it does not have to deal
-% with grouping references by type, all page references being
-% references to pages!). It deals with typesetting the conjunctions
-% between groups of page references, and any sorting and compressing of
-% the page references. |#1| contains the list of references, |#2| is
-% ``cref'' or ``Cref'' and determines the capitalisation variant, |#3|
-% and |#4| are the macros to use for typesetting page references and
-% page range references, respectively. (The \cmd{\cpageref} and
-% \cmd{\Cpageref} commands always set these to \cmd{\@setcpageref} and
-% \cmd{\@setcpagerangeref}; the \package{varioref} package support uses
-% these arguments to integrate the \package{cleveref} and
-% \package{varioref} page referencing features.)
-% \begin{macrocode}
-\def\@cpageref#1#2#3#4{%
- \leavevmode%
- \begingroup%
-% \end{macrocode}
-% Initialise some things, and put all the references into a stack called
-% \cmd{\@refstack}. Note that we fully expand the second argument, in
-% case it contains commands that \emph{expand to} label names, rather
-% than label names per se.
-% \begin{macrocode}
- \countdef\count at consecutive=0%
- \countdef\count at group=1%
- \countdef\@counta=2%
- \countdef\@countb=3%
- \count at group=0%
- \cref at stack@init{\@refstack}%
- \edef\@tempa{#2}%
- \expandafter\cref at stack@push\expandafter{\@tempa}{\@refstack}%
- \if at cref@sort%
- \cref at stack@sort{\@refstack}{\cref at pagecmp}%
- \fi%
-% \end{macrocode}
-% Loop until the reference stack is empty.
-% \begin{macrocode}
- \cref at isstackfull{\@refstack}%
- \@whilesw\if at cref@stackfull\fi{%
- \if at cref@compress%
- \cref at processconsecutive%
- {\@refstack}{\@beginref}{\@endref}{\count at consecutive}%
- {\cref at ispagerefconsecutive}%
- \else%
- \edef\@beginref{\cref at stack@top{\@refstack}}%
- \cref at stack@pop{\@refstack}%
-% \end{macrocode}
-% Empty references serve no purpose when we're not compressing
-% consecutive references, so we simply remove them.
-% \begin{macrocode}
- \@whilesw\ifx\@beginref\@empty\fi{%
- \cref at stack@pop{\@refstack}%
- \cref at isstackempty{\@refstack}%
- \if at cref@stackempty%
- \let\@beginref\relax%
- \else%
- \edef\@beginref{\cref at stack@top{\@refstack}}%
- \fi}%
- \let\@endref\relax%
- \count at consecutive=1\relax%
- \fi%
-% \end{macrocode}
-% If the start and end pages of a reference range are the same, treat it as
-% a single page reference instead of a page range. If start and end pages
-% of a reference range differ by 1, treat it as a pair of page references
-% instead of a range.
-% \begin{macrocode}
- \ifx\@endref\relax\else%
- \expandafter\ifx\csname r@\@beginref @cref\endcsname\relax\else%
- \expandafter\ifx\csname r@\@endref @cref\endcsname\relax\else%
- \cref at getpageref{\@beginref}{\@tempa}%
- \cref at getpageref{\@endref}{\@tempb}%
- \ifx\@tempa\@tempb\relax%
- \count at consecutive=1%
- \let\@endref\relax%
- \else%
- \@counta=\@tempa\relax%
- \@countb=\@tempb\relax%
- \advance\@counta 1\relax%
- \ifnum\@counta=\@countb\relax%
- \count at consecutive=2%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
-% \end{macrocode}
-% Determine whereabouts the current group of page references comes in the
-% overall list of page references.
-% \begin{macrocode}
- \cref at isstackempty{\@refstack}%
- \if at cref@stackempty%
- \ifcase\count at group\relax%
- \ifnum\count at consecutive=2\relax%
- \def\@pos{@first}%
- \else%
- \def\@pos{}%
- \fi%
- \or%
- \ifnum\count at consecutive=2\relax%
- \def\@pos{@middle}%
- \else%
- \def\@pos{@second}%
- \fi%
- \else%
- \def\@pos{@last}%
- \fi%
- \else%
- \ifnum\count at group=0\relax%
- \def\@pos{@first}%
- \else%
- \def\@pos{@middle}%
- \fi%
- \fi%
-% \end{macrocode}
-% If there were no consecutive references, just typeset the next
-% reference;
-% \begin{macrocode}
- \ifnum\count at consecutive=1\relax%
- \def\@tempa{#3}%
- \edef\@tempb{{\@beginref}{#1}{\@pos}}%
- \expandafter\@tempa\@tempb%
- \else%
-% \end{macrocode}
-% if there were only two consecutive references, typeset the first one
-% and return the second to the substack (we add an empty reference
-% after it just to make sure there's no further compression);
-% \begin{macrocode}
- \ifnum\count at consecutive=2\relax%
- \def\@tempa{#3}%
- \edef\@tempb{{\@beginref}{#1}{\@pos}}%
- \expandafter\@tempa\@tempb%
- \expandafter\cref at stack@push\expandafter%
- {\@endref,}{\@refstack}%
-% \end{macrocode}
-% otherwise, typeset a reference range.
-% \begin{macrocode}
- \else%
- \def\@tempa{#4}%
- \edef\@tempb{{\@beginref}{\@endref}{#1}{\@pos}}%
- \expandafter\@tempa\@tempb%
- \fi%
- \fi%
- \advance\count at group 1%
- \cref at isstackfull{\@refstack}%
- }% end loop over reference stack
- \endgroup}%
-% \end{macrocode}
-% \end{macro}
-%
-%
% \begin{macro}{\@setcpageref}
-% The internal \cmd{\@setcpageref} macro deals with actually typesetting
-% the page reference, by calling the appropriate type-dependent
-% formatting macro defined by \cmd{\crefformat} etc. |#1| contains the
-% reference itself, |#2| is either ``cref'' or ``Cref'' and determines
-% the capitalisation variant, and |#3| is either empty or one of
-% ``@second'', ``@middle'' or ``@last'', determining the type of
-% reference group to typeset.
+% \begin{macro}{\@setCpageref}
+% \begin{macro}{\@setlabelcpageref}
+% \begin{macro}{\@@setcpageref}
+% The \cmd{\@setcpageref}, \cmd{\@setCpageref} and
+% \cmd{\@setlabelcpageref} macros are called as appropriate by
+% \cmd{\@cref} to typeset a page reference. These macros just turn the
+% |cref|, |Cref| or |labelcref| variant into a macro argument and pass
+% it along to \cmd{\@@setcpageref}, which deals with actually
+% typesetting the page reference by calling the appropriate page
+% reference formatting macro defined by \cmd{\crefformat}|{page}| etc.
+% \cmd{\@@setcpageref} takes four arguments. |#1| is the variant passed
+% along by |\@set|\meta{x}|pageref|. |#2| contains the reference
+% itself. |#3| is either empty or one of ``@second'', ``@middle'' or
+% ``@last'', determining the type of page reference group to typeset.
% \begin{macrocode}
-\def\@setcpageref#1#2#3{%
- \expandafter\ifx\csname r@#1 at cref\endcsname\relax%
+\def\@setcpageref{\@@setcpageref{cref}}
+\def\@setCpageref{\@@setcpageref{Cref}}
+\def\@setlabelcpageref{\@@setcpageref{labelcref}}
+\def\@@setcpageref#1#2#3{%
+ \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
\protect\G at refundefinedtrue%
\nfss at text{\reset at font\bfseries ??}%
- \@latex at warning{Reference `#1' on page \thepage \space undefined}%
+ \@latex at warning{Reference `#2' on page \thepage \space undefined}%
\else%
- \cref at getpageref{#1}{\@temppage}%
- \expandafter\ifx\csname #2 at page@format#3\endcsname\relax%
+ \cpageref at getlabel{#2}{\@temppage}%
+ \expandafter\ifx\csname #1 at page@format#3\endcsname\relax%
% \end{macrocode}
% If reference format is undefined, but we're typesetting a
% \cmd{\labelcpageref}, fall back to default \cmd{\labelcref} format.
% \begin{macrocode}
- \edef\@tempa{#2}\def\@tempb{labelcref}%
+ \edef\@tempa{#1}\def\@tempb{labelcref}%
\ifx\@tempa\@tempb\relax%
- \expandafter\@@setcpageref\expandafter%
- {\csname #2 at default@format#3\endcsname}{#1}%
+ \expandafter\@@@setcpageref\expandafter%
+ {\csname #1 at default@format#3\endcsname}{#2}%
\else%
\protect\G at refundefinedtrue%
\nfss at text{\reset at font\bfseries ??}~\@temppage%
- \@latex at warning{#2 \space reference format for
+ \@latex at warning{ #1 reference format for
page references undefined}%
\fi%
\else%
- \expandafter\@@setcpageref\expandafter%
- {\csname #2 at page@format#3\endcsname}{#1}%
+ \expandafter\@@@setcpageref\expandafter%
+ {\csname #1 at page@format#3\endcsname}{#2}%
\fi%
\fi}%
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@setcpageref}
+% \begin{macro}{\@@@setcpageref}
% We separate out the very final typesetting step into a separate
% macro, in order to make it easier to redefine things later to make
% them work with the \package{hyperref} package.
% \begin{macrocode}
-\def\@@setcpageref#1#2{%
- \cref at getpageref{#2}{\@temppage}#1{\@temppage}{}{}}%
+\def\@@@setcpageref#1#2{%
+ \cpageref at getlabel{#2}{\@temppage}#1{\@temppage}{}{}}%
% \end{macrocode}
% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \begin{macro}{\@setcpagerefrange}
-% The internal \cmd{\@setcpagerefrange} macro deals with typesetting
-% page range references, just as \cmd{\@setcpageref} does for normal
-% page references.
+% \begin{macro}{\@setCpagerefrange}
+% \begin{macro}{\@setlabelcpagerefrange}
+% \begin{macro}{\@@setcpagerefrange}
+% The \cmd{\@@setcpagerefrange} macro deals with typesetting page range
+% references, just as \cmd{\@@setcpageref} does for normal page
+% references.
% \begin{macrocode}
-\def\@setcpagerefrange#1#2#3#4{%
+\def\@setcpagerefrange#1#2#3{\@@setcpagerefrange{#1}{#2}{cref}{#3}}%
+\def\@setCpagerefrange#1#2#3{\@@setcpagerefrange{#1}{#2}{Cref}{#3}}%
+\def\@setlabelcpagerefrange#1#2#3{\@@setcpagerefrange{#1}{#2}{labelcref}{#3}}%
+\def\@@setcpagerefrange#1#2#3#4{%
\begingroup%
% \end{macrocode}
% Check if both references are defined.
@@ -4098,13 +4002,13 @@
\@latex at warning{Reference `#2' on page \thepage \space%
undefined}%
\else%
- \cref at getpageref{#2}{\@pageb}%
+ \cpageref at getlabel{#2}{\@pageb}%
\nfss at text{\reset at font\bfseries ??}--\@pageb%
\fi%
\else%
\expandafter\ifx\csname r@#2 at cref\endcsname\relax%
\protect\G at refundefinedtrue%
- \cref at getpageref{#1}{\@pagea}%
+ \cpageref at getlabel{#1}{\@pagea}%
\@pagea--\nfss at text{\reset at font\bfseries ??}%
\@latex at warning{Reference `#2' on page \thepage %
\space undefined}%
@@ -4113,10 +4017,10 @@
% defined.
% \begin{macrocode}
\else%
- \cref at getpageref{#1}{\@pagea}%
- \cref at getpageref{#2}{\@pageb}%
+ \cpageref at getlabel{#1}{\@pagea}%
+ \cpageref at getlabel{#2}{\@pageb}%
\edef\@format{\expandafter\noexpand%
- \csname #3range at page@format#4\endcsname}%
+ \csname#3range at page@format#4\endcsname}%
\expandafter\ifx\@format\relax%
% \end{macrocode}
% If page reference format is undefined, but we're typesetting a
@@ -4125,12 +4029,12 @@
% \begin{macrocode}
\edef\@tempa{#3}\def\@tempb{labelcref}%
\ifx\@tempa\@tempb\relax%
- \expandafter\@@setcpagerefrange\expandafter%
- {\csname #3range at default@format#4\endcsname}{#1}{#2}%
+ \expandafter\@@@setcpagerefrange\expandafter%
+ {\csname#3range at default@format#4\endcsname}{#1}{#2}%
\else%
\protect\G at refundefinedtrue%
\nfss at text{\reset at font\bfseries ??}~\@pagea--\@pageb%
- \@latex at warning{#3\space reference range format for page
+ \@latex at warning{#3 reference range format for page
references undefined}%
\fi%
\else%
@@ -4137,7 +4041,7 @@
% \end{macrocode}
% typeset page reference range,
% \begin{macrocode}
- \expandafter\@@setcpagerefrange\expandafter{\@format}{#1}{#2}%
+ \expandafter\@@@setcpagerefrange\expandafter{\@format}{#1}{#2}%
\fi%
\fi%
\fi%
@@ -4144,15 +4048,18 @@
\endgroup}%
% \end{macrocode}
% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
-% \begin{macro}{\@@setcpagerefrange}
+% \begin{macro}{\@@@setcpagerefrange}
% We again separate out the very final typesetting step into a
% separate macro, in order to make it easier to redefine things later
% to make them work with the \package{hyperref} package.
% \begin{macrocode}
-\def\@@setcpagerefrange#1#2#3{%
- \cref at getpageref{#2}{\@pagea}%
- \cref at getpageref{#3}{\@pageb}%
+\def\@@@setcpagerefrange#1#2#3{%
+ \cpageref at getlabel{#2}{\@pagea}%
+ \cpageref at getlabel{#3}{\@pageb}%
#1{\@pagea}{\@pageb}{}{}{}{}}%
% \end{macrocode}
% \end{macro}
@@ -4485,6 +4392,7 @@
% \end{macrocode}
% \end{macro}
%
+%
% \begin{macro}{\@crefdefineformat}
% The \cmd{\@crefdefineformat} et al.\ macros construct calls to
% \cmd{\crefformat} et al.\ for the supplied reference type, which
@@ -4537,6 +4445,7 @@
% \end{macrocode}
% \end{macro}
%
+%
% \begin{macro}{\@crefrangedefineformat}
% Construct call to \cmd{\crefrangeformat}.
% \begin{macrocode}
@@ -4596,6 +4505,7 @@
% \end{macrocode}
% \end{macro}
%
+%
% \begin{macro}{\@crefdefinemultiformat}
% Construct call to \cmd{\crefmultiformat}.
% \begin{macrocode}
@@ -4690,6 +4600,7 @@
% \end{macrocode}
% \end{macro}
%
+%
% \begin{macro}{\@crefrangedefinemultiformat}
% Construct call to \cmd{\crefrangemultiformat}.
% \begin{macrocode}
@@ -4789,6 +4700,7 @@
% \end{macrocode}
% \end{macro}
%
+%
% \begin{macro}{\@labelcrefdefinedefaultformats}
% \cmd{\@labelcrefdefinedefaultformats} defines the default formats for
% the\linebreak[4] \cmd{\labelcref} command, which are used when no
@@ -4880,6 +4792,7 @@
% \end{macrocode}
% \end{macro}
%
+%
% \begin{macro}{\@crefdefineallformats}
% \cmd{\@crefdefineallformats} calls each of the above, to define all
% formats for the given type from the corresponding components.
@@ -4893,6 +4806,153 @@
% \end{macro}
%
%
+% \begin{macro}{\@crefcopyformats}
+% \cmd{\@crefcopyformats} copies any undefined formats for type |#2|
+% from those for type |#1|.
+% \begin{macrocode}
+\def\@crefcopyformats#1#2{%
+ \@ifundefined{cref@#2 at name}{%
+ \edef\@tempa{\expandafter\noexpand\csname cref@#2 at name\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname cref@#1 at name\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb%
+ \edef\@tempa{\expandafter\noexpand\csname cref@#2 at name@plural\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname cref@#1 at name@plural\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{cref@#2 at format}{%
+ \edef\@tempa{\expandafter\noexpand\csname cref@#2 at format\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname cref@#1 at format\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{crefrange@#2 at format}{%
+ \edef\@tempa{\expandafter\noexpand\csname crefrange@#2 at format\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname crefrange@#1 at format\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{cref@#2 at format@first}{%
+ \edef\@tempa{\expandafter\noexpand\csname cref@#2 at format@first\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname cref@#1 at format@first\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{cref@#2 at format@second}{%
+ \edef\@tempa{\expandafter\noexpand\csname cref@#2 at format@second\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname cref@#1 at format@second\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{cref@#2 at format@middle}{%
+ \edef\@tempa{\expandafter\noexpand\csname cref@#2 at format@middle\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname cref@#1 at format@middle\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{cref@#2 at format@last}{%
+ \edef\@tempa{\expandafter\noexpand\csname cref@#2 at format@last\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname cref@#1 at format@last\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{crefrange@#2 at format@first}{%
+ \edef\@tempa{\expandafter\noexpand\csname crefrange@#2 at format@first\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname crefrange@#1 at format@first\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{crefrange@#2 at format@second}{%
+ \edef\@tempa{\expandafter\noexpand\csname crefrange@#2 at format@second\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname crefrange@#1 at format@second\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{crefrange@#2 at format@middle}{%
+ \edef\@tempa{\expandafter\noexpand\csname crefrange@#2 at format@middle\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname crefrange@#1 at format@middle\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{crefrange@#2 at format@last}{%
+ \edef\@tempa{\expandafter\noexpand\csname crefrange@#2 at format@last\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname crefrange@#1 at format@last\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+%
+ \@ifundefined{Cref@#2 at name}{%
+ \edef\@tempa{\expandafter\noexpand\csname Cref@#2 at name\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname Cref@#1 at name\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb%
+ \edef\@tempa{\expandafter\noexpand\csname Cref@#2 at name@plural\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname Cref@#1 at name@plural\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{Cref@#2 at format}{%
+ \edef\@tempa{\expandafter\noexpand\csname Cref@#2 at format\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname Cref@#1 at format\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{Crefrange@#2 at format}{%
+ \edef\@tempa{\expandafter\noexpand\csname Crefrange@#2 at format\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname Crefrange@#1 at format\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{Cref@#2 at format@first}{%
+ \edef\@tempa{\expandafter\noexpand\csname Cref@#2 at format@first\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname Cref@#1 at format@first\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{Cref@#2 at format@second}{%
+ \edef\@tempa{\expandafter\noexpand\csname Cref@#2 at format@second\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname Cref@#1 at format@second\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{Cref@#2 at format@middle}{%
+ \edef\@tempa{\expandafter\noexpand\csname Cref@#2 at format@middle\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname Cref@#1 at format@middle\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{Cref@#2 at format@last}{%
+ \edef\@tempa{\expandafter\noexpand\csname Cref@#2 at format@last\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname Cref@#1 at format@last\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{Crefrange@#2 at format@first}{%
+ \edef\@tempa{\expandafter\noexpand\csname Crefrange@#2 at format@first\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname Crefrange@#1 at format@first\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{Crefrange@#2 at format@second}{%
+ \edef\@tempa{\expandafter\noexpand\csname Crefrange@#2 at format@second\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname Crefrange@#1 at format@second\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{Crefrange@#2 at format@middle}{%
+ \edef\@tempa{\expandafter\noexpand\csname Crefrange@#2 at format@middle\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname Crefrange@#1 at format@middle\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{Crefrange@#2 at format@last}{%
+ \edef\@tempa{\expandafter\noexpand\csname Crefrange@#2 at format@last\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname Crefrange@#1 at format@last\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+%
+ \@ifundefined{labelcref@#2 at format}{%
+ \edef\@tempa{\expandafter\noexpand\csname labelcref@#2 at format\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname labelcref@#1 at format\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{labelcrefrange@#2 at format}{%
+ \edef\@tempa{\expandafter\noexpand\csname labelcrefrange@#2 at format\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname labelcrefrange@#1 at format\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{labelcref@#2 at format@first}{%
+ \edef\@tempa{\expandafter\noexpand\csname labelcref@#2 at format@first\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname labelcref@#1 at format@first\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{labelcref@#2 at format@second}{%
+ \edef\@tempa{\expandafter\noexpand\csname labelcref@#2 at format@second\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname labelcref@#1 at format@second\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{labelcref@#2 at format@middle}{%
+ \edef\@tempa{\expandafter\noexpand\csname labelcref@#2 at format@middle\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname labelcref@#1 at format@middle\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{labelcref@#2 at format@last}{%
+ \edef\@tempa{\expandafter\noexpand\csname labelcref@#2 at format@last\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname labelcref@#1 at format@last\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{labelcrefrange@#2 at format@first}{%
+ \edef\@tempa{\expandafter\noexpand\csname labelcrefrange@#2 at format@first\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname labelcrefrange@#1 at format@first\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{labelcrefrange@#2 at format@second}{%
+ \edef\@tempa{\expandafter\noexpand\csname labelcrefrange@#2 at format@second\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname labelcrefrange@#1 at format@second\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{labelcrefrange@#2 at format@middle}{%
+ \edef\@tempa{\expandafter\noexpand\csname labelcrefrange@#2 at format@middle\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname labelcrefrange@#1 at format@middle\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{labelcrefrange@#2 at format@last}{%
+ \edef\@tempa{\expandafter\noexpand\csname labelcrefrange@#2 at format@last\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname labelcrefrange@#1 at format@last\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
% \subsubsection{Format definition commands}
% \label{sec:crefformat}
% \begin{macro}{\crefformat}
@@ -4907,7 +4967,7 @@
% control over the format of different reference types. They override
% the component-based formats, simply using the supplied arguments to
% define appropriately named formatting macros, which are called by
-% \cmd{\@setcref} etc. If the corresponding \cmd{\Crefformat} or
+% \cmd{\@@setcref} etc. If the corresponding \cmd{\Crefformat} or
% \cmd{\crefformat} variant is not already defined, they define it to
% be a version with the first letter capitalised or lower-cased.
% \begin{macrocode}
@@ -5212,11 +5272,21 @@
% \package{cleveref}.
% \begin{macrocode}
\let\if at cref@hyperrefloaded\iffalse%
+\let\cref at addtoreset\@addtoreset%
\@ifpackageloaded{hyperref}{%
\@ifpackagewith{hyperref}{implicit=false}{}{%
\let\if at cref@hyperrefloaded\iftrue%
\PackageInfo{cleveref}{`hyperref' support loaded}%
% \end{macrocode}
+% \package{hyperref} redefines the \LaTeX{} kernel \cmd{\@addtoreset}
+% macro (sigh), but we sometimes need the vanilla version without the
+% \package{hyperref} shennanigans. \package{hyperref} saves the
+% original in \cmd{\HyOrg at addtoreset}. So we create yet
+% \emph{another} version called \cmd{\cref at addtotreset}, which is always
+% let to the original \cmd{\@addtoreset}, whereever that's found.
+% \begin{macrocode}
+ \let\cref at addtoreset\HyOrg at addtoreset%
+% \end{macrocode}
% \begin{macro}{\cref at hyperlinkname}
% \begin{macro}{\cref at hyperlinkurl}
% We define a utility macro to extract the hyperlink supplied by
@@ -5244,7 +5314,7 @@
% \package{cleveref}, so we don't bother providing \cmd{\hyper@@link}'s
% optional argument.)
% \begin{macrocode}
- \def\cref at hyperlink#1#2#3\@nil{\hyper@@link[link]{#1}{#2}{#3}}
+ \def\cref at hyperlink#1#2#3\@nil{\hyper@@link[link]{#1}{#2}{#3}}%
% \end{macrocode}
% \end{macro}
%
@@ -5289,9 +5359,12 @@
\let\refstepcounter at noarg\cref at old@refstepcounter%
\def\refstepcounter at optarg[#1]#2{%
\cref at old@refstepcounter{#2}%
+ \@ifundefined{cref@#1 at alias}%
+ {\def\@tempa{#1}}%
+ {\def\@tempa{\csname cref@#1 at alias\endcsname}}%
\protected at edef\cref at currentlabel{%
\expandafter\cref at override@label at type%
- \cref at currentlabel\@nil{#1}}}%
+ \cref at currentlabel\@nil{\@tempa}}}%
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -5303,11 +5376,11 @@
% that needs to be redefined.
% \begin{macrocode}
\@ifundefined{appendix}{}{%
- \g at addto@macro\appendix{%
+ \def\appendix{%
\@ifundefined{chapter}{%
- \def\H at refstepcounter#1{%
- \cref at old@H at refstepcounter{#1}%
- \cref at constructprefix{#1}{\cref at result}%
+ \def\H at refstepcounter##1{%
+ \cref at old@H at refstepcounter{##1}%
+ \cref at constructprefix{##1}{\cref at result}%
% \end{macrocode}
% We add a large value to the front of the counter data, to force
% references to anything in appendices to be sorted after
@@ -5321,40 +5394,41 @@
% \end{macrocode}
% Override the cross-reference type of sectioning commands.
% \begin{macrocode}
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{section}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [appendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [appendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{subsection}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [subappendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [subappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{subsubsection}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [subsubappendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [subsubappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \@ifundefined{cref@#1 at alias}%
- {\def\@tempa{#1}}%
- {\def\@tempa{\csname cref@#1 at alias\endcsname}}%
+ \@ifundefined{cref@##1 at alias}%
+ {\def\@tempa{##1}}%
+ {\def\@tempa{\csname cref@##1 at alias\endcsname}}%
\protected at edef\cref at currentlabel{%
- [\@tempa][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [\@tempa][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\fi%
\fi%
\fi}%
+ \cref at old@appendix%
}{%
- \def\H at refstepcounter#1{%
- \cref at old@H at refstepcounter{#1}%
- \cref at constructprefix{#1}{\cref at result}%
+ \def\H at refstepcounter##1{%
+ \cref at old@H at refstepcounter{##1}%
+ \cref at constructprefix{##1}{\cref at result}%
% \end{macrocode}
% Again, the large value added to the front of the counter data
% forces references to appendix items to be sorted last.
@@ -5367,45 +5441,45 @@
% \end{macrocode}
% Override the cross-reference type of sectioning commands.
% \begin{macrocode}
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{chapter}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [appendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [appendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{section}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [subappendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [subappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{subsection}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [subsubappendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [subsubappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{subsubsection}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [subsubsubappendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [subsubsubappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \@ifundefined{cref@#1 at alias}%
- {\def\@tempa{#1}}%
- {\def\@tempa{\csname cref@#1 at alias\endcsname}}%
+ \@ifundefined{cref@##1 at alias}%
+ {\def\@tempa{##1}}%
+ {\def\@tempa{\csname cref@##1 at alias\endcsname}}%
\protected at edef\cref at currentlabel{%
- [\@tempa][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [\@tempa][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\fi%
\fi%
\fi%
\fi}%
- }%
+ \cref at old@appendix}%
}%
}% end of \@ifundefined{appendix}
% \end{macrocode}
@@ -5414,21 +5488,23 @@
% \begin{macro}{\cref*}
% \begin{macro}{\Cref*}
% \begin{macro}{\@crefstar}
-% \begin{macro}{\@crefnostar}
% We redefine \cmd{\cref} and all the others to allow starred variants,
% which don't create hyperlinks. The starred variants simply set a
% flag, which is tested in the very final stage of reference
-% typesetting in \cmd{\@@setcref}, \cmd{\@@setcrefrange},
-% \cmd{\@@setcpageref} and \cmd{\@@setcpagerefrange} (below).
+% typesetting in \cmd{\@@@setcref}, \cmd{\@@@setcrefrange},
+% \cmd{\@@@setcpageref} and \cmd{\@@@setcpagerefrange} (below).
% \begin{macrocode}
\DeclareRobustCommand{\cref}{%
- \@ifstar{\@crefstar{cref}}{\@crefnostar{cref}}}%
+ \@ifstar{\@crefstar{cref}}{\@cref{cref}}}%
\DeclareRobustCommand{\Cref}{%
- \@ifstar{\@crefstar{Cref}}{\@crefnostar{Cref}}}%
- \def\@crefnostar#1#2{\@cref{#1}{#2}}%
+ \@ifstar{\@crefstar{Cref}}{\@cref{Cref}}}%
\def\@crefstar#1#2{%
\@crefstarredtrue\@cref{#1}{#2}\@crefstarredfalse}%
% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
% \begin{macro}{\crefrange*}
% \begin{macro}{\Crefrange*}
% \begin{macro}{\@crefrangestar}
@@ -5438,62 +5514,58 @@
\@ifstar{\@crefrangestar{cref}}{\@crefrangenostar{cref}}}%
\DeclareRobustCommand{\Crefrange}{%
\@ifstar{\@crefrangestar{Cref}}{\@crefrangenostar{Cref}}}%
- \def\@crefrangenostar#1#2#3{\@setcrefrange{#2}{#3}{#1}{}}%
+ \def\@crefrangenostar#1#2#3{\@@setcrefrange{#1}{#2}{#3}{}}
\def\@crefrangestar#1#2#3{%
- \@crefstarredtrue\@setcrefrange{#2}{#3}{#1}{}\@crefstarredfalse}%
+ \@crefstarredtrue\@@setcrefrange{#1}{#2}{#3}{}\@crefstarredfalse}%
% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
% \begin{macro}{\cpageref*}
% \begin{macro}{\Cpageref*}
-% \begin{macro}{\@cpagerefstar}
-% \begin{macro}{\@cpagerefnostar}
% \begin{macrocode}
\DeclareRobustCommand{\cpageref}{%
- \@ifstar{\@cpagerefstar{cref}}{\@cpagerefnostar{cref}}}%
+ \@ifstar{\@crefstar{cpageref}}{\@cref{cpageref}}}%
\DeclareRobustCommand{\Cpageref}{%
- \@ifstar{\@cpagerefstar{Cref}}{\@cpagerefnostar{Cref}}}%
- \def\@cpagerefnostar#1#2{%
- \@cpageref{#1}{#2}{\@setcpageref}{\@setcpagerefrange}}%
- \def\@cpagerefstar#1#2{%
- \@crefstarredtrue%
- \@cpageref{#1}{#2}{\@setcpageref}{\@setcpagerefrange}%
- \@crefstarredfalse}%
+ \@ifstar{\@crefstar{Cpageref}}{\@cref{Cpageref}}}%
% \end{macrocode}
+% \end{macro}
+% \end{macro}
% \begin{macro}{\cpagerefrange*}
% \begin{macro}{\Cpagerefrange*}
% \begin{macro}{\@cpagerefrangestar}
-% \begin{macro}{\@cpagerefrangenostar}
% \begin{macrocode}
\DeclareRobustCommand{\cpagerefrange}{%
- \@ifstar{\@cpagerefrangestar{cref}}{\@cpagerefrangenostar{cref}}}%
+ \@ifstar{\@cpagerefrangestar{cpageref}}{\@setcpagerefrange}}%
\DeclareRobustCommand{\Cpagerefrange}{%
- \@ifstar{\@cpagerefrangestar{Cref}}{\@cpagerefrangenostar{Cref}}}%
- \def\@cpagerefrangenostar#1#2#3{\@setcpagerefrange{#2}{#3}{#1}{}}%
+ \@ifstar{\@cpagerefrangestar{Cpageref}}{\@setCpagerefrange}}%
\def\@cpagerefrangestar#1#2#3{%
\@crefstarredtrue%
- \@setcpagerefrange{#2}{#3}{#1}{}%
+ \@@setcpagerefrange{#1}{#2}{#3}{}%
\@crefstarredfalse}%
% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
% \begin{macro}{\labelcref*}
% \begin{macro}{\labelcpageref*}
% \begin{macro}{\@labelcrefstar}
-% \begin{macro}{\@labelcrefnostar}
% \begin{macro}{\@labelcpagerefstar}
-% \begin{macro}{\@labelcpagerefnostar}
% \begin{macrocode}
\DeclareRobustCommand{\labelcref}{%
- \@ifstar{\@labelcrefstar}{\@labelcrefnostar}}%
- \def\@labelcrefnostar#1{\@cref{labelcref}{#1}}%
+ \@ifstar{\@labelcrefstar}{\@cref{labelcref}}}%
\def\@labelcrefstar#1{%
\@crefstarredtrue%
\@cref{labelcref}{#1}%
\@crefstarredfalse}%
\DeclareRobustCommand{\labelcpageref}{%
- \@ifstar{\@labelcpagerefstar}{\@labelcpagerefnostar}}%
- \def\@labelcpagerefnostar#1{%
- \@cpageref{labelcref}{#1}{\@setcpageref}{\@setcpagerefrange}}%
+ \@ifstar{\@labelcpagerefstar}{\@cref{labelcpageref}}}%
\def\@labelcpagerefstar#1{%
\@crefstarredtrue%
- \@cpageref{labelcref}{#1}{\@setcpageref}{\@setcpagerefrange}%
+ \@cref{labelcpageref}{#1}%
\@crefstarredfalse}%
% \end{macrocode}
% \end{macro}
@@ -5500,35 +5572,17 @@
% \end{macro}
% \end{macro}
% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
%
-% \begin{macro}{\@@setcref}
-% \begin{macro}{\@@setcrefrange}
-% \begin{macro}{\@@setcpageref}
-% \begin{macro}{\@@setcpagerefrange}
+% \begin{macro}{\@@@setcref}
+% \begin{macro}{\@@@setcrefrange}
+% \begin{macro}{\@@@setcpageref}
+% \begin{macro}{\@@@setcpagerefrange}
% Redefine the final reference typesetting macros to create hyperlinks
% (unless the starred flag is set), using the extra arguments supplied
% in \cmd{\r@\meta{label}} (via the \file{aux} file) by
% \package{hyperref}.
% \begin{macrocode}
- \def\@@setcref#1#2{%
+ \def\@@@setcref#1#2{%
\cref at getlabel{#2}{\@templabel}%
\if at crefstarred%
#1{\@templabel}{}{}%
@@ -5537,7 +5591,7 @@
\edef\@tempurl{\cref at hyperlinkurl{#2}}%
#1{\@templabel}{\cref at hyperlink{\@tempurl}{\@tempname}}{\@nil}%
\fi}%
- \def\@@setcrefrange#1#2#3{%
+ \def\@@@setcrefrange#1#2#3{%
\cref at getlabel{#2}{\@labela}%
\cref at getlabel{#3}{\@labelb}%
\if at crefstarred%
@@ -5551,8 +5605,8 @@
{\cref at hyperlink{\@tempurla}{\@tempnamea}}{\@nil}%
{\cref at hyperlink{\@tempurlb}{\@tempnameb}}{\@nil}%
\fi}%
- \def\@@setcpageref#1#2{%
- \cref at getpageref{#2}{\@temppage}%
+ \def\@@@setcpageref#1#2{%
+ \cpageref at getlabel{#2}{\@temppage}%
\if at crefstarred%
#1{\@temppage}{}{}%
\else%
@@ -5560,9 +5614,9 @@
\edef\@tempurl{\cref at hyperlinkurl{#2}}%
#1{\@temppage}{\cref at hyperlink{\@tempurl}{\@tempname}}{\@nil}%
\fi}%
- \def\@@setcpagerefrange#1#2#3{%
- \cref at getpageref{#2}{\@pagea}%
- \cref at getpageref{#3}{\@pageb}%
+ \def\@@@setcpagerefrange#1#2#3{%
+ \cpageref at getlabel{#2}{\@pagea}%
+ \cpageref at getlabel{#3}{\@pageb}%
\if at crefstarred%
#1{\@pagea}{\@pageb}{}{}{}{}%
\else%
@@ -5599,10 +5653,131 @@
\protected at edef\cref at currentlabel{%
[\@tempa][\arabic{#1}][\cref at result]%
\csname p@#1\endcsname\csname the#1\endcsname}}%
- \fi%
+% \end{macrocode}
+% We also need to redefine |\appendix| to use
+% \begin{macrocode}
+ \@ifundefined{appendix}{}{%
+ \def\appendix{%
+ \@ifundefined{chapter}{%
+ \def\H at refstepcounter##1{%
+ \cref at old@H at refstepcounter{##1}%
+ \cref at constructprefix{##1}{\cref at result}%
+% \end{macrocode}
+% We add a large value to the front of the counter data, to force
+% references to anything in appendices to be sorted after
+% everything else.
+% \begin{macrocode}
+ \ifx\cref at result\@empty%
+ \def\cref at result{2147483647}%
+ \else%
+ \edef\cref at result{2147483647,\cref at result}%
+ \fi%
+% \end{macrocode}
+% Override the cross-reference type of sectioning commands.
+% \begin{macrocode}
+ \def\@tempa{##1}%
+ \def\@tempb{section}%
+ \ifx\@tempa\@tempb%
+ \protected at edef\cref at currentlabel{%
+ [appendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
+ \else%
+ \def\@tempa{##1}%
+ \def\@tempb{subsection}%
+ \ifx\@tempa\@tempb%
+ \protected at edef\cref at currentlabel{%
+ [subappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
+ \else%
+ \def\@tempa{##1}%
+ \def\@tempb{subsubsection}%
+ \ifx\@tempa\@tempb%
+ \protected at edef\cref at currentlabel{%
+ [subsubappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
+ \else%
+ \@ifundefined{cref@##1 at alias}%
+ {\def\@tempa{##1}}%
+ {\def\@tempa{\csname cref@##1 at alias\endcsname}}%
+ \protected at edef\cref at currentlabel{%
+ [\@tempa][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
+ \fi%
+ \fi%
+ \fi}%
+ \cref at old@appendix%
+ }{%
+ \def\H at refstepcounter##1{%
+ \cref at old@H at refstepcounter{##1}%
+ \cref at constructprefix{##1}{\cref at result}%
+% \end{macrocode}
+% Again, the large value added to the front of the counter data
+% forces references to appendix items to be sorted last.
+% \begin{macrocode}
+ \ifx\cref at result\@empty%
+ \def\cref at result{2147483647}%
+ \else%
+ \edef\cref at result{2147483647,\cref at result}%
+ \fi%
+% \end{macrocode}
+% Override the cross-reference type of sectioning commands.
+% \begin{macrocode}
+ \def\@tempa{##1}%
+ \def\@tempb{chapter}%
+ \ifx\@tempa\@tempb%
+ \protected at edef\cref at currentlabel{%
+ [appendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
+ \else%
+ \def\@tempa{##1}%
+ \def\@tempb{section}%
+ \ifx\@tempa\@tempb%
+ \protected at edef\cref at currentlabel{%
+ [subappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
+ \else%
+ \def\@tempa{##1}%
+ \def\@tempb{subsection}%
+ \ifx\@tempa\@tempb%
+ \protected at edef\cref at currentlabel{%
+ [subsubappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
+ \else%
+ \def\@tempa{##1}%
+ \def\@tempb{subsubsection}%
+ \ifx\@tempa\@tempb%
+ \protected at edef\cref at currentlabel{%
+ [subsubsubappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
+ \else%
+ \@ifundefined{cref@##1 at alias}%
+ {\def\@tempa{##1}}%
+ {\def\@tempa{\csname cref@##1 at alias\endcsname}}%
+ \protected at edef\cref at currentlabel{%
+ [\@tempa][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
+ \fi%
+ \fi%
+ \fi%
+ \fi}%
+ \cref at old@appendix}%
+ }%
+ }% end of \@ifundefined{appendix}
+ \fi% end of \if at cref@hyperrefloaded
\let\if at cref@hyperrefloaded\iffalse%
}% end of \@ifpackageloaded{hyperref}
% \end{macrocode}
+% Add check to AtBeginDocument to throw error if \package{hyperref} was
+% loaded after cleveref.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \if at cref@hyperrefloaded\else%
+ \@ifpackageloaded{hyperref}{%
+ \PackageError{cleveref}{cleveref must be loaded after hyperref!}%
+ {Package load order is wrong: load cleveref *after* hyperref.}
+ }{}%
+ \fi}
+% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
@@ -5618,7 +5793,7 @@
% \cmd{\cref} instead of \cmd{\ref} to produce the reference. Since
% \cmd{\cref} can cope with multiple references, we extend the page
% referencing magic of \cmd{\vref} et al.\ to use \cmd{\cpageref}
-% instead, assisted by \cmd{\@setvpageref} and \cmd{\@vpagerefrange}
+% instead, assisted by \cmd{\@@setvpageref} and \cmd{\@vpagerefrange}
% (which typeset page references using \package{varioref} commands).
% The former takes care of multi-references, the latter take care of
% the \package{varioref} page referencing magic.
@@ -5625,7 +5800,9 @@
% \end{macro}
%
% \begin{macrocode}
+\let\if at cref@variorefloaded\iffalse%
\@ifpackageloaded{varioref}{%
+ \let\if at cref@variorefloaded\iftrue%
\PackageInfo{cleveref}{`varioref' support loaded}%
\PackageInfo{cleveref}{`cleveref' supersedes `varioref's
\string\labelformat command}%
@@ -5632,6 +5809,91 @@
% \end{macrocode}
%
%
+% \begin{macro}{\cref at old@@vpageref}
+% Unfortunately, \package{varioref}'s |\@@vpageref| macro calls a
+% |\vref at label| \emph{before} it typesets the page reference. The
+% |\protected at write| within |\vref at label| seems to prevent an |\unskip|
+% command coming after the |\vref at label| from removing any space that
+% was inserted before the |\vref at label|. This means that setting a
+% |\reftext|\meta{x} command to |\unskip| won't work; it won't properly
+% remove any preceding space in the event that an empty page reference
+% is typeset.
+%
+% This didn't matter in the original \package{varioref} implementation,
+% because it \emph{always} removed any preceding space, then inserted
+% its own space \emph{after} the |\vref at label|, which the |\unskip|
+% could then gobble. But we want to get rid of this irritating
+% always-space-gobbling behaviour here. So we have to redefine
+% |\@@vpageref| (here renamed |\cref at old@@vpageref|) in order to move
+% the |\vref at label| to the end of the macro, after the page reference
+% has been typeset. We also remove the |\unskip| from the start of
+% |\@@vpageref|.
+% \begin{macrocode}
+ \def\cref at old@@vpageref#1[#2]#3{%
+ \leavevmode%\unskip <<<
+ \global\advance\c at vrcnt\@ne\relax%
+ \vref at pagenum\@tempa{\the\c at vrcnt @vr}%
+ \vref at pagenum\@tempb{\the\c at vrcnt @xvr}%
+ %\vref at label{\the\c at vrcnt @xvr}% <<<
+ \ifx\@tempa\@tempb\else%
+ \vref at err{\noexpand\vref or \noexpand\vpageref at page boundary
+ \@tempb-\@tempa\space (may loop)%
+ }%
+ \fi%
+ \vrefpagenum\thevpagerefnum{#3}%
+ \vref at space%
+ \ifx\@tempa\thevpagerefnum%
+ \def\@tempc{#1}%
+ \ifx\@tempc\@empty%
+ \unskip%
+ \else%
+ #1%
+ \fi%
+ \else%
+ #2%
+ \is at pos@number\thevpagerefnum%
+ {%
+ \is at pos@number\@tempa%
+ {\@tempcnta\@tempa%
+ \advance\@tempcnta\@ne\relax%
+ }%
+ {\@tempcnta\maxdimen}%
+ \ifnum \thevpagerefnum =\@tempcnta%
+ \ifodd\@tempcnta%
+ \if at twoside%
+ \reftextfaceafter%
+ \else%
+ \reftextafter%
+ \fi%
+ \else%
+ \reftextafter%
+ \fi%
+ \else%
+ \advance\@tempcnta-2\relax%
+ \ifnum \thevpagerefnum =\@tempcnta%
+ \ifodd\@tempcnta%
+ \reftextbefore%
+ \else%
+ \if at twoside%
+ \reftextfacebefore%
+ \else%
+ \reftextbefore%
+ \fi%
+ \fi%
+ \else%
+ \reftextfaraway{#3}%
+ \fi%
+ \fi%
+ }%
+ {\reftextfaraway{#3}}%
+ \fi%
+ \vref at label{\the\c at vrcnt @xvr}% <<<
+ \vref at label{\the\c at vrcnt @vr}%
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+%
% \begin{macro}{\cref@@vpageref}
% We first enhance the core \package{varioref} |\vpageref| macro to
% allow it to cope with lists of page references. This is done by
@@ -5641,10 +5903,18 @@
% \package{varioref}'s own page-referencing commands. (The alternative
% version of \cmd{\vpagerefrange} is there to facilitate later
% redefinitions.)
+%
+% Most of the work is done by defining suitable |\@setvpageref| etc.\
+% commands (below), called as appropriate by our ever-faithful
+% \cmd{\@cref} work-horse. We only make use of one of the optional
+% arguments to the original \package{varioref} |\@@vpageref| macro,
+% which we store here in \cmd{\cref@@vpageref} for later.
% \begin{macrocode}
\def\cref@@vpageref#1[#2]#3{%
- \@cpageref{cref}{#3}%
- {\@setvpageref[#1][\vref at space]}{\@setvpagerefrange[#1]}}%
+ \begingroup%
+ \def\cref@@vpageref at arg{#1}%
+ \@cref{vpageref}{#3}%
+ \endgroup}%
% \end{macrocode}
% \end{macro}
%
@@ -5675,10 +5945,9 @@
\cref@@vpageref{\reftextcurrent}[]{#2}%
\endgroup}%
\def\cref at vrefrange#1#2#3{%
- \@setcrefrange{#2}{#3}{#1}{}\@setcref at space\vpagerefrange{#2}{#3}}%
+ \@@setcrefrange{#1}{#2}{#3}{}\@setcref at space\vpagerefrange{#2}{#3}}%
\def\cref at fullref#1#2{%
- \@cref{#1}{#2}\@setcref at space%
- \@cpageref{cref}{#2}{\@setfullpageref}{\@setfullpagerefrange}}%
+ \@cref{#1}{#2}\@setcref at space\@cref{fullpageref}{#2}}%
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -5720,29 +5989,22 @@
%
%
% \begin{macro}{\@setvpageref}
-% The \cmd{\@setvpageref} and \cmd{\@setvpagerefrange} macros typeset
+% The \cmd{\@setvpageref} macro is called by \cmd{\@cref} to typeset
% page references using \package{varioref} commands, tweaked to work
-% with the enhanced \package{cleveref} page-referencing features. They
-% are passed to \cmd{\@cpageref} by the \package{cleveref}-enhanced
-% \cmd{\vpageref} command, thereby combining the \package{cleveref} and
-% \package{varioref} page-referencing features.
-%
-% |#1| and |#2| are \package{varioref} arguments that get passed
-% straight through to the (original) \package{varioref} |\@@vpageref|
-% macro. |#3| is the reference label itself. |#4| is either |cref| or
-% |Cref|, identifying the capitalisation variant, and |#5| is either
-% empty if we're typesetting a single page reference, or one of
-% |@first|, |@second|, |@middle| or |@end|, identifying where the page
-% reference comes in a multi-reference. The arguments in square
-% brackets are passed all the way through from the
-% \package{cleveref}-enhanced \package{varioref} commands. The others
-% are added by |\@cpageref| when it calls |\@setvpageref|.
+% with the enhanced \package{cleveref} page-referencing features.
+% |#1| is the reference itself. |#2| is either empty if we're
+% typesetting a single page reference, or one of |@first|, |@second|,
+% |@middle| or |@end|, identifying where the page reference comes in a
+% multi-reference. We only make use of one of the optional arguments to
+% the original \package{varioref} |\@@vpageref| macro, available here
+% as \cmd{\cref@@vpageref at arg} (stored there by \cmd{\cref@@vpageref},
+% above).
% \begin{macrocode}
- \def\@setvpageref[#1][#2]#3#4#5{%
+ \def\@setvpageref#1#2{%
% \end{macrocode}
% Add the appropriate conjunction before the page reference.
% \begin{macrocode}
- \cref at vpagerefconjunction{#5}%
+ \cref at vpagerefconjunction{#2}%
% \end{macrocode}
% Undefining |\vref at space| prevents the original \package{varioref}
% |\@@vpageref| macro from |\unskip|ing any preceding space and
@@ -5761,17 +6023,18 @@
% typeset the page reference.
% \begin{macrocode}
\begingroup%
- \cref at patchreftexts{#5}%
- \@@setvpageref{#1}[#2]{#3}%
+ \cref at patchreftexts{#2}%
+ \expandafter\@@@setvpageref\expandafter%
+ {\cref@@vpageref at arg}[\vref at space]{#1}%
\endgroup}%
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@setvpageref}
+% \begin{macro}{\@@@setvpageref}
% We separate out the final type setting step, as always, to make it
% easier to redefine things later.
% \begin{macrocode}
- \def\@@setvpageref#1[#2]#3{\cref at old@@vpageref{#1}[#2]{#3}}%
+ \let\@@@setvpageref\cref at old@@vpageref%
% \end{macrocode}
% \end{macro}
%
@@ -5778,22 +6041,19 @@
%
% \begin{macro}{\@setvpagerefrange}
% |\@setvpagerefrange| is similar to |\@setvpageref|, but typesets page
-% ranges. |#1| is a \package{varioref} spacing argument that get passed
-% straight through to the \package{varioref} |\vpagerefrange| macro.
-% |#2| and |#3| are the labels themselves. |#4| is either |cref| or
-% |Cref|, identifying the capitalisation variant, and |#5| is either
-% empty if we're typesetting a single page range, or one of |@first|,
+% ranges. |#1| and |#2| are the labels themselves. |#3| is either empty
+% if we're typesetting a single page range, or one of |@first|,
% |@second|, |@middle| or |@end|, identifying where the page reference
-% comes in a multi-reference. The arguments in square brackets are
-% passed all the way through from the \package{cleveref}-enhanced
-% \package{varioref} commands. The others are added by |\@cpageref|
-% when it calls |\@setvpagerefrange|.
+% comes in a multi-reference. We only make use of one of the optional
+% arguments to the original \package{varioref} |\@@vpageref| macro,
+% available here as \cmd{\cref@@vpageref at arg} (stored there by
+% \cmd{\cref@@vpageref}, above).
% \begin{macrocode}
- \def\@setvpagerefrange[#1]#2#3#4#5{%
+ \def\@setvpagerefrange#1#2#3{%
% \end{macrocode}
% Add the appropriate conjunction before the page range reference.
% \begin{macrocode}
- \cref at vpagerefconjunction{#5}%
+ \cref at vpagerefconjunction{#3}%
% \end{macrocode}
% Unlike |\vpageref|, \package{varioref}'s |\vpagerefrange| command
% \emph{doesn't} go in for quite the same space-mangling behaviour. We
@@ -5806,26 +6066,30 @@
% typeset the page range.
% \begin{macrocode}
\begingroup%
- \cref at patchreftexts{#5}%
- \@@setvpagerefrange[#1]{#2}{#3}%
+ \cref at patchreftexts{#3}%
+ \expandafter\@@@setvpagerefrange\expandafter%
+ [\cref@@vpageref at arg]{#1}{#2}%
\endgroup}%
% \end{macrocode}
+% \end{macro}
%
+% \begin{macro}{\@@@setvpagerefrange}
% Again, we separate out the final typesetting step, to aid later
% redefinition.
% \begin{macrocode}
- \def\@@setvpagerefrange[#1]#2#3{\vpagerefrange[#1]{#2}{#3}}%
+ \let\@@@setvpagerefrange\vpagerefrange
% \end{macrocode}
% \end{macro}
%
-%
% \begin{macro}{\@setfullpageref}
+% Ditto for \cmd{\@setfullpageref}, with |#1| the reference, |#2|
+% either empty, |@first|, |@second|, |@middle| or |@end|.
% \begin{macrocode}
- \def\@setfullpageref#1#2#3{%
+ \def\@setfullpageref#1#2{%
% \end{macrocode}
% Add the appropriate conjunction before the page reference.
% \begin{macrocode}
- \cref at vpagerefconjunction{#3}%
+ \cref at vpagerefconjunction{#2}%
% \end{macrocode}
% Modify the \package{varioref} |\reftext|\meta{x} commands as
% appropriate for the page reference we're currently typesetting, then
@@ -5832,25 +6096,30 @@
% typeset the page reference.
% \begin{macrocode}
\begingroup%
- \cref at patchreftexts{#3}%
- \@@setfullpageref{#1}%
+ \cref at patchreftexts{#2}%
+ \@@@setfullpageref{#1}%
\endgroup}%
% \end{macrocode}
+% \end{macro}
%
-% Separate out the final typesetting step, as usual.
+% \begin{macro}{\@@@setfullpageref}
+% Separate out the final typesetting step, as usual.
% \begin{macrocode}
- \def\@@setfullpageref#1{\reftextfaraway{#1}}%
+ \let\@@@setfullpageref\reftextfaraway%
% \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\@setfullpagerefrange}
+% Ditto for \cmd{\@setfullpagerefrange}, with |#1| and |#2| the
+% references, |#3| either empty, |@first|, |@second|, |@middle| or
+% |@end|.
% \begin{macrocode}
- \def\@setfullpagerefrange#1#2#3#4{%
+ \def\@setfullpagerefrange#1#2#3{%
% \end{macrocode}
% Add the appropriate conjunction before the page reference.
% \begin{macrocode}
- \cref at vpagerefconjunction{#4}%
+ \cref at vpagerefconjunction{#3}%
% \end{macrocode}
% Modify the \package{varioref} |\reftext|\meta{x} commands as
% appropriate for the page reference we're currently typesetting, then
@@ -5857,99 +6126,16 @@
% typeset the page reference.
% \begin{macrocode}
\begingroup%
- \cref at patchreftexts{#4}%
- \@@setfullpagerefrange{#1}{#2}%
+ \cref at patchreftexts{#3}%
+ \@@@setfullpagerefrange{#1}{#2}%
\endgroup}%
% \end{macrocode}
-%
-% Separate out the final typesetting step, as usual.
-% \begin{macrocode}
- \def\@@setfullpagerefrange#1#2{\reftextpagerange{#1}{#2}}%
-% \end{macrocode}
% \end{macro}
%
-%
-% \begin{macro}{\cref at old@@vpageref}
-% Unfortunately, \package{varioref}'s |\@@vpageref| macro calls a
-% |\vref at label| \emph{before} it typesets the page reference. The
-% |\protected at write| within |\vref at label| seems to prevent an |\unskip|
-% command coming after the |\vref at label| from removing any space that
-% was inserted before the |\vref at label|. This means that setting a
-% |\reftext|\meta{x} command to |\unskip| won't work; it won't properly
-% remove any preceding space in the event that the an empty page
-% reference is typeset.
-%
-% This didn't matter in the original \package{varioref} implementation,
-% because it \emph{always} removed any preceding space, then inserted
-% its own space \emph{after} the |\vref at label|, which the |\unskip|
-% could then gobble. But we want to get rid of this irritating
-% always-space-gobbling behaviour here. So we have to redefine
-% |\@@vpageref| (here renamed |\cref at old@@vpageref|) in order to move
-% the |\vref at label| to the end of the macro, after the page reference
-% has been typeset. We also remove the |\unskip| from the start of
-% |\@@vpageref|.
+% \begin{macro}{\@@@setfullpagerefrange}
+% Separate out the final typesetting step, as usual.
% \begin{macrocode}
- \def\cref at old@@vpageref#1[#2]#3{%
- \leavevmode%\unskip <<<
- \global\advance\c at vrcnt\@ne%
- \vref at pagenum\@tempa{\the\c at vrcnt @vr}%
- \vref at pagenum\@tempb{\the\c at vrcnt @xvr}%
- %\vref at label{\the\c at vrcnt @xvr}% <<<
- \ifx\@tempa\@tempb\else%
- \vref at err{\noexpand\vref or \noexpand\vpageref at page boundary
- \@tempb-\@tempa\space (may loop)%
- }%
- \fi%
- \vrefpagenum\thevpagerefnum{#3}%
- \vref at space%
- \ifx\@tempa\thevpagerefnum%
- \def\@tempc{#1}%
- \ifx\@tempc\@empty%
- \unskip%
- \else%
- #1%
- \fi%
- \else%
- #2%
- \is at pos@number\thevpagerefnum%
- {%
- \is at pos@number\@tempa%
- {\@tempcnta\@tempa%
- \advance\@tempcnta\@ne%
- }%
- {\@tempcnta\maxdimen}%
- \ifnum \thevpagerefnum =\@tempcnta%
- \ifodd\@tempcnta%
- \if at twoside%
- \reftextfaceafter%
- \else%
- \reftextafter%
- \fi%
- \else%
- \reftextafter%
- \fi%
- \else%
- \advance\@tempcnta-2%
- \ifnum \thevpagerefnum =\@tempcnta%
- \ifodd\@tempcnta%
- \reftextbefore%
- \else%
- \if at twoside%
- \reftextfacebefore%
- \else%
- \reftextbefore%
- \fi%
- \fi%
- \else%
- \reftextfaraway{#3}%
- \fi%
- \fi%
- }%
- {\reftextfaraway{#3}}%
- \fi%
- \vref at label{\the\c at vrcnt @xvr}% <<<
- \vref at label{\the\c at vrcnt @vr}%
- }%
+ \let\@@@setfullpagerefrange\reftextpagerange%
% \end{macrocode}
% \end{macro}
%
@@ -5971,8 +6157,8 @@
% \begin{macro}{\cref at patchreftexts}
% \begin{macro}{\cref at restorereftexts}
% The |\cref at patchreftexts| command modifies \package{varioref}
-% |\reftext|\meta{x} commands, for use within |\@setvpageref| and
-% |\@setvpagerefrange|.
+% |\reftext|\meta{x} commands, for use within |\@@setvpageref| and
+% |\@@setvpagerefrange|.
% \begin{macrocode}
\def\cref at patchreftexts#1{%
\cref at patchreftext{reftextcurrent}{#1}%
@@ -5988,8 +6174,8 @@
% |\cref at patchreftext| does the hard work of modifying the
% |\reftext|\meta{x} command given in |#1| as appropriate for the
% |\@setvpageref| or |\@setvpagerefrange| command that it's called
-% from. (It can only be called from within one of those commands.) |#2|
-% is empty if we're typesetting a single page reference, or one of
+% from. (It can only be called from within one of those commands.)
+% |#2| is empty if we're typesetting a single page reference, or one of
% |@first|, |@second|, |@middle| or |@end| when typesetting a
% multi-reference.
% \begin{macrocode}
@@ -6006,12 +6192,12 @@
\def\@tempc{}%
\expandafter\ifx\csname #1\endcsname\@tempc\relax%
\expandafter\def\csname #1\endcsname{\unskip}%
- %{\advance\count at group -1\reftextcurrent at orig}%
+ %{\advance\count at group -1\relax\reftextcurrent at orig}%
\else%
\long\def\@tempc{}%
\expandafter\ifx\csname #1\endcsname\@tempc\relax%
\expandafter\def\csname #1\endcsname{\unskip}%
- %{\advance\count at group -1\reftextcurrent at orig}%
+ %{\advance\count at group -1\relax\reftextcurrent at orig}%
\fi%
\fi%
% \end{macrocode}
@@ -6083,11 +6269,10 @@
% (if loaded).
% \begin{macrocode}
\AtBeginDocument{%
- \def\@@vpageref#1[#2]#3{\cref@@vpageref{#1}[#2]{#3}}%
+ \let\@@vpageref\cref@@vpageref%
}%
% \end{macrocode}
%
-% \begin{macro}{\vpageref}
% \begin{macro}{\vref}
% \begin{macro}{\vref*}
% \begin{macro}{\Vref}
@@ -6116,7 +6301,6 @@
% \end{macro}
% \end{macro}
% \end{macro}
-% \end{macro}
% \begin{macrocode}
\if at cref@hyperrefloaded\relax% hyperref loaded%
\DeclareRobustCommand{\vref}{%
@@ -6151,8 +6335,19 @@
\DeclareRobustCommand{\fullref}{\cref at fullref{cref}}%
\DeclareRobustCommand{\Fullref}{\cref at fullref{Cref}}%
\fi% end of test for hyperref
-}{}% end of \@ifpackageloaded{varioref}
+}{\let\if at cref@variorefloaded\iffalse}% end of \@ifpackageloaded{varioref}
% \end{macrocode}
+% Add check to AtBeginDocument to throw error if \package{varioref} was
+% loaded after cleveref.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \if at cref@variorefloaded\relax\else%
+ \@ifpackageloaded{varioref}{%
+ \PackageError{cleveref}{cleveref must be loaded after varioref!}%
+ {Package load order is wrong: load cleveref *after* varioref.}
+ }{}%
+ \fi}
+% \end{macrocode}
%
%
%
@@ -6180,7 +6375,9 @@
% before, we must postpone the redefinition of \cmd{\label} until the
% beginning of the document, since other packages do so.
% \begin{macrocode}
+\let\if at cref@amsmathloaded\iffalse%
\@ifpackageloaded{amsmath}{%
+ \let\if at cref@amsmathloaded\iftrue%
\AtBeginDocument{%
\let\cref at old@label at in@display\label at in@display%
\def\label at in@display{%
@@ -6203,7 +6400,7 @@
% But this isn't sufficient to gobble all the arguments any more if an
% optional argument is supplied to our new \cmd{\label}, so we have to
% modify the \package{amsmath} measuring commands so that they let
-% \cmd{\label} to \cmd{\@gobble at optarg} instead.
+% \cmd{\label} to \cmd{\cref at gobble@optarg} instead.
%
% Unfortunately, \package{amsmath} wasn't designed with redefinitions
% of \cmd{\label} in mind, so there appears to be no safe way of doing
@@ -6225,7 +6422,7 @@
\let\math at cr@@@\math at cr@@@align at measure%
\everycr{\noalign{\global\tag at false%
\global\let\raise at tag\@empty \global\column@\z@}}%
- \let\label\@gobble at optarg% <<< cleveref modification
+ \let\label\cref at gobble@optarg% <<< cleveref modification
\global\row@\z@%
\tabskip\z@%
\halign{\span\align at preamble\crcr%
@@ -6237,7 +6434,7 @@
}%
\restorecounters@%
\ifodd\maxfields@%
- \global\advance\maxfields@\@ne%
+ \global\advance\maxfields@\@ne\relax%
\fi%
\ifnum\xatlevel@=\tw@%
\ifnum\maxfields@<\thr@@%
@@ -6248,7 +6445,7 @@
\unvbox\z@ \unpenalty \global\setbox\@ne\lastbox%
}%
\global\totwidth@\wd\@ne%
- \if at fleqn \global\advance\totwidth@\@mathmargin \fi%
+ \if at fleqn \global\advance\totwidth@\@mathmargin\relax\fi%
\global\let\maxcolumn at widths\@empty%
\begingroup%
\let\or\relax%
@@ -6261,7 +6458,7 @@
\repeat%
\endgroup%
\dimen@\displaywidth%
- \advance\dimen at -\totwidth@%
+ \advance\dimen at -\totwidth@\relax%
\ifcase\xatlevel@%
\global\alignsep@\z@%
\let\minalignsep\z@%
@@ -6272,34 +6469,34 @@
\else%
\@tempcnta\tw@%
\global\eqnshift@\dimen@%
- \global\divide\eqnshift@\@tempcnta%
+ \global\divide\eqnshift@\@tempcnta\relax%
\fi%
\or%
\@tempcntb\maxfields@%
- \divide\@tempcntb\tw@%
+ \divide\@tempcntb\tw@\relax%
\@tempcnta\@tempcntb%
- \advance\@tempcntb\m at ne%
+ \advance\@tempcntb\m at ne\relax%
\if at fleqn%
\global\eqnshift@\@mathmargin%
\global\alignsep@\dimen@%
- \global\divide\alignsep@\@tempcnta%
+ \global\divide\alignsep@\@tempcnta\relax%
\else%
- \global\advance\@tempcnta\@ne%
+ \global\advance\@tempcnta\@ne\relax%
\global\eqnshift@\dimen@%
- \global\divide\eqnshift@\@tempcnta%
+ \global\divide\eqnshift@\@tempcnta\relax%
\global\alignsep@\eqnshift@%
\fi%
\or%
\@tempcntb\maxfields@%
- \divide\@tempcntb\tw@%
- \global\advance\@tempcntb\m at ne%
- \global\@tempcnta\@tempcntb%
+ \divide\@tempcntb\tw@\relax%
+ \global\advance\@tempcntb\m at ne\relax%
+ \global\@tempcnta\@tempcntb\relax%
\global\eqnshift@\z@%
\global\alignsep@\dimen@%
\if at fleqn%
\global\advance\alignsep@\@mathmargin\relax%
\fi%
- \global\divide\alignsep@\@tempcntb%
+ \global\divide\alignsep@\@tempcntb\relax%
\fi%
\ifdim\alignsep@<\minalignsep\relax%
\global\alignsep@\minalignsep\relax%
@@ -6306,9 +6503,9 @@
\ifdim\eqnshift@>\z@%
\if at fleqn\else%
\global\eqnshift@\displaywidth%
- \global\advance\eqnshift at -\totwidth@%
- \global\advance\eqnshift at -\@tempcntb\alignsep@%
- \global\divide\eqnshift@\tw@%
+ \global\advance\eqnshift at -\totwidth@\relax%
+ \global\advance\eqnshift at -\@tempcntb\alignsep@\relax%
+ \global\divide\eqnshift@\tw@\relax%
\fi%
\fi%
\fi%
@@ -6317,19 +6514,19 @@
\fi%
\calc at shift@align%
\global\tagshift@\totwidth@%
- \global\advance\tagshift@\@tempcntb\alignsep@%
+ \global\advance\tagshift@\@tempcntb\alignsep@\relax%
\if at fleqn%
\ifnum\xatlevel@=\tw@%
\global\advance\tagshift at -\@mathmargin\relax%
\fi%
\else%
- \global\advance\tagshift@\eqnshift@%
+ \global\advance\tagshift@\eqnshift@\relax%
\fi%
\iftagsleft@ \else%
- \global\advance\tagshift at -\displaywidth%
+ \global\advance\tagshift at -\displaywidth\relax%
\fi%
\dimen@\minalignsep\relax%
- \global\advance\totwidth@\@tempcntb\dimen@%
+ \global\advance\totwidth@\@tempcntb\dimen@\relax%
\ifdim\totwidth@>\displaywidth%
\global\let\displaywidth@\totwidth@%
\else%
@@ -6361,7 +6558,7 @@
}%
\restorecounters@%
\if at fleqn%
- \global\advance\totwidth@\@mathmargin%
+ \global\advance\totwidth@\@mathmargin\relax%
\fi%
\iftagsleft@%
\ifdim\totwidth@>\displaywidth%
@@ -6389,17 +6586,17 @@
% \begin{macrocode}
\def\multline@#1{%
\Let@%
- \@display at init{\global\advance\row@\@ne \global\dspbrk at lvl\m at ne}%
+ \@display at init{\global\advance\row@\@ne\relax\global\dspbrk at lvl\m at ne}%
\chardef\dspbrk at context\z@%
\restore at math@cr%
\let\tag\tag at in@align%
\global\tag at false \global\let\raise at tag\@empty%
\mmeasure@{#1}%
- \let\tag\gobble at tag \let\label\@gobble at optarg% <<< cleveref modification
+ \let\tag\gobble at tag \let\label\cref at gobble@optarg% <<< cleveref modification
\tabskip \if at fleqn \@mathmargin \else \z at skip \fi%
\totwidth@\displaywidth%
\if at fleqn%
- \advance\totwidth at -\@mathmargin%
+ \advance\totwidth at -\@mathmargin\relax%
\fi%
\halign\bgroup%
\hbox to\totwidth@{%
@@ -6436,7 +6633,7 @@
\multline at indent%
\else%
\setbox\z@\hbox{\make at display@tag}%
- \dimen@\@mathmargin \advance\dimen at -\wd\z@%
+ \dimen@\@mathmargin \advance\dimen at -\wd\z@\relax%
\ifdim\dimen@<\multlinetaggap%
\dimen@\multlinetaggap%
\fi%
@@ -6492,11 +6689,11 @@
}%
\global\tagwidth@\wdz@%
\dimen@\totwidth@%
- \advance\dimen@\tagwidth@%
- \advance\dimen@\multlinetaggap%
+ \advance\dimen@\tagwidth@\relax%
+ \advance\dimen@\multlinetaggap\relax%
\iftagsleft@\else%
\if at fleqn%
- \advance\dimen@\@mathmargin%
+ \advance\dimen@\@mathmargin\relax%
\fi%
\fi%
\ifdim\dimen@>\displaywidth%
@@ -6545,13 +6742,13 @@
\let\cref at old@endsubequations\endsubequations%
\cref at resetby{equation}{\cref at result}%
\ifx\cref at result\relax\else%
- \@addtoreset{parentequation}{\cref at result}%
+ \cref at addtoreset{parentequation}{\cref at result}%
\fi%
\renewenvironment{subequations}{%
% \end{macrocode}
% Temporarily declare |equation| counter to be reset by |parentequation|.
% \begin{macrocode}
- \@addtoreset{equation}{parentequation}%
+ \cref at addtoreset{equation}{parentequation}%
% \end{macrocode}
% Temporarily alias |equation| to |subequation|, or to whatever
% |subequation| has been aliased to.
@@ -6609,8 +6806,19 @@
% \end{macro}
% \end{macro}
%
+% Add check to AtBeginDocument to throw error if \package{amsmath} was
+% loaded after cleveref.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \if at cref@amsmathloaded\else%
+ \@ifpackageloaded{amsmath}{%
+ \PackageError{cleveref}{cleveref must be loaded after amsmath!}%
+ {Package load order is wrong: load cleveref *after* amsmath.}
+ }{}%
+ \fi}
%
%
+%
% \subsubsection{\package{amsthm} support}
% \begin{macro}{amsthm}
% If \package{amsthm} is loaded, we need to modify its theorem
@@ -6717,7 +6925,6 @@
}{}% end of \@ifpackageloaded{amsthm}
% \end{macrocode}
% \end{macro}
-% \end{macro}
%
%
%
@@ -6762,12 +6969,12 @@
\refstepcounter[#1]{#2}% <<< cleveref modification
\theorem at prework%
\thm at topsepadd \theorempostskipamount%
- \ifvmode \advance\thm at topsepadd\partopsep\fi%
+ \ifvmode \advance\thm at topsepadd\partopsep\relax\fi%
\trivlist%
\@topsep \theorempreskipamount%
\@topsepadd \thm at topsepadd%
- \advance\linewidth -\theorem at indent%
- \advance\@totalleftmargin \theorem at indent%
+ \advance\linewidth -\theorem at indent\relax%
+ \advance\@totalleftmargin \theorem at indent\relax%
\parshape \@ne \@totalleftmargin \linewidth%
\@ifnextchar[{\@ythm{#1}{#2}{#3}}{\@xthm{#1}{#2}{#3}}%]
}%
@@ -6781,7 +6988,7 @@
%
% \subsubsection{\package{IEEEtrantools} support}
% \begin{macro}{IEEEtrantools}
-% The |IEEEeqnarray| environment and \cmd{\IEEEeqnarraccr} command call
+% The |IEEEeqnarray| environment and \cmd{\IEEEeqnarraccr} command calls
% \cmd{\stepcounter} instead of \cmd{\refstepcounter} to increment the
% equation counters, so they fail to set the cross-reference type for
% \package{cleveref}. We patch in calls to \cmd{\refstepcounter} to fix
@@ -6812,18 +7019,36 @@
% \begin{macro}{\@IEEEeqnarrayXCR}
% \begin{macrocode}
\let\cref at orig@IEEEeqnarrayXCR\@IEEEeqnarrayXCR%
- \def\@IEEEeqnarrayXCR[#1]{%
- \if at eqnsw%
- \if at IEEEissubequation%
- %\addtocounter{equation}{1}%
- \refstepcounter{IEEEsubequation}%
- \addtocounter{IEEEsubequation}{-1}%
- \else%
- \refstepcounter{equation}%
- \addtocounter{equation}{-1}%
+% \end{macrocode}
+% Newer versions of \package{IEEEtrantools} replace
+% |\if at IEEEissubequation| conditional with a counter |\c at IEEEsubequation|
+% that is $>0$ in subequations.
+% \begin{macrocode}
+ \@ifundefined{c at IEEEsubequation}{%
+ \def\@IEEEeqnarrayXCR[#1]{%
+ \if at eqnsw%
+ \if at IEEEissubequation%
+ \refstepcounter{IEEEsubequation}%
+ \addtocounter{IEEEsubequation}{-1}%
+ \else%
+ \refstepcounter{equation}%
+ \addtocounter{equation}{-1}%
+ \fi%
\fi%
- \fi%
- \cref at orig@IEEEeqnarrayXCR[#1]}%
+ \cref at orig@IEEEeqnarrayXCR[#1]}%
+ }{
+ \def\@IEEEeqnarrayXCR[#1]{%
+ \if at eqnsw%
+ \ifnum\c at IEEEsubequation>0\relax%
+ \refstepcounter{IEEEsubequation}%
+ \addtocounter{IEEEsubequation}{-1}%
+ \else%
+ \refstepcounter{equation}%
+ \addtocounter{equation}{-1}%
+ \fi%
+ \fi%
+ \cref at orig@IEEEeqnarrayXCR[#1]}%
+ }% end of \@ifundefined{c at IEEEsubequation}
% \end{macrocode}
% \end{macro}
%
@@ -6847,10 +7072,10 @@
% To get the subequation formatting right, we harmlessly add the
% |IEEEsubequation| counter to the |equation| counter reset list so
% that \package{cleveref} can figure out the subnumbering relationship,
-% and define |IEEEsubequation| to be an alias of the |equation| format.
+% and define |IEEEsubequation| to be an alias of the |subequation| format.
% \begin{macrocode}
- \@addtoreset{IEEEsubequation}{equation}%
- \crefalias{IEEEsubequation}{equation}%
+ \cref at addtoreset{IEEEsubequation}{subequation}%
+ \crefalias{IEEEsubequation}{subequation}%
% \end{macrocode}
% \end{macro}
%
@@ -6876,7 +7101,7 @@
\cref at old@eq at setnumber%
\cref at constructprefix{equation}{\cref at result}%
\protected at xdef\cref at currentlabel{%
- [equation][\arabic{equation}][\cref at result]\p at equation\theequation}}%
+ [equation][\arabic{equation}][\cref at result]\p at equation\eq at number}}%
}{}% end of \@ifpackageloaded{breqn}
% \end{macrocode}
% \end{macro}
@@ -7240,7 +7465,7 @@
\cref at old@newaliascnt{#1}{#2}%
\cref at resetby{#2}{\cref at result}%
\ifx\cref at result\relax\else%
- \@addtoreset{#1}{\cref at result}%
+ \cref at addtoreset{#1}{\cref at result}%
\fi}%
}{}% end of \@ifpackageloaded{aliascnt}
% \end{macrocode}
@@ -7726,7 +7951,7 @@
\@tempa#1\@nil}%
\def\@crefrangenostar#1#2#3{%
\gdef\cref at poorman@text{}%
- \@setcrefrange{#2}{#3}{#1}{}%
+ \@@setcrefrange{#2}{#3}{#1}{}%
\def\@tempa##1##2\@nil{%
\if##1c%
\cref at writescript{}{%
@@ -7733,12 +7958,12 @@
\string\crefrange\string{#2\string}\string{#3\string}}%
\else%
\cref at writescript{}{%
- \string\Crefrange\string{#2\string}\string{#3\string}}%
+ \strinsg\Crefrange\string{#2\string}\string{#3\string}}%
\fi}%
\@tempa#1\@nil}%
\def\@crefrangestar#1#2#3{%
\gdef\cref at poorman@text{}%
- \@crefstarredtrue\@setcrefrange{#2}{#3}{#1}{}\@crefstarredfalse%
+ \@crefstarredtrue\@@setcrefrange{#2}{#3}{#1}{}\@crefstarredfalse%
\def\@tempa##1##2\@nil{%
\if##1c%
\cref at writescript{}{%
@@ -7748,31 +7973,9 @@
\string\Crefrange*\string{#2\string}\string{#3\string}}%
\fi}%
\@tempa#1\@nil}%
- \def\@cpagerefnostar#1#2{%
- \gdef\cref at poorman@text{}%
- \@cpageref{#1}{#2}{\@setcpageref}{\@setcpagerefrange}%
- \def\@tempa##1##2\@nil{%
- \if##1c%
- \cref at writescript{}{\string\cpageref\string{#2\string}}%
- \else%
- \cref at writescript{}{\string\Cpageref\string{#2\string}}%
- \fi}%
- \@tempa#1\@nil}%
- \def\@cpagerefstar#1#2{%
- \gdef\cref at poorman@text{}%
- \@crefstarredtrue%
- \@cpageref{#1}{#2}{\@setcpageref}{\@setcpagerefrange}%
- \@crefstarredfalse%
- \def\@tempa##1##2\@nil{%
- \if##1c%
- \cref at writescript{}{\string\cpageref*\string{#2\string}}%
- \else%
- \cref at writescript{}{\string\Cpageref*\string{#2\string}}%
- \fi}%
- \@tempa#1\@nil}%
\def\@cpagerefrangenostar#1#2#3{%
\gdef\cref at poorman@text{}%
- \@setcpagerefrange{#2}{#3}{#1}{}%
+ \@@setcpagerefrange{#2}{#3}{#1}{}%
\def\@tempa##1##2\@nil{%
\if##1c%
\cref at writescript{}{%
@@ -7785,7 +7988,7 @@
\def\@cpagerefrangestar#1#2#3{%
\gdef\cref at poorman@text{}%
\@crefstarredtrue%
- \@setcpagerefrange{#2}{#3}{#1}{}%
+ \@@setcpagerefrange{#2}{#3}{#1}{}%
\@crefstarredfalse%
\def\@tempa##1##2\@nil{%
\if##1c%
@@ -7808,12 +8011,12 @@
\cref at writescript{}{\string\labelcref*\string{#1\string}}}%
\def\@labelcpagerefnostar#1{%
\gdef\cref at poorman@text{}%
- \@cpageref{labelcref}{#1}{\@setcpageref}{\@setcpagerefrange}%
+ \@cref{labelcpageref}{#1}%
\cref at writescript{}{\string\labelcpageref\string{#1\string}}}%
\def\@labelcpagerefstar#1{%
\gdef\cref at poorman@text{}%
\@crefstarredtrue%
- \@cpageref{labelcref}{#1}{\@setcpageref}{\@setcpagerefrange}%
+ \@cref{labelcpageref}{#1}%
\@crefstarredfalse%
\cref at writescript{}{\string\labelcpageref*\string{#1\string}}}%
%
@@ -7828,30 +8031,30 @@
\cref at writescript{}{\string\Cref\string{#1\string}}}%
\DeclareRobustCommand{\crefrange}[2]{%
\gdef\cref at poorman@text{}%
- \@setcrefrange{#1}{#2}{cref}{}%
+ \@@setcrefrange{#1}{#2}{cref}{}%
\cref at writescript{}{%
\string\crefrange\string{#1\string}\string{#2\string}}}%
\DeclareRobustCommand{\Crefrange}[2]{%
\gdef\cref at poorman@text{}%
- \@setcrefrange{#1}{#2}{Cref}{}%
+ \@@setcrefrange{#1}{#2}{Cref}{}%
\cref at writescript{}{%
\string\Crefrange\string{#1\string}\string{#2\string}}}%
\DeclareRobustCommand{\cpageref}[1]{%
\gdef\cref at poorman@text{}%
- \@cpageref{cref}{#1}{\@setcpageref}{\@setcpagerefrange}%
+ \@cref{cpageref}{#1}%
\cref at writescript{}{\string\cpageref\string{#1\string}}}%
\DeclareRobustCommand{\Cpageref}[1]{%
\gdef\cref at poorman@text{}%
- \@cpageref{Cref}{#1}{\@setcpageref}{\@setcpagerefrange}%
+ \@cref{Cpageref}{#1}%
\cref at writescript{}{\string\Cpageref\string{#1\string}}}%
\DeclareRobustCommand{\cpagerefrange}[2]{%
\gdef\cref at poorman@text{}%
- \@setcpagerefrange{#1}{#2}{cref}{}%
+ \@@setcpagerefrange{#1}{#2}{cref}{}%
\cref at writescript{}{%
\string\cpagerefrange\string{#1\string}\string{#2\string}}}%
\DeclareRobustCommand{\Cpagerefrange}[2]{%
\gdef\cref at poorman@text{}%
- \@setcpagerefrange{#1}{#2}{Cref}{}%
+ \@@setcpagerefrange{#1}{#2}{Cref}{}%
\cref at writescript{}{%
\string\Cpagerefrange\string{#1\string}\string{#2\string}}}%
\DeclareRobustCommand{\labelcref}[1]{%
@@ -7860,7 +8063,7 @@
\cref at writescript{}{\string\labelcref\string{#1\string}}}%
\DeclareRobustCommand{\labelcpageref}[1]{%
\gdef\cref at poorman@text{}%
- \@cpageref{labelcref}{#1}{\@setcpageref}{\@setcpagerefrange}%
+ \@cref{labelcpageref}{#1}%
\cref at writescript{}{\string\labelcpageref\string{#1\string}}}%
\fi% end of test for hyperref
% \end{macrocode}
@@ -7918,8 +8121,8 @@
% \begin{macro}{\@setcref at pairgroupconjunction}
% \begin{macro}{\@setcref at middlegroupconjunction}
% \begin{macro}{\@setcref at lastgroupconjunction}
-% Redefine \cmd{\@@setcref}, \cmd{\@@setcrefrange},
-% \cmd{\@@setcpageref} and\linebreak[4] \cmd{\@@setcpagerefrange}, as
+% Redefine \cmd{\@@@setcref}, \cmd{\@@@setcrefrange},
+% \cmd{\@@@setcpageref} and\linebreak[4] \cmd{\@@@setcpagerefrange}, as
% well as the conjunction macros\linebreak[4]
% \cmd{\@setcref at middlegroupconjunction},
% \cmd{\@setcref at lastgroupconjunction} and
@@ -7943,21 +8146,21 @@
% \end{macro}
% \end{macro}
% \end{macro}
-% \begin{macro}{\@@setcref}
-% \begin{macro}{\@@setcrefrange}
-% \begin{macro}{\@@setcpageref}
-% \begin{macro}{\@@setcpagerefrange}
+% \begin{macro}{\@@@setcref}
+% \begin{macro}{\@@@setcrefrange}
+% \begin{macro}{\@@@setcpageref}
+% \begin{macro}{\@@@setcpagerefrange}
% The necessary redefinitions of most of the cross-referencing commands
% differ slightly depending on whether \package{hyperref} is loaded or
% not.
% \begin{macrocode}
- \let\old@@setcref\@@setcref%
- \let\old@@setcrefrange\@@setcrefrange%
- \let\old@@setcpageref\@@setcpageref%
- \let\old@@setcpagerefrange\@@setcpagerefrange%
+ \let\old@@@setcref\@@@setcref%
+ \let\old@@@setcrefrange\@@@setcrefrange%
+ \let\old@@@setcpageref\@@@setcpageref%
+ \let\old@@@setcpagerefrange\@@@setcpagerefrange%
\if at cref@hyperrefloaded\relax% hyperref loaded
- \def\@@setcref#1#2{%
- \old@@setcref{#1}{#2}%
+ \def\@@@setcref#1#2{%
+ \old@@@setcref{#1}{#2}%
\if at crefstarred%
\expandafter\g at addto@macro\expandafter\cref at poorman@text%
\expandafter{#1{\ref*{#2}}{}{}}%
@@ -7965,8 +8168,8 @@
\expandafter\g at addto@macro\expandafter\cref at poorman@text%
\expandafter{#1{\ref{#2}}{}{}}%
\fi}%
- \def\@@setcrefrange#1#2#3{%
- \old@@setcrefrange{#1}{#2}{#3}%
+ \def\@@@setcrefrange#1#2#3{%
+ \old@@@setcrefrange{#1}{#2}{#3}%
\if at crefstarred%
\expandafter\g at addto@macro\expandafter\cref at poorman@text%
\expandafter{#1{\ref*{#2}}{\ref*{#3}}{}{}{}{}}%
@@ -7974,8 +8177,8 @@
\expandafter\g at addto@macro\expandafter\cref at poorman@text%
\expandafter{#1{\ref{#2}}{\ref{#3}}{}{}{}{}}%
\fi}%
- \def\@@setcpageref#1#2{%
- \old@@setcpageref{#1}{#2}%
+ \def\@@@setcpageref#1#2{%
+ \old@@@setcpageref{#1}{#2}%
\if at crefstarred%
\expandafter\g at addto@macro\expandafter\cref at poorman@text%
\expandafter{#1{\pageref*{#2}}{}{}}%
@@ -7983,8 +8186,8 @@
\expandafter\g at addto@macro\expandafter\cref at poorman@text%
\expandafter{#1{\pageref{#2}}{}{}}%
\fi}%
- \def\@@setcpagerefrange#1#2#3{%
- \old@@setcpagerefrange{#1}{#2}{#3}%
+ \def\@@@setcpagerefrange#1#2#3{%
+ \old@@@setcpagerefrange{#1}{#2}{#3}%
\if at crefstarred%
\expandafter\g at addto@macro\expandafter\cref at poorman@text%
\expandafter{#1{\pageref*{#2}}{\pageref*{#3}}{}{}{}{}}%
@@ -7994,23 +8197,23 @@
\fi}%
%
\else% hyperref not loaded
- \def\@@setcref#1#2{%
- \old@@setcref{#1}{#2}%
+ \def\@@@setcref#1#2{%
+ \old@@@setcref{#1}{#2}%
\expandafter\g at addto@macro\expandafter{%
\expandafter\cref at poorman@text\expandafter}%
\expandafter{#1{\ref{#2}}{}{}}}%
- \def\@@setcrefrange#1#2#3{%
- \old@@setcrefrange{#1}{#2}{#3}%
+ \def\@@@setcrefrange#1#2#3{%
+ \old@@@setcrefrange{#1}{#2}{#3}%
\expandafter\g at addto@macro%
\expandafter{\expandafter\cref at poorman@text\expandafter}%
\expandafter{#1{\ref{#2}}{\ref{#3}}{}{}{}{}}}%
- \def\@@setcpageref#1#2{%
- \old@@setcpageref{#1}{#2}%
+ \def\@@@setcpageref#1#2{%
+ \old@@@setcpageref{#1}{#2}%
\expandafter\g at addto@macro\expandafter{%
\expandafter\cref at poorman@text\expandafter}%
\expandafter{#1{\pageref{#2}}{}{}}}%
- \def\@@setcpagerefrange#1#2#3{%
- \old@@setcpagerefrange{#1}{#2}{#3}%
+ \def\@@@setcpagerefrange#1#2#3{%
+ \old@@@setcpagerefrange{#1}{#2}{#3}%
\expandafter\g at addto@macro%
\expandafter{\expandafter\cref at poorman@text\expandafter}%
\expandafter{#1{\pageref{#2}}{\pageref{#3}}{}{}{}{}}}%
@@ -8020,14 +8223,14 @@
% \end{macro}
% \end{macro}
% \end{macro}
-% \begin{macro}{\@@setnamecref}
+% \begin{macro}{\@@@setnamecref}
% The \cmd{\namecref} et al.\ commands don't do anything different when
% \package{hyperref} is loaded, so we don't need to test for
-% \package{hyperref} when redefining \cmd{\@@setnamecref}.
+% \package{hyperref} when redefining \cmd{\@@@setnamecref}.
% \begin{macrocode}
- \let\old@@setnamecref\@@setnamecref%
- \def\@@setnamecref#1#2{%
- \old@@setnamecref{#1}{#2}%
+ \let\old@@@setnamecref\@@@setnamecref%
+ \def\@@@setnamecref#1#2{%
+ \old@@@setnamecref{#1}{#2}%
\expandafter\def\expandafter\@tempa\expandafter{#1}%
\def\@tempb{#2}%
\expandafter\expandafter\expandafter\g at addto@macro%
@@ -8139,25 +8342,25 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\@@setvpageref}
-% \begin{macro}{\@@setvpagerefrange}
+% \begin{macro}{\@@@setvpageref}
+% \begin{macro}{\@@@setvpagerefrange}
% In order to get the appropriate substitution for \package{varioref}
% commands appended to \cmd{\cref at poorman@text}, we have to redefine
-% \cmd{\@@setvpageref} and\linebreak[4] \cmd{\@@setvpagerefrange},
+% \cmd{\@@@setvpageref} and\linebreak[4] \cmd{\@@@setvpagerefrange},
% which perform the final typesetting of \package{varioref} page
% references, so that they append an appropriate substitution for the
% page reference they're typesetting.
% \begin{macrocode}
- \def\@@setvpageref#1[#2]#3{%
+ \def\@@@setvpageref#1[#2]#3{%
\cref at old@@vpageref{#1}[#2]{#3}%
\g at addto@macro\cref at poorman@text{\vpageref{#3}}}%
- \def\@@setvpagerefrange[#1]#2#3{%
+ \def\@@@setvpagerefrange[#1]#2#3{%
\vpagerefrange[#1]{#2}{#3}%
\g at addto@macro\cref at poorman@text{\vpagerefrange{#2}{#3}}}%
- \def\@@setfullpageref#1{%
+ \def\@@@setfullpageref#1{%
\reftextfaraway{#1}%
\g at addto@macro\cref at poorman@text{\reftextfaraway{#1}}}%
- \def\@@setfullpagerefrange#1#2{%
+ \def\@@@setfullpagerefrange#1#2{%
\reftextpagerange{#1}{#2}%
\g at addto@macro\cref at poorman@text{\reftextpagerange{#1}{#2}}}%
% \end{macrocode}
@@ -12190,7 +12393,7 @@
\crefname{subfigure}{Figur}{Figur}%
\fi%
\crefname{page}{Sida}{Sida}%
- \crefname{table}{Tablell}{Tabell}%
+ \crefname{table}{Tabell}{Tabell}%
\crefname{subtable}{Tabell}{Tabell}%
\crefname{part}{Del}{Del}%
\crefname{chapter}{Kapitel}{Kapitel}%
@@ -12232,7 +12435,7 @@
\crefname{subfigure}{figur}{figur}%
\crefname{page}{sida}{sida}%
\fi%
- \crefname{table}{tablell}{tabell}%
+ \crefname{table}{tabell}{tabell}%
\crefname{subtable}{tabell}{tabell}%
\crefname{part}{del}{del}%
\crefname{chapter}{kapitel}{kapitel}%
@@ -12510,6 +12713,232 @@
% \end{macrocode}
%
%
+% \subsubsection{Catalan}
+% \begin{macro}{catalan}
+% Catalan definitions thanks to Rafel Jaume Deya and Eva Bosch Roura.
+% \end{macro}
+%
+% Set up the definitions used at the beginning of the document to define
+% the formats created by the document preamble.
+% \begin{macrocode}
+\DeclareOption{catalan}{%
+ \AtBeginDocument{%
+ \def\crefrangeconjunction at preamble{ a\nobreakspace}%
+ \def\crefrangepreconjunction at preamble{}%
+ \def\crefrangepostconjunction at preamble{}%
+ \def\crefpairconjunction at preamble{ i\nobreakspace}%
+ \def\crefmiddleconjunction at preamble{, }%
+ \def\creflastconjunction at preamble{ i\nobreakspace}%
+% \end{macrocode}
+% We have to define the group conjunctions explicitly here, rather than
+% relying on fall-back definitions in terms of the above conjunctions
+% (see \cref{sec:code:default_formats}), in case any other language
+% option defines them explicitly and we need to override those.
+% \begin{macrocode}
+ \def\crefpairgroupconjunction at preamble{ i\nobreakspace}%
+ \def\crefmiddlegroupconjunction at preamble{, }%
+ \def\creflastgroupconjunction at preamble{ i\nobreakspace}%
+ %
+ \Crefname at preamble{equation}{Equaci\'o}{Equacions}%
+ \Crefname at preamble{figure}{Gr\`afic}{Gr\`afics}%
+ \Crefname at preamble{table}{Taula}{Taules}%
+ \Crefname at preamble{page}{P\`agina}{P\`agines}%
+ \Crefname at preamble{part}{Part}{Parts}%
+ \Crefname at preamble{chapter}{Cap\'itol}{Cap\'itols}%
+ \Crefname at preamble{section}{Secci\'o}{Seccions}%
+ \Crefname at preamble{appendix}{Ap\`endix}{Ap\`endixs}%
+ \Crefname at preamble{enumi}{Punt}{Punts}%
+ \Crefname at preamble{footnote}{Nota}{Notes}%
+ \Crefname at preamble{theorem}{Teorema}{Teoremes}%
+ \Crefname at preamble{lemma}{Lema}{Lemes}%
+ \Crefname at preamble{corollary}{Coro\lgem ari}{Coro\lgem aris}%
+ \Crefname at preamble{proposition}{Proposici\'o}{Proposicions}%
+ \Crefname at preamble{definition}{Definici\'o}{Definicions}%
+ \Crefname at preamble{result}{Resultat}{Resultats}%
+ \Crefname at preamble{example}{Exemple}{Exemples}%
+ \Crefname at preamble{remark}{Observaci\'o}{Observacions}%
+ \Crefname at preamble{note}{Nota}{Notes}%
+ \Crefname at preamble{algorithm}{Algorisme}{Algorismes}%
+ \Crefname at preamble{listing}{Llistat}{Llistats}%
+ \Crefname at preamble{line}{L\'inia}{L\'inies}%
+ %
+ \if at cref@capitalise% capitalise set
+ \crefname at preamble{equation}{Equaci\'o}{Equacions}%
+ \crefname at preamble{figure}{Gr\`afic}{Gr\`afics}%
+ \crefname at preamble{table}{Taula}{Taules}%
+ \crefname at preamble{page}{P\`agina}{P\`agines}%
+ \crefname at preamble{part}{Part}{Parts}%
+ \crefname at preamble{chapter}{Cap\'itol}{Cap\'itols}%
+ \crefname at preamble{section}{Secci\'o}{Seccions}%
+ \crefname at preamble{appendix}{Ap\`endix}{Ap\`endixs}%
+ \crefname at preamble{enumi}{Punt}{Punts}%
+ \crefname at preamble{footnote}{Nota}{Notes}%
+ \crefname at preamble{theorem}{Teorema}{Teoremes}%
+ \crefname at preamble{lemma}{Lema}{Lemes}%
+ \crefname at preamble{corollary}{Coro\lgem ari}{Coro\lgem aris}%
+ \crefname at preamble{proposition}{Proposici\'o}{Proposicions}%
+ \crefname at preamble{definition}{Definici\'o}{Definicions}%
+ \crefname at preamble{result}{Resultat}{Resultats}%
+ \crefname at preamble{example}{Exemple}{Exemples}%
+ \crefname at preamble{remark}{Observaci\'o}{Observacions}%
+ \crefname at preamble{note}{Nota}{Notes}%
+ \crefname at preamble{algorithm}{Algorisme}{Algorismes}%
+ \crefname at preamble{listing}{Llistat}{Llistats}%
+ \crefname at preamble{line}{L\'inia}{L\'inies}%
+ %
+ \else% capitalise unset
+ \crefname at preamble{equation}{equaci\'o}{equacions}%
+ \crefname at preamble{figure}{gr\`afic}{gr\`afics}%
+ \crefname at preamble{table}{taula}{taules}%
+ \crefname at preamble{page}{p\`agina}{p\`agines}%
+ \crefname at preamble{part}{part}{parts}%
+ \crefname at preamble{chapter}{cap\'itol}{cap\'itols}%
+ \crefname at preamble{section}{secci\'o}{seccions}%
+ \crefname at preamble{appendix}{ap\`endix}{ap\`endixs}%
+ \crefname at preamble{enumi}{punt}{punts}%
+ \crefname at preamble{footnote}{nota}{notes}%
+ \crefname at preamble{theorem}{teorema}{teoremes}%
+ \crefname at preamble{lemma}{lema}{lemes}%
+ \crefname at preamble{corollary}{coro\lgem ari}{coro\lgem aris}%
+ \crefname at preamble{proposition}{proposici\'o}{proposicions}%
+ \crefname at preamble{definition}{definici\'o}{definicions}%
+ \crefname at preamble{result}{resultat}{resultats}%
+ \crefname at preamble{example}{exemple}{exemples}%
+ \crefname at preamble{remark}{observaci\'o}{observacions}%
+ \crefname at preamble{note}{nota}{notes}%
+ \crefname at preamble{algorithm}{algorisme}{algorismes}%
+ \crefname at preamble{listing}{llistat}{llistats}%
+ \crefname at preamble{line}{l\'inia}{l\'inies}%
+ \fi%
+ \def\cref at language{catalan}%
+ }}% end \AtBeginDocument and \DeclareOption
+% \end{macrocode}
+%
+% If using \package{babel} and the corresponding option is set, or if
+% using \package{polyglossia} and the language has been loaded, add
+% format definition commands to \cmd{\extras}\meta{language} or
+% \cmd{\captions}\meta{language} so that language switching commands will
+% change the cross-reference formats appropriately.
+% \begin{macrocode}
+\cref at addlanguagedefs{catalan}{%
+ \PackageInfo{cleveref}{loaded `catalan language definitions}%
+ \renewcommand{\crefrangeconjunction}{ a\nobreakspace}%
+ \renewcommand{\crefrangepreconjunction}{}%
+ \renewcommand{\crefrangepostconjunction}{}%
+ \renewcommand{\crefpairconjunction}{ i\nobreakspace}%
+ \renewcommand{\crefmiddleconjunction}{, }%
+ \renewcommand{\creflastconjunction}{ i\nobreakspace}%
+ \renewcommand{\crefpairgroupconjunction}{ i\nobreakspace}%
+ \renewcommand{\crefmiddlegroupconjunction}{, }%
+ \renewcommand{\creflastgroupconjunction}{ i\nobreakspace}%
+ %
+ \Crefname{equation}{Equaci\'o}{Equacions}%
+ \Crefname{figure}{Gr\`afic}{Gr\`afics}%
+ \Crefname{subfigure}{Gr\`afic}{Gr\`afics}%
+ \Crefname{table}{Taula}{Taules}%
+ \Crefname{subtable}{Taula}{Taules}%
+ \Crefname{page}{P\`agina}{P\`aginas}%
+ \Crefname{part}{Part}{Parts}%
+ \Crefname{chapter}{Cap\'itol}{Cap\'itols}%
+ \Crefname{section}{Secci\'o}{Seccions}%
+ \Crefname{subsection}{Secci\'o}{Seccions}%
+ \Crefname{subsubsection}{Secci\'o}{Seccions}%
+ \Crefname{appendix}{Ap\`endix}{Ap\`endixs}%
+ \Crefname{subappendix}{Ap\`endix}{Ap\`endixs}%
+ \Crefname{subsubappendix}{Ap\`endix}{Ap\`endixs}%
+ \Crefname{subsubsubappendix}{Ap\`endix}{Ap\`endixs}%
+ \Crefname{enumi}{Punt}{Punts}%
+ \Crefname{enumii}{Punt}{Punts}%
+ \Crefname{enumiii}{Punt}{Punts}%
+ \Crefname{enumiv}{Punt}{Punts}%
+ \Crefname{enumv}{Punt}{Punts}%
+ \Crefname{footnote}{Nota}{Notes}%
+ \Crefname{theorem}{Teorema}{Teoremes}%
+ \Crefname{lemma}{Lema}{Lemes}%
+ \Crefname{corollary}{Coro\lgem ari}{Coro\lgem aris}%
+ \Crefname{proposition}{Proposici\'o}{Proposicions}%
+ \Crefname{definition}{Definici\'o}{Definicions}%
+ \Crefname{result}{Resultat}{Resultats}%
+ \Crefname{example}{Exemple}{Exemples}%
+ \Crefname{remark}{Observaci\'o}{Observacions}%
+ \Crefname{note}{Nota}{Notes}%
+ \Crefname{algorithm}{Algorisme}{Algorismes}%
+ \Crefname{listing}{Llistat}{Llistats}%
+ \Crefname{line}{L\'inia}{L\'inies}%
+ %
+ \if at cref@capitalise% capitalise set
+ \crefname{equation}{Equaci\'o}{Equacions}%
+ \crefname{figure}{Gr\`afic}{Gr\`afics}%
+ \crefname{subfigure}{Gr\`afic}{Gr\`afics}%
+ \crefname{table}{Taula}{Taules}%
+ \crefname{subtable}{Taula}{Taules}%
+ \crefname{page}{P\`agina}{P\`aginas}%
+ \crefname{part}{Part}{Parts}%
+ \crefname{chapter}{Cap\'itol}{Cap\'itols}%
+ \crefname{section}{Secci\'o}{Seccions}%
+ \crefname{subsection}{Secci\'o}{Seccions}%
+ \crefname{subsubsection}{Secci\'o}{Seccions}%
+ \crefname{appendix}{Ap\`endix}{Ap\`endixs}%
+ \crefname{subappendix}{Ap\`endix}{Ap\`endixs}%
+ \crefname{subsubappendix}{Ap\`endix}{Ap\`endixs}%
+ \crefname{subsubsubappendix}{Ap\`endix}{Ap\`endixs}%
+ \crefname{enumi}{Punt}{Punts}%
+ \crefname{enumii}{Punt}{Punts}%
+ \crefname{enumiii}{Punt}{Punts}%
+ \crefname{enumiv}{Punt}{Punts}%
+ \crefname{enumv}{Punt}{Punts}%
+ \crefname{footnote}{Nota}{Notes}%
+ \crefname{theorem}{Teorema}{Teoremes}%
+ \crefname{lemma}{Lema}{Lemes}%
+ \crefname{corollary}{Coro\lgem ari}{Coro\lgem aris}%
+ \crefname{proposition}{Proposici\'o}{Proposicions}%
+ \crefname{definition}{Definici\'o}{Definicions}%
+ \crefname{result}{Resultat}{Resultats}%
+ \crefname{example}{Exemple}{Exemples}%
+ \crefname{remark}{Observaci\'o}{Observacions}%
+ \crefname{note}{Nota}{Notes}%
+ \crefname{algorithm}{Algorisme}{Algorismes}%
+ \crefname{listing}{Llistat}{Llistats}%
+ \crefname{line}{L\'inia}{L\'inies}%
+ %
+ \else% capitalise unset
+ \crefname{equation}{equaci\'o}{equacions}%
+ \crefname{figure}{gr\`afic}{gr\`afics}%
+ \crefname{subfigure}{gr\`afic}{gr\`afics}%
+ \crefname{table}{taula}{taules}%
+ \crefname{subtable}{taula}{taules}%
+ \crefname{page}{p\`agina}{p\`aginas}%
+ \crefname{part}{part}{parts}%
+ \crefname{chapter}{cap\'itol}{cap\'itols}%
+ \crefname{section}{secci\'o}{seccions}%
+ \crefname{subsection}{secci\'o}{seccions}%
+ \crefname{subsubsection}{secci\'o}{seccions}%
+ \crefname{appendix}{ap\`endix}{ap\`endixs}%
+ \crefname{subappendix}{ap\`endix}{ap\`endixs}%
+ \crefname{subsubappendix}{ap\`endix}{ap\`endixs}%
+ \crefname{subsubsubappendix}{ap\`endix}{ap\`endixs}%
+ \crefname{enumi}{punt}{punts}%
+ \crefname{enumii}{punt}{punts}%
+ \crefname{enumiii}{punt}{punts}%
+ \crefname{enumiv}{punt}{punts}%
+ \crefname{enumv}{punt}{punts}%
+ \crefname{footnote}{nota}{notes}%
+ \crefname{theorem}{teorema}{teoremes}%
+ \crefname{lemma}{lema}{lemes}%
+ \crefname{corollary}{coro\lgem ari}{coro\lgem aris}%
+ \crefname{proposition}{proposici\'o}{proposicions}%
+ \crefname{definition}{definici\'o}{definicions}%
+ \crefname{result}{resultat}{resultats}%
+ \crefname{example}{exemple}{exemples}%
+ \crefname{remark}{observaci\'o}{observacions}%
+ \crefname{note}{nota}{notes}%
+ \crefname{algorithm}{algorisme}{algorismes}%
+ \crefname{listing}{llistat}{llistats}%
+ \crefname{line}{l\'inia}{l\'inies}%
+ \fi}% end \cref at loadlanguagedefs
+% \end{macrocode}
+%
+%
% \subsection{Default Cross-Reference Formats}
% \label{sec:code:default_formats}
% The \option{capitalise} and \option{nameinlink} options must be
@@ -12553,7 +12982,6 @@
\else%
\creflabelformat{equation}{\textup{(#2#1#3)}}%
\fi%
-\@labelcrefdefinedefaultformats%
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -12793,772 +13221,28 @@
% \end{macrocode}
%
% If formats for subsections are undefined, define them to be identical
-% to the formats for sections.
+% to the formats for sections. Similarly for subsections within
+% appendices, subfigures, subtables, subequations and enums.
% \begin{macrocode}
- \@ifundefined{cref at subsection@name}{%
- \let\cref at subsection@name\cref at section@name%
- \let\cref at subsection@name at plural\cref at section@name at plural}{}%
- \@ifundefined{Cref at subsection@name}{%
- \let\Cref at subsection@name\Cref at section@name%
- \let\Cref at subsection@name at plural\Cref at section@name at plural}{}%
- \@ifundefined{cref at subsection@format}{%
- \let\cref at subsection@format\cref at section@format}{}%
- \@ifundefined{Cref at subsection@format}{%
- \let\Cref at subsection@format\Cref at section@format}{}%
- \@ifundefined{crefrange at subsection@format}{%
- \let\crefrange at subsection@format%
- \crefrange at section@format}{}%
- \@ifundefined{Crefrange at subsection@format}{%
- \let\Crefrange at subsection@format%
- \Crefrange at section@format}{}%
- \@ifundefined{cref at subsection@format at first}{%
- \let\cref at subsection@format at first%
- \cref at section@format at first}{}%
- \@ifundefined{Cref at subsection@format at first}{%
- \let\Cref at subsection@format at first%
- \Cref at section@format at first}{}%
- \@ifundefined{cref at subsection@format at second}{%
- \let\cref at subsection@format at second%
- \cref at section@format at second}{}%
- \@ifundefined{Cref at subsection@format at second}{%
- \let\Cref at subsection@format at second%
- \Cref at section@format at second}{}%
- \@ifundefined{cref at subsection@format at middle}{%
- \let\cref at subsection@format at middle%
- \cref at section@format at middle}{}%
- \@ifundefined{Cref at subsection@format at middle}{%
- \let\Cref at subsection@format at middle%
- \Cref at section@format at middle}{}%
- \@ifundefined{cref at subsection@format at last}{%
- \let\cref at subsection@format at last%
- \cref at section@format at last}{}%
- \@ifundefined{Cref at subsection@format at last}{%
- \let\Cref at subsection@format at last%
- \Cref at section@format at last}{}%
- \@ifundefined{crefrange at subsection@format at first}{%
- \let\crefrange at subsection@format at first%
- \crefrange at section@format at first}{}%
- \@ifundefined{Crefrange at subsection@format at first}{%
- \let\Crefrange at subsection@format at first%
- \Crefrange at section@format at first}{}%
- \@ifundefined{crefrange at subsection@format at second}{%
- \let\crefrange at subsection@format at second%
- \crefrange at section@format at second}{}%
- \@ifundefined{Crefrange at subsection@format at second}{%
- \let\Crefrange at subsection@format at second%
- \Crefrange at section@format at second}{}%
- \@ifundefined{crefrange at subsection@format at middle}{%
- \let\crefrange at subsection@format at middle%
- \crefrange at section@format at middle}{}%
- \@ifundefined{Crefrange at subsection@format at middle}{%
- \let\Crefrange at subsection@format at middle%
- \Crefrange at section@format at middle}{}%
- \@ifundefined{crefrange at subsection@format at last}{%
- \let\crefrange at subsection@format at last%
- \crefrange at section@format at last}{}%
- \@ifundefined{Crefrange at subsection@format at last}{%
- \let\Crefrange at subsection@format at last%
- \Crefrange at section@format at last}{}%
+ \@crefcopyformats{section}{subsection}%
+ \@crefcopyformats{section}{subsubsection}%
+ \@crefcopyformats{appendix}{subappendix}%
+ \@crefcopyformats{appendix}{subsubappendix}%
+ \@crefcopyformats{figure}{subfigure}%
+ \@crefcopyformats{table}{subtable}%
+ \@crefcopyformats{equation}{subequation}%
%
- \@ifundefined{cref at subsubsection@name}{%
- \let\cref at subsubsection@name\cref at section@name%
- \let\cref at subsubsection@name at plural\cref at section@name at plural}{}%
- \@ifundefined{Cref at subsection@name}{%
- \let\Cref at subsection@name\Cref at section@name%
- \let\Cref at subsection@name at plural\Cref at section@name at plural}{}%
- \@ifundefined{cref at subsubsection@format}{%
- \let\cref at subsubsection@format%
- \cref at subsection@format}{}%
- \@ifundefined{Cref at subsubsection@format}{%
- \let\Cref at subsubsection@format%
- \Cref at subsection@format}{}%
- \@ifundefined{crefrange at subsubsection@format}{%
- \let\crefrange at subsubsection@format%
- \crefrange at subsection@format}{}%
- \@ifundefined{Crefrange at subsubsection@format}{%
- \let\Crefrange at subsubsection@format%
- \Crefrange at subsection@format}{}%
- \@ifundefined{cref at subsubsection@format at first}{%
- \let\cref at subsubsection@format at first%
- \cref at subsection@format at first}{}%
- \@ifundefined{Cref at subsubsection@format at first}{%
- \let\Cref at subsubsection@format at first%
- \Cref at subsection@format at first}{}%
- \@ifundefined{cref at subsubsection@format at second}{%
- \let\cref at subsubsection@format at second%
- \cref at subsection@format at second}{}%
- \@ifundefined{Cref at subsubsection@format at second}{%
- \let\Cref at subsubsection@format at second%
- \Cref at subsection@format at second}{}%
- \@ifundefined{cref at subsubsection@format at middle}{%
- \let\cref at subsubsection@format at middle%
- \cref at subsection@format at middle}{}%
- \@ifundefined{Cref at subsubsection@format at middle}{%
- \let\Cref at subsubsection@format at middle%
- \Cref at subsection@format at middle}{}%
- \@ifundefined{cref at subsubsection@format at last}{%
- \let\cref at subsubsection@format at last%
- \cref at subsection@format at last}{}%
- \@ifundefined{Cref at subsubsection@format at last}{%
- \let\Cref at subsubsection@format at last%
- \Cref at subsection@format at last}{}%
- \@ifundefined{crefrange at subsubsection@format at first}{%
- \let\crefrange at subsubsection@format at first%
- \crefrange at subsection@format at first}{}%
- \@ifundefined{Crefrange at subsubsection@format at first}{%
- \let\Crefrange at subsubsection@format at first%
- \Crefrange at subsection@format at first}{}%
- \@ifundefined{crefrange at subsubsection@format at second}{%
- \let\crefrange at subsubsection@format at second%
- \crefrange at subsection@format at second}{}%
- \@ifundefined{Crefrange at subsubsection@format at second}{%
- \let\Crefrange at subsubsection@format at second%
- \Crefrange at subsection@format at second}{}%
- \@ifundefined{crefrange at subsubsection@format at middle}{%
- \let\crefrange at subsubsection@format at middle%
- \crefrange at subsection@format at middle}{}%
- \@ifundefined{Crefrange at subsubsection@format at middle}{%
- \let\Crefrange at subsubsection@format at middle%
- \Crefrange at subsection@format at middle}{}%
- \@ifundefined{crefrange at subsubsection@format at last}{%
- \let\crefrange at subsubsection@format at last%
- \crefrange at subsection@format at last}{}%
- \@ifundefined{Crefrange at subsubsection@format at last}{%
- \let\Crefrange at subsubsection@format at last%
- \Crefrange at subsection@format at last}{}%
+ \@crefcopyformats{enumi}{enumii}%
+ \@crefcopyformats{enumii}{enumiii}%
+ \@crefcopyformats{enumiii}{enumiv}%
+ \@crefcopyformats{enumiv}{enumv}%
% \end{macrocode}
-% Similarly for subsections within appendices.
+% Definition of default |\labelcref| formats also needs to be postponed
+% until beginning of document, in case |\crefdefaultlabelformat| has been
+% modified.
% \begin{macrocode}
- \@ifundefined{cref at subappendix@name}{%
- \let\cref at subappendix@name\cref at appendix@name%
- \let\cref at subappendix@name at plural%
- \cref at appendix@name at plural}{}%
- \@ifundefined{Cref at subappendix@name}{%
- \let\Cref at subappendix@name\Cref at section@name%
- \let\Cref at subappendixsection@name at plural%
- \Cref at appendix@name at plural}{}%
- \@ifundefined{cref at subappendix@format}{%
- \let\cref at subappendix@format\cref at appendix@format}{}%
- \@ifundefined{Cref at subappendix@format}{%
- \let\Cref at subappendix@format\Cref at appendix@format}{}%
- \@ifundefined{crefrange at subappendix@format}{%
- \let\crefrange at subappendix@format%
- \crefrange at appendix@format}{}%
- \@ifundefined{Crefrange at subappendix@format}{%
- \let\Crefrange at subappendix@format%
- \Crefrange at appendix@format}{}%
- \@ifundefined{cref at subappendix@format at first}{%
- \let\cref at subappendix@format at first%
- \cref at appendix@format at first}{}%
- \@ifundefined{Cref at subappendix@format at first}{%
- \let\Cref at subappendix@format at first%
- \Cref at appendix@format at first}{}%
- \@ifundefined{cref at subappendix@format at second}{%
- \let\cref at subappendix@format at second%
- \cref at appendix@format at second}{}%
- \@ifundefined{Cref at subappendix@format at second}{%
- \let\Cref at subappendix@format at second%
- \Cref at appendix@format at second}{}%
- \@ifundefined{cref at subappendix@format at middle}{%
- \let\cref at subappendix@format at middle%
- \cref at appendix@format at middle}{}%
- \@ifundefined{Cref at subappendix@format at middle}{%
- \let\Cref at subappendix@format at middle%
- \Cref at appendix@format at middle}{}%
- \@ifundefined{cref at subappendix@format at last}{%
- \let\cref at subappendix@format at last%
- \cref at appendix@format at last}{}%
- \@ifundefined{Cref at subappendix@format at last}{%
- \let\Cref at subappendix@format at last%
- \Cref at appendix@format at last}{}%
- \@ifundefined{crefrange at subappendix@format at first}{%
- \let\crefrange at subappendix@format at first%
- \crefrange at appendix@format at first}{}%
- \@ifundefined{Crefrange at subappendix@format at first}{%
- \let\Crefrange at subappendix@format at first%
- \Crefrange at appendix@format at first}{}%
- \@ifundefined{crefrange at subappendix@format at second}{%
- \let\crefrange at subappendix@format at second%
- \crefrange at appendix@format at second}{}%
- \@ifundefined{Crefrange at subappendix@format at second}{%
- \let\Crefrange at subappendix@format at second%
- \Crefrange at appendix@format at second}{}%
- \@ifundefined{crefrange at subappendix@format at middle}{%
- \let\crefrange at subappendix@format at middle%
- \crefrange at appendix@format at middle}{}%
- \@ifundefined{Crefrange at subappendix@format at middle}{%
- \let\Crefrange at subappendix@format at middle%
- \Crefrange at appendix@format at middle}{}%
- \@ifundefined{crefrange at subappendix@format at last}{%
- \let\crefrange at subappendix@format at last%
- \crefrange at appendix@format at last}{}%
- \@ifundefined{Crefrange at subappendix@format at last}{%
- \let\Crefrange at subappendix@format at last%
- \Crefrange at appendix@format at last}{}%
-%
- \@ifundefined{cref at subsubappendix@name}{%
- \let\cref at subsubappendix@name\cref at appendix@name%
- \let\cref at subsubappendix@name at plural%
- \cref at appendix@name at plural}{}%
- \@ifundefined{Cref at subsubappendix@name}{%
- \let\Cref at subsubappendix@name\Cref at section@name%
- \let\Cref at subsubappendixsection@name at plural%
- \Cref at appendix@name at plural}{}%
- \@ifundefined{cref at subsubappendix@format}{%
- \let\cref at subsubappendix@format%
- \cref at subappendix@format}{}%
- \@ifundefined{Cref at subsubappendix@format}{%
- \let\Cref at subsubappendix@format%
- \Cref at subappendix@format}{}%
- \@ifundefined{crefrange at subsubappendix@format}{%
- \let\crefrange at subsubappendix@format%
- \crefrange at subappendix@format}{}%
- \@ifundefined{Crefrange at subsubappendix@format}{%
- \let\Crefrange at subsubappendix@format%
- \Crefrange at subappendix@format}{}%
- \@ifundefined{cref at subsubappendix@format at first}{%
- \let\cref at subsubappendix@format at first%
- \cref at subappendix@format at first}{}%
- \@ifundefined{Cref at subsubappendix@format at first}{%
- \let\Cref at subsubappendix@format at first%
- \Cref at subappendix@format at first}{}%
- \@ifundefined{cref at subsubappendix@format at second}{%
- \let\cref at subsubappendix@format at second%
- \cref at subappendix@format at second}{}%
- \@ifundefined{Cref at subsubappendix@format at second}{%
- \let\Cref at subsubappendix@format at second%
- \Cref at subappendix@format at second}{}%
- \@ifundefined{cref at subsubappendix@format at middle}{%
- \let\cref at subsubappendix@format at middle%
- \cref at subappendix@format at middle}{}%
- \@ifundefined{Cref at subsubappendix@format at middle}{%
- \let\Cref at subsubappendix@format at middle%
- \Cref at subappendix@format at middle}{}%
- \@ifundefined{cref at subsubappendix@format at last}{%
- \let\cref at subsubappendix@format at last%
- \cref at subappendix@format at last}{}%
- \@ifundefined{Cref at subsubappendix@format at last}{%
- \let\Cref at subsubappendix@format at last%
- \Cref at subappendix@format at last}{}%
- \@ifundefined{crefrange at subsubappendix@format at first}{%
- \let\crefrange at subsubappendix@format at first%
- \crefrange at subappendix@format at first}{}%
- \@ifundefined{Crefrange at subsubappendix@format at first}{%
- \let\Crefrange at subsubappendix@format at first%
- \Crefrange at subappendix@format at first}{}%
- \@ifundefined{crefrange at subsubappendix@format at second}{%
- \let\crefrange at subsubappendix@format at second%
- \crefrange at subappendix@format at second}{}%
- \@ifundefined{Crefrange at subsubappendix@format at second}{%
- \let\Crefrange at subsubappendix@format at second%
- \Crefrange at subappendix@format at second}{}%
- \@ifundefined{crefrange at subsubappendix@format at middle}{%
- \let\crefrange at subsubappendix@format at middle%
- \crefrange at subappendix@format at middle}{}%
- \@ifundefined{Crefrange at subsubappendix@format at middle}{%
- \let\Crefrange at subsubappendix@format at middle%
- \Crefrange at subappendix@format at middle}{}%
- \@ifundefined{crefrange at subsubappendix@format at last}{%
- \let\crefrange at subsubappendix@format at last%
- \crefrange at subappendix@format at last}{}%
- \@ifundefined{Crefrange at subsubappendix@format at last}{%
- \let\Crefrange at subsubappendix@format at last%
- \Crefrange at subappendix@format at last}{}%
-%
- \@ifundefined{cref at subsubsubappendix@format}{%
- \let\cref at subsubsubappendix@format%
- \cref at subsubappendix@format}{}%
- \@ifundefined{Cref at subsubsubappendix@format}{%
- \let\Cref at subsubsubappendix@format%
- \Cref at subsubappendix@format}{}%
- \@ifundefined{crefrange at subsubsubappendix@format}{%
- \let\crefrange at subsubsubappendix@format%
- \crefrange at subsubappendix@format}{}%
- \@ifundefined{Crefrange at subsubsubappendix@format}{%
- \let\Crefrange at subsubsubappendix@format%
- \Crefrange at subsubappendix@format}{}%
- \@ifundefined{cref at subsubsubappendix@format at first}{%
- \let\cref at subsubsubappendix@format at first%
- \cref at subsubappendix@format at first}{}%
- \@ifundefined{Cref at subsubsubappendix@format at first}{%
- \let\Cref at subsubsubappendix@format at first%
- \Cref at subsubappendix@format at first}{}%
- \@ifundefined{cref at subsubsubappendix@format at second}{%
- \let\cref at subsubsubappendix@format at second%
- \cref at subsubappendix@format at second}{}%
- \@ifundefined{Cref at subsubsubappendix@format at second}{%
- \let\Cref at subsubsubappendix@format at second%
- \Cref at subsubappendix@format at second}{}%
- \@ifundefined{cref at subsubsubappendix@format at middle}{%
- \let\cref at subsubsubappendix@format at middle%
- \cref at subsubappendix@format at middle}{}%
- \@ifundefined{Cref at subsubsubappendix@format at middle}{%
- \let\Cref at subsubsubappendix@format at middle%
- \Cref at subsubappendix@format at middle}{}%
- \@ifundefined{cref at subsubsubappendix@format at last}{%
- \let\cref at subsubsubappendix@format at last%
- \cref at subsubappendix@format at last}{}%
- \@ifundefined{Cref at subsubsubappendix@format at last}{%
- \let\Cref at subsubsubappendix@format at last%
- \Cref at subsubappendix@format at last}{}%
- \@ifundefined{crefrange at subsubsubappendix@format at first}{%
- \let\crefrange at subsubsubappendix@format at first%
- \crefrange at subsubappendix@format at first}{}%
- \@ifundefined{Crefrange at subsubsubappendix@format at first}{%
- \let\Crefrange at subsubsubappendix@format at first%
- \Crefrange at subsubappendix@format at first}{}%
- \@ifundefined{crefrange at subsubsubappendix@format at second}{%
- \let\crefrange at subsubsubappendix@format at second%
- \crefrange at subsubappendix@format at second}{}%
- \@ifundefined{Crefrange at subsubsubappendix@format at second}{%
- \let\Crefrange at subsubsubappendix@format at second%
- \Crefrange at subsubappendix@format at second}{}%
- \@ifundefined{crefrange at subsubsubappendix@format at middle}{%
- \let\crefrange at subsubsubappendix@format at middle%
- \crefrange at subsubappendix@format at middle}{}%
- \@ifundefined{Crefrange at subsubsubappendix@format at middle}{%
- \let\Crefrange at subsubsubappendix@format at middle%
- \Crefrange at subsubappendix@format at middle}{}%
- \@ifundefined{crefrange at subsubsubappendix@format at last}{%
- \let\crefrange at subsubsubappendix@format at last%
- \crefrange at subsubappendix@format at last}{}%
- \@ifundefined{Crefrange at subsubsubappendix@format at last}{%
- \let\Crefrange at subsubsubappendix@format at last%
- \Crefrange at subsubappendix@format at last}{}%
-% \end{macrocode}
-% Ditto for subfigures and subtables.
-% \begin{macrocode}
- \@ifundefined{cref at subfigure@format}{%
- \let\cref at subfigure@format%
- \cref at figure@format}{}%
- \@ifundefined{Cref at subfigure@format}{%
- \let\Cref at subfigure@format%
- \Cref at figure@format}{}%
- \@ifundefined{crefrange at subfigure@format}{%
- \let\crefrange at subfigure@format%
- \crefrange at figure@format}{}%
- \@ifundefined{Crefrange at subfigure@format}{%
- \let\Crefrange at subfigure@format%
- \Crefrange at figure@format}{}%
- \@ifundefined{cref at subfigure@format at first}{%
- \let\cref at subfigure@format at first%
- \cref at figure@format at first}{}%
- \@ifundefined{Cref at subfigure@format at first}{%
- \let\Cref at subfigure@format at first%
- \Cref at figure@format at first}{}%
- \@ifundefined{cref at subfigure@format at second}{%
- \let\cref at subfigure@format at second%
- \cref at figure@format at second}{}%
- \@ifundefined{Cref at subfigure@format at second}{%
- \let\Cref at subfigure@format at second%
- \Cref at figure@format at second}{}%
- \@ifundefined{cref at subfigure@format at middle}{%
- \let\cref at subfigure@format at middle%
- \cref at figure@format at middle}{}%
- \@ifundefined{Cref at subfigure@format at middle}{%
- \let\Cref at subfigure@format at middle%
- \Cref at figure@format at middle}{}%
- \@ifundefined{cref at subfigure@format at last}{%
- \let\cref at subfigure@format at last%
- \cref at figure@format at last}{}%
- \@ifundefined{Cref at subfigure@format at last}{%
- \let\Cref at subfigure@format at last%
- \Cref at figure@format at last}{}%
- \@ifundefined{crefrange at subfigure@format at first}{%
- \let\crefrange at subfigure@format at first%
- \crefrange at figure@format at first}{}%
- \@ifundefined{Crefrange at subfigure@format at first}{%
- \let\Crefrange at subfigure@format at first%
- \Crefrange at figure@format at first}{}%
- \@ifundefined{crefrange at subfigure@format at second}{%
- \let\crefrange at subfigure@format at second%
- \crefrange at figure@format at second}{}%
- \@ifundefined{Crefrange at subfigure@format at second}{%
- \let\Crefrange at subfigure@format at second%
- \Crefrange at figure@format at second}{}%
- \@ifundefined{crefrange at subfigure@format at middle}{%
- \let\crefrange at subfigure@format at middle%
- \crefrange at figure@format at middle}{}%
- \@ifundefined{Crefrange at subfigure@format at middle}{%
- \let\Crefrange at subfigure@format at middle%
- \Crefrange at figure@format at middle}{}%
- \@ifundefined{crefrange at subfigure@format at last}{%
- \let\crefrange at subfigure@format at last%
- \crefrange at figure@format at last}{}%
- \@ifundefined{Crefrange at subfigure@format at last}{%
- \let\Crefrange at subfigure@format at last%
- \Crefrange at figure@format at last}{}%
-%
- \@ifundefined{cref at subtable@format}{%
- \let\cref at subtable@format%
- \cref at table@format}{}%
- \@ifundefined{Cref at subtable@format}{%
- \let\Cref at subtable@format%
- \Cref at table@format}{}%
- \@ifundefined{crefrange at subtable@format}{%
- \let\crefrange at subtable@format%
- \crefrange at table@format}{}%
- \@ifundefined{Crefrange at subtable@format}{%
- \let\Crefrange at subtable@format%
- \Crefrange at table@format}{}%
- \@ifundefined{cref at subtable@format at first}{%
- \let\cref at subtable@format at first%
- \cref at table@format at first}{}%
- \@ifundefined{Cref at subtable@format at first}{%
- \let\Cref at subtable@format at first%
- \Cref at table@format at first}{}%
- \@ifundefined{cref at subtable@format at second}{%
- \let\cref at subtable@format at second%
- \cref at table@format at second}{}%
- \@ifundefined{Cref at subtable@format at second}{%
- \let\Cref at subtable@format at second%
- \Cref at table@format at second}{}%
- \@ifundefined{cref at subtable@format at middle}{%
- \let\cref at subtable@format at middle%
- \cref at table@format at middle}{}%
- \@ifundefined{Cref at subtable@format at middle}{%
- \let\Cref at subtable@format at middle%
- \Cref at table@format at middle}{}%
- \@ifundefined{cref at subtable@format at last}{%
- \let\cref at subtable@format at last%
- \cref at table@format at last}{}%
- \@ifundefined{Cref at subtable@format at last}{%
- \let\Cref at subtable@format at last%
- \Cref at table@format at last}{}%
- \@ifundefined{crefrange at subtable@format at first}{%
- \let\crefrange at subtable@format at first%
- \crefrange at table@format at first}{}%
- \@ifundefined{Crefrange at subtable@format at first}{%
- \let\Crefrange at subtable@format at first%
- \Crefrange at table@format at first}{}%
- \@ifundefined{crefrange at subtable@format at second}{%
- \let\crefrange at subtable@format at second%
- \crefrange at table@format at second}{}%
- \@ifundefined{Crefrange at subtable@format at second}{%
- \let\Crefrange at subtable@format at second%
- \Crefrange at table@format at second}{}%
- \@ifundefined{crefrange at subtable@format at middle}{%
- \let\crefrange at subtable@format at middle%
- \crefrange at table@format at middle}{}%
- \@ifundefined{Crefrange at subtable@format at middle}{%
- \let\Crefrange at subtable@format at middle%
- \Crefrange at table@format at middle}{}%
- \@ifundefined{crefrange at subtable@format at last}{%
- \let\crefrange at subtable@format at last%
- \crefrange at table@format at last}{}%
- \@ifundefined{Crefrange at subtable@format at last}{%
- \let\Crefrange at subtable@format at last%
- \Crefrange at table@format at last}{}%
-% \end{macrocode}
-% Ditto for subequations.
-% \begin{macrocode}
- \@ifundefined{cref at subequation@format}{%
- \let\cref at subequation@format%
- \cref at equation@format}{}%
- \@ifundefined{Cref at subequation@format}{%
- \let\Cref at subequation@format%
- \Cref at equation@format}{}%
- \@ifundefined{crefrange at subequation@format}{%
- \let\crefrange at subequation@format%
- \crefrange at equation@format}{}%
- \@ifundefined{Crefrange at subequation@format}{%
- \let\Crefrange at subequation@format%
- \Crefrange at equation@format}{}%
- \@ifundefined{cref at subequation@format at first}{%
- \let\cref at subequation@format at first%
- \cref at equation@format at first}{}%
- \@ifundefined{Cref at subequation@format at first}{%
- \let\Cref at subequation@format at first%
- \Cref at equation@format at first}{}%
- \@ifundefined{cref at subequation@format at second}{%
- \let\cref at subequation@format at second%
- \cref at equation@format at second}{}%
- \@ifundefined{Cref at subequation@format at second}{%
- \let\Cref at subequation@format at second%
- \Cref at equation@format at second}{}%
- \@ifundefined{cref at subequation@format at middle}{%
- \let\cref at subequation@format at middle%
- \cref at equation@format at middle}{}%
- \@ifundefined{Cref at subequation@format at middle}{%
- \let\Cref at subequation@format at middle%
- \Cref at equation@format at middle}{}%
- \@ifundefined{cref at subequation@format at last}{%
- \let\cref at subequation@format at last%
- \cref at equation@format at last}{}%
- \@ifundefined{Cref at subequation@format at last}{%
- \let\Cref at subequation@format at last%
- \Cref at equation@format at last}{}%
- \@ifundefined{crefrange at subequation@format at first}{%
- \let\crefrange at subequation@format at first%
- \crefrange at equation@format at first}{}%
- \@ifundefined{Crefrange at subequation@format at first}{%
- \let\Crefrange at subequation@format at first%
- \Crefrange at equation@format at first}{}%
- \@ifundefined{crefrange at subequation@format at second}{%
- \let\crefrange at subequation@format at second%
- \crefrange at equation@format at second}{}%
- \@ifundefined{Crefrange at subequation@format at second}{%
- \let\Crefrange at subequation@format at second%
- \Crefrange at equation@format at second}{}%
- \@ifundefined{crefrange at subequation@format at middle}{%
- \let\crefrange at subequation@format at middle%
- \crefrange at equation@format at middle}{}%
- \@ifundefined{Crefrange at subequation@format at middle}{%
- \let\Crefrange at subequation@format at middle%
- \Crefrange at equation@format at middle}{}%
- \@ifundefined{crefrange at subequation@format at last}{%
- \let\crefrange at subequation@format at last%
- \crefrange at equation@format at last}{}%
- \@ifundefined{Crefrange at subequation@format at last}{%
- \let\Crefrange at subequation@format at last%
- \Crefrange at equation@format at last}{}%
-% \end{macrocode}
-% Ditto for enums.
-% \begin{macrocode}
- \@ifundefined{cref at enumii@format}{%
- \let\cref at enumii@format%
- \cref at enumi@format}{}%
- \@ifundefined{Cref at enumii@format}{%
- \let\Cref at enumii@format%
- \Cref at enumi@format}{}%
- \@ifundefined{crefrange at enumii@format}{%
- \let\crefrange at enumii@format%
- \crefrange at enumi@format}{}%
- \@ifundefined{Crefrange at enumii@format}{%
- \let\Crefrange at enumii@format%
- \Crefrange at enumi@format}{}%
- \@ifundefined{cref at enumii@format at first}{%
- \let\cref at enumii@format at first%
- \cref at enumi@format at first}{}%
- \@ifundefined{Cref at enumii@format at first}{%
- \let\Cref at enumii@format at first%
- \Cref at enumi@format at first}{}%
- \@ifundefined{cref at enumii@format at second}{%
- \let\cref at enumii@format at second%
- \cref at enumi@format at second}{}%
- \@ifundefined{Cref at enumii@format at second}{%
- \let\Cref at enumii@format at second%
- \Cref at enumi@format at second}{}%
- \@ifundefined{cref at enumii@format at middle}{%
- \let\cref at enumii@format at middle%
- \cref at enumi@format at middle}{}%
- \@ifundefined{Cref at enumii@format at middle}{%
- \let\Cref at enumii@format at middle%
- \Cref at enumi@format at middle}{}%
- \@ifundefined{cref at enumii@format at last}{%
- \let\cref at enumii@format at last%
- \cref at enumi@format at last}{}%
- \@ifundefined{Cref at enumii@format at last}{%
- \let\Cref at enumii@format at last%
- \Cref at enumi@format at last}{}%
- \@ifundefined{crefrange at enumii@format at first}{%
- \let\crefrange at enumii@format at first%
- \crefrange at enumi@format at first}{}%
- \@ifundefined{Crefrange at enumii@format at first}{%
- \let\Crefrange at enumii@format at first%
- \Crefrange at enumi@format at first}{}%
- \@ifundefined{crefrange at enumii@format at second}{%
- \let\crefrange at enumii@format at second%
- \crefrange at enumi@format at second}{}%
- \@ifundefined{Crefrange at enumii@format at second}{%
- \let\Crefrange at enumii@format at second%
- \Crefrange at enumi@format at second}{}%
- \@ifundefined{crefrange at enumii@format at middle}{%
- \let\crefrange at enumii@format at middle%
- \crefrange at enumi@format at middle}{}%
- \@ifundefined{Crefrange at enumii@format at middle}{%
- \let\Crefrange at enumii@format at middle%
- \Crefrange at enumi@format at middle}{}%
- \@ifundefined{crefrange at enumii@format at last}{%
- \let\crefrange at enumii@format at last%
- \crefrange at enumi@format at last}{}%
- \@ifundefined{Crefrange at enumii@format at last}{%
- \let\Crefrange at enumii@format at last%
- \Crefrange at enumi@format at last}{}%
-%
- \@ifundefined{cref at enumiii@format}{%
- \let\cref at enumiii@format%
- \cref at enumii@format}{}%
- \@ifundefined{Cref at enumiii@format}{%
- \let\Cref at enumiii@format%
- \Cref at enumii@format}{}%
- \@ifundefined{crefrange at enumiii@format}{%
- \let\crefrange at enumiii@format%
- \crefrange at enumii@format}{}%
- \@ifundefined{Crefrange at enumiii@format}{%
- \let\Crefrange at enumiii@format%
- \Crefrange at enumii@format}{}%
- \@ifundefined{cref at enumiii@format at first}{%
- \let\cref at enumiii@format at first%
- \cref at enumii@format at first}{}%
- \@ifundefined{Cref at enumiii@format at first}{%
- \let\Cref at enumiii@format at first%
- \Cref at enumii@format at first}{}%
- \@ifundefined{cref at enumiii@format at second}{%
- \let\cref at enumiii@format at second%
- \cref at enumii@format at second}{}%
- \@ifundefined{Cref at enumiii@format at second}{%
- \let\Cref at enumiii@format at second%
- \Cref at enumii@format at second}{}%
- \@ifundefined{cref at enumiii@format at middle}{%
- \let\cref at enumiii@format at middle%
- \cref at enumii@format at middle}{}%
- \@ifundefined{Cref at enumiii@format at middle}{%
- \let\Cref at enumiii@format at middle%
- \Cref at enumii@format at middle}{}%
- \@ifundefined{cref at enumiii@format at last}{%
- \let\cref at enumiii@format at last%
- \cref at enumii@format at last}{}%
- \@ifundefined{Cref at enumiii@format at last}{%
- \let\Cref at enumiii@format at last%
- \Cref at enumii@format at last}{}%
- \@ifundefined{crefrange at enumiii@format at first}{%
- \let\crefrange at enumiii@format at first%
- \crefrange at enumii@format at first}{}%
- \@ifundefined{Crefrange at enumiii@format at first}{%
- \let\Crefrange at enumiii@format at first%
- \Crefrange at enumii@format at first}{}%
- \@ifundefined{crefrange at enumiii@format at second}{%
- \let\crefrange at enumiii@format at second%
- \crefrange at enumii@format at second}{}%
- \@ifundefined{Crefrange at enumiii@format at second}{%
- \let\Crefrange at enumiii@format at second%
- \Crefrange at enumii@format at second}{}%
- \@ifundefined{crefrange at enumiii@format at middle}{%
- \let\crefrange at enumiii@format at middle%
- \crefrange at enumii@format at middle}{}%
- \@ifundefined{Crefrange at enumiii@format at middle}{%
- \let\Crefrange at enumiii@format at middle%
- \Crefrange at enumii@format at middle}{}%
- \@ifundefined{crefrange at enumiii@format at last}{%
- \let\crefrange at enumiii@format at last%
- \crefrange at enumii@format at last}{}%
- \@ifundefined{Crefrange at enumiii@format at last}{%
- \let\Crefrange at enumiii@format at last%
- \Crefrange at enumii@format at last}{}%
-%
- \@ifundefined{cref at enumiv@format}{%
- \let\cref at enumiv@format%
- \cref at enumiii@format}{}%
- \@ifundefined{Cref at enumiv@format}{%
- \let\Cref at enumiv@format%
- \Cref at enumiii@format}{}%
- \@ifundefined{crefrange at enumiv@format}{%
- \let\crefrange at enumiv@format%
- \crefrange at enumiii@format}{}%
- \@ifundefined{Crefrange at enumiv@format}{%
- \let\Crefrange at enumiv@format%
- \Crefrange at enumiii@format}{}%
- \@ifundefined{cref at enumiv@format at first}{%
- \let\cref at enumiv@format at first%
- \cref at enumiii@format at first}{}%
- \@ifundefined{Cref at enumiv@format at first}{%
- \let\Cref at enumiv@format at first%
- \Cref at enumiii@format at first}{}%
- \@ifundefined{cref at enumiv@format at second}{%
- \let\cref at enumiv@format at second%
- \cref at enumiii@format at second}{}%
- \@ifundefined{Cref at enumiv@format at second}{%
- \let\Cref at enumiv@format at second%
- \Cref at enumiii@format at second}{}%
- \@ifundefined{cref at enumiv@format at middle}{%
- \let\cref at enumiv@format at middle%
- \cref at enumiii@format at middle}{}%
- \@ifundefined{Cref at enumiv@format at middle}{%
- \let\Cref at enumiv@format at middle%
- \Cref at enumiii@format at middle}{}%
- \@ifundefined{cref at enumiv@format at last}{%
- \let\cref at enumiv@format at last%
- \cref at enumiii@format at last}{}%
- \@ifundefined{Cref at enumiv@format at last}{%
- \let\Cref at enumiv@format at last%
- \Cref at enumiii@format at last}{}%
- \@ifundefined{crefrange at enumiv@format at first}{%
- \let\crefrange at enumiv@format at first%
- \crefrange at enumiii@format at first}{}%
- \@ifundefined{Crefrange at enumiv@format at first}{%
- \let\Crefrange at enumiv@format at first%
- \Crefrange at enumiii@format at first}{}%
- \@ifundefined{crefrange at enumiv@format at second}{%
- \let\crefrange at enumiv@format at second%
- \crefrange at enumiii@format at second}{}%
- \@ifundefined{Crefrange at enumiv@format at second}{%
- \let\Crefrange at enumiv@format at second%
- \Crefrange at enumiii@format at second}{}%
- \@ifundefined{crefrange at enumiv@format at middle}{%
- \let\crefrange at enumiv@format at middle%
- \crefrange at enumiii@format at middle}{}%
- \@ifundefined{Crefrange at enumiv@format at middle}{%
- \let\Crefrange at enumiv@format at middle%
- \Crefrange at enumiii@format at middle}{}%
- \@ifundefined{crefrange at enumiv@format at last}{%
- \let\crefrange at enumiv@format at last%
- \crefrange at enumiii@format at last}{}%
- \@ifundefined{Crefrange at enumiv@format at last}{%
- \let\Crefrange at enumiv@format at last%
- \Crefrange at enumiii@format at last}{}%
-%
- \@ifundefined{cref at enumv@format}{%
- \let\cref at enumv@format%
- \cref at enumiv@format}{}%
- \@ifundefined{Cref at enumv@format}{%
- \let\Cref at enumv@format%
- \Cref at enumiv@format}{}%
- \@ifundefined{crefrange at enumv@format}{%
- \let\crefrange at enumv@format%
- \crefrange at enumiv@format}{}%
- \@ifundefined{Crefrange at enumv@format}{%
- \let\Crefrange at enumv@format%
- \Crefrange at enumiv@format}{}%
- \@ifundefined{cref at enumv@format at first}{%
- \let\cref at enumv@format at first%
- \cref at enumiv@format at first}{}%
- \@ifundefined{Cref at enumv@format at first}{%
- \let\Cref at enumv@format at first%
- \Cref at enumiv@format at first}{}%
- \@ifundefined{cref at enumv@format at second}{%
- \let\cref at enumv@format at second%
- \cref at enumiv@format at second}{}%
- \@ifundefined{Cref at enumv@format at second}{%
- \let\Cref at enumv@format at second%
- \Cref at enumiv@format at second}{}%
- \@ifundefined{cref at enumv@format at middle}{%
- \let\cref at enumv@format at middle%
- \cref at enumiv@format at middle}{}%
- \@ifundefined{Cref at enumv@format at middle}{%
- \let\Cref at enumv@format at middle%
- \Cref at enumiv@format at middle}{}%
- \@ifundefined{cref at enumv@format at last}{%
- \let\cref at enumv@format at last%
- \cref at enumiv@format at last}{}%
- \@ifundefined{Cref at enumv@format at last}{%
- \let\Cref at enumv@format at last%
- \Cref at enumiv@format at last}{}%
- \@ifundefined{crefrange at enumv@format at first}{%
- \let\crefrange at enumv@format at first%
- \crefrange at enumiv@format at first}{}%
- \@ifundefined{Crefrange at enumv@format at first}{%
- \let\Crefrange at enumv@format at first%
- \Crefrange at enumiv@format at first}{}%
- \@ifundefined{crefrange at enumv@format at second}{%
- \let\crefrange at enumv@format at second%
- \crefrange at enumiv@format at second}{}%
- \@ifundefined{Crefrange at enumv@format at second}{%
- \let\Crefrange at enumv@format at second%
- \Crefrange at enumiv@format at second}{}%
- \@ifundefined{crefrange at enumv@format at middle}{%
- \let\crefrange at enumv@format at middle%
- \crefrange at enumiv@format at middle}{}%
- \@ifundefined{Crefrange at enumv@format at middle}{%
- \let\Crefrange at enumv@format at middle%
- \Crefrange at enumiv@format at middle}{}%
- \@ifundefined{crefrange at enumv@format at last}{%
- \let\crefrange at enumv@format at last%
- \crefrange at enumiv@format at last}{}%
- \@ifundefined{Crefrange at enumv@format at last}{%
- \let\Crefrange at enumv@format at last%
- \Crefrange at enumiv@format at last}{}%
-%
+ \@labelcrefdefinedefaultformats%
+ %
\let\cref at language\relax%
}% end of \AtBeginDocument
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/cleveref/cleveref.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/cleveref/cleveref.ins 2018-02-05 12:35:05 UTC (rev 46548)
+++ trunk/Master/texmf-dist/source/latex/cleveref/cleveref.ins 2018-02-05 21:55:39 UTC (rev 46549)
@@ -11,7 +11,7 @@
LaTeX package for intelligent cross-referencing.
-Copyright (C) 2006--2013 Toby Cubitt
+Copyright (C) 2006--2016 Toby Cubitt
See the files README and COPYING.
\endpreamble
Modified: trunk/Master/texmf-dist/tex/latex/cleveref/cleveref.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/cleveref/cleveref.sty 2018-02-05 12:35:05 UTC (rev 46548)
+++ trunk/Master/texmf-dist/tex/latex/cleveref/cleveref.sty 2018-02-05 21:55:39 UTC (rev 46549)
@@ -8,11 +8,11 @@
%%
%% LaTeX package for intelligent cross-referencing.
%%
-%% Copyright (C) 2006--2013 Toby Cubitt
+%% Copyright (C) 2006--2016 Toby Cubitt
%% See the files README and COPYING.
%%
-\def\packagedate{2013/12/28}
-\def\packageversion{0.19}
+\def\packagedate{2017/07/10}
+\def\packageversion{0.21}
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.2
%% of this license or (at your option) any later version.
@@ -68,19 +68,31 @@
\def\label{\@ifnextchar[\label at optarg\label at noarg}%]
\let\cref at label\label%
\def\label at noarg#1{%
+ \cref at old@label{#1}%
\@bsphack%
- \cref at old@label{#1}%
+ \edef\@tempa{{page}{\the\c at page}}%
+ \setcounter{page}{1}%
+ \edef\@tempb{\thepage}%
+ \expandafter\setcounter\@tempa%
+ \cref at constructprefix{page}{\cref at result}%
\protected at write\@auxout{}%
- {\string\newlabel{#1 at cref}{{\cref at currentlabel}{\thepage}}}%
+ {\string\newlabel{#1 at cref}{{\cref at currentlabel}%
+ {[\@tempb][\arabic{page}][\cref at result]\thepage}}}%
\@esphack}%
\def\label at optarg[#1]#2{%
+ \cref at old@label{#2}%
\@bsphack%
- \cref at old@label{#2}%
+ \edef\@tempa{{page}{\the\c at page}}%
+ \setcounter{page}{1}%
+ \edef\@tempb{\thepage}%
+ \expandafter\setcounter\@tempa%
+ \cref at constructprefix{page}{\cref at result}%
\protected at edef\cref at currentlabel{%
\expandafter\cref at override@label at type%
\cref at currentlabel\@nil{#1}}%
\protected at write\@auxout{}%
- {\string\newlabel{#2 at cref}{{\cref at currentlabel}{\thepage}}}%
+ {\string\newlabel{#2 at cref}{{\cref at currentlabel}%
+ {[\@tempb][\arabic{page}][\cref at result]\thepage}}}%
\@esphack}%
}% end of AtBeginDocument
\let\cref at old@makefntext\@makefntext%
@@ -160,102 +172,118 @@
\cref at stack@add{#1}{\cref at label@types}%
\cref at old@ynthm{#1}{#2}}%
\@ifundefined{appendix}{}{%
- \g at addto@macro\appendix{%
+ \let\cref at old@appendix\appendix%
+ \def\appendix{%
\@ifundefined{chapter}{%
- \gdef\refstepcounter at noarg#1{%
- \cref at old@refstepcounter{#1}%
- \cref at constructprefix{#1}{\cref at result}%
+ \gdef\refstepcounter at noarg##1{%
+ \cref at old@refstepcounter{##1}%
+ \cref at constructprefix{##1}{\cref at result}%
\ifx\cref at result\@empty%
\def\cref at result{2147483647}%
\else%
\edef\cref at result{2147483647,\cref at result}%
\fi%
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{section}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [appendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [appendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{subsection}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [subappendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [subappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{subsubsection}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [subsubappendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [subsubappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \@ifundefined{cref@#1 at alias}%
- {\def\@tempa{#1}}%
- {\def\@tempa{\csname cref@#1 at alias\endcsname}}%
+ \@ifundefined{cref@##1 at alias}%
+ {\def\@tempa{##1}}%
+ {\def\@tempa{\csname cref@##1 at alias\endcsname}}%
\protected at edef\cref at currentlabel{%
- [\@tempa][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [\@tempa][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\fi%
\fi%
\fi}%
+ \cref at old@appendix%
}{%
- \def\refstepcounter at noarg#1{%
- \cref at old@refstepcounter{#1}%
- \cref at constructprefix{#1}{\cref at result}%
+ \def\refstepcounter at noarg##1{%
+ \cref at old@refstepcounter{##1}%
+ \cref at constructprefix{##1}{\cref at result}%
\ifx\cref at result\@empty%
\def\cref at result{2147483647}%
\else%
\edef\cref at result{2147483647,\cref at result}%
\fi%
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{chapter}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [appendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [appendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{section}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [subappendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [subappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{subsection}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [subsubappendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [subsubappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{subsubsection}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [subsubsubappendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [subsubsubappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \@ifundefined{cref@#1 at alias}%
- {\def\@tempa{#1}}%
- {\def\@tempa{\csname cref@#1 at alias\endcsname}}%
+ \@ifundefined{cref@##1 at alias}%
+ {\def\@tempa{##1}}%
+ {\def\@tempa{\csname cref@##1 at alias\endcsname}}%
\protected at edef\cref at currentlabel{%
- [\@tempa][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [\@tempa][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\fi%
\fi%
\fi%
\fi}%
- }%
+ \cref at old@appendix}%
}%
}% end of \@ifundefined{appendix}
-\def\@gobble at optarg{\@ifnextchar[\@@gobble at optarg\@gobble at orig}%]
-\def\@gobble at orig#1{}%
-\def\@@gobble at optarg[#1]#2{}%
+\def\cref at gobble@optarg{\@ifnextchar[\@cref at gobble@optarg\cref at gobble}%]
+\def\cref at gobble#1{}%
+\def\@cref at gobble@optarg[#1]#2{}%
\def\cref at append@toks#1#2{\toks0={#2}%
\edef\act{\noexpand#1={\the#1\the\toks0}}%
\act}%
+\def\cref at ifstreq#1#2#3#4{%
+ \begingroup%
+ \edef\@tempa{#1}%
+ \edef\@tempb{#2}%
+ \expandafter\def\expandafter\@tempa\expandafter{\csname\@tempa\endcsname}%
+ \expandafter\def\expandafter\@tempb\expandafter{\csname\@tempb\endcsname}%
+ \ifx\@tempa\@tempb%
+ \let\@tempc\@firstoftwo%
+ \else%
+ \let\@tempc\@secondoftwo%
+ \fi%
+ \expandafter%
+ \endgroup%
+ \@tempc{#3}{#4}}%
\def\cref at getref#1#2{%
\expandafter\let\expandafter#2\csname r@#1 at cref\endcsname%
\expandafter\expandafter\expandafter\def%
@@ -262,12 +290,6 @@
\expandafter\expandafter\expandafter#2%
\expandafter\expandafter\expandafter{%
\expandafter\@firstoftwo#2}}%
-\def\cref at getpageref#1#2{%
- \expandafter\let\expandafter#2\csname r@#1 at cref\endcsname%
- \expandafter\expandafter\expandafter\def%
- \expandafter\expandafter\expandafter#2%
- \expandafter\expandafter\expandafter{%
- \expandafter\@secondoftwo#2}}%
\def\cref at getlabel#1#2{%
\cref at getref{#1}{\@tempa}%
\expandafter\@cref at getlabel\@tempa\@nil#2}%
@@ -292,6 +314,36 @@
\def\@cref at getprefix{\@ifnextchar[%]
\@@cref at getprefix{\@@cref at getprefix[][][]}}%
\def\@@cref at getprefix[#1][#2][#3]#4\@nil#5{\def#5{#3}}%
+\def\cpageref at getref#1#2{%
+ \expandafter\let\expandafter#2\csname r@#1 at cref\endcsname%
+ \expandafter\expandafter\expandafter\def%
+ \expandafter\expandafter\expandafter#2%
+ \expandafter\expandafter\expandafter{%
+ \expandafter\@secondoftwo#2}}%
+\def\cpageref at getlabel#1#2{%
+ \cpageref at getref{#1}{\@tempa}%
+ \expandafter\@cpageref at getlabel\@tempa\@nil#2}%
+\def\@cpageref at getlabel{\@ifnextchar[%]
+ \@@cpageref at getlabel{\@@cpageref at getlabel[][][]}}%
+\def\@@cpageref at getlabel[#1][#2][#3]#4\@nil#5{\def#5{#4}}%
+\def\cpageref at gettype#1#2{%
+ \cpageref at getref{#1}{\@tempa}%
+ \expandafter\@cpageref at gettype\@tempa\@nil#2}%
+\def\@cpageref at gettype{\@ifnextchar[%]
+ \@@cpageref at gettype{\@@cpageref at gettype[][][]}}%
+\def\@@cpageref at gettype[#1][#2][#3]#4\@nil#5{\def#5{#1}}%
+\def\cpageref at getcounter#1#2{%
+ \cpageref at getref{#1}{\@tempa}%
+ \expandafter\@cpageref at getcounter\@tempa\@nil#2}%
+\def\@cpageref at getcounter{\@ifnextchar[%]
+ \@@cpageref at getcounter{\@@cpageref at getcounter[][][]}}%
+\def\@@cpageref at getcounter[#1][#2][#3]#4\@nil#5{\def#5{#2}}%
+\def\cpageref at getprefix#1#2{%
+ \cpageref at getref{#1}{\@tempa}%
+ \expandafter\@cpageref at getprefix\@tempa\@nil#2}%
+\def\@cpageref at getprefix{\@ifnextchar[%]
+ \@@cpageref at getprefix{\@@cpageref at getprefix[][][]}}%
+\def\@@cpageref at getprefix[#1][#2][#3]#4\@nil#5{\def#5{#3}}%
\def\cref at override@label at type[#1][#2][#3]#4\@nil#5{[#5][#2][#3]#4}%
\def\cref at constructprefix#1#2{%
\cref at stack@init{\@tempstack}%
@@ -373,50 +425,60 @@
\def\@tempa{\@nil}%
\ifx#1\@tempa\@cref at stackfullfalse%
\else\@cref at stackfulltrue\fi}%
+\def\cref at stack@dropempty#1{%
+ \edef\@tempa{\cref at stack@top{#1}}%
+ \@whilesw\ifx\@tempa\@empty\fi{%
+ \cref at stack@pop{#1}%
+ \cref at isstackempty{#1}%
+ \if at cref@stackempty%
+ \let\@tempa\relax%
+ \else%
+ \edef\@tempa{\cref at stack@top{#1}}%
+ \fi}}%
\def\cref at stack@sort#1#2{%
\begingroup%
\cref at stack@init{\@sortstack}%
- \edef\@element{\cref at stack@top{#1}}%
+ \edef\@element{\cref at stack@top{#2}}%
\expandafter\cref at stack@push\expandafter{\@element}{\@sortstack}%
- \cref at stack@pop{#1}%
- \cref at isstackfull{#1}%
+ \cref at stack@pop{#2}%
+ \cref at isstackfull{#2}%
\if at cref@stackfull%
- \edef\@tempa{\cref at stack@top{#1}}%
+ \edef\@tempa{\cref at stack@top{#2}}%
\@whilesw\ifx\@tempa\@empty\fi{%
\cref at stack@pull{}{\@sortstack}%
- \cref at stack@pop{#1}%
- \cref at isstackempty{#1}%
+ \cref at stack@pop{#2}%
+ \cref at isstackempty{#2}%
\if at cref@stackempty%
\let\@tempa\relax%
\else%
- \edef\@tempa{\cref at stack@top{#1}}%
+ \edef\@tempa{\cref at stack@top{#2}}%
\fi}%
\fi%
- \cref at isstackfull{#1}%
+ \cref at isstackfull{#2}%
\@whilesw\if at cref@stackfull\fi{%
- \edef\@element{\cref at stack@top{#1}}%
- \cref at stack@pop{#1}%
+ \edef\@element{\cref at stack@top{#2}}%
+ \cref at stack@pop{#2}%
\def\@empties{}%
- \cref at isstackfull{#1}%
+ \cref at isstackfull{#2}%
\if at cref@stackfull%
- \edef\@tempa{\cref at stack@top{#1}}%
+ \edef\@tempa{\cref at stack@top{#2}}%
\@whilesw\ifx\@tempa\@empty\fi{%
\edef\@empties{\@empties,}%
- \cref at stack@pop{#1}%
- \cref at isstackempty{#1}%
+ \cref at stack@pop{#2}%
+ \cref at isstackempty{#2}%
\if at cref@stackempty%
\let\@tempa\relax%
\else%
- \edef\@tempa{\cref at stack@top{#1}}%
+ \edef\@tempa{\cref at stack@top{#2}}%
\fi}%
\fi%
\edef\@tempa{{\expandafter\noexpand\@element}%
{\expandafter\noexpand\@empties}%
- {\noexpand\@sortstack}{\noexpand#2}}%
+ {\noexpand\@sortstack}{\noexpand#1}}%
\expandafter\cref at stack@insert\@tempa%
- \cref at isstackfull{#1}}%
+ \cref at isstackfull{#2}}%
\expandafter\endgroup\expandafter%
- \def\expandafter#1\expandafter{\@sortstack}}%
+ \def\expandafter#2\expandafter{\@sortstack}}%
\def\cref at stack@insert#1#2#3#4{%
\let\@cmp#4%
\@cref at stack@insert{}{#1}{#2}{#3}%
@@ -440,28 +502,85 @@
\fi%
\fi%
\cref at iterate}%
+\newif\if at cref@sametype%
+\def\cref at isrefsametype#1#2{%
+ \begingroup%
+ \expandafter\ifx\csname r@#1 at cref\endcsname\relax%
+ \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
+ \def\@after{\@cref at sametypetrue}%
+ \else%
+ \def\@after{\@cref at sametypefalse}%
+ \fi%
+ \else%
+ \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
+ \def\@after{\@cref at sametypefalse}%
+ \else%
+ \cref at gettype{#1}{\@type}%
+ \expandafter\expandafter\expandafter\def%
+ \expandafter\expandafter\expandafter\@formata%
+ \expandafter\expandafter\expandafter{%
+ \csname cref@\@type @format\endcsname%
+ {\@dummya}{\@dummyb}{\@dummyc}}%
+ \cref at gettype{#2}{\@type}%
+ \expandafter\expandafter\expandafter\def%
+ \expandafter\expandafter\expandafter\@formatb%
+ \expandafter\expandafter\expandafter{%
+ \csname cref@\@type @format\endcsname%
+ {\@dummya}{\@dummyb}{\@dummyc}}%
+ \ifx\@formata\@formatb%
+ \def\@after{\@cref at sametypetrue}%
+ \else%
+ \def\@after{\@cref at sametypefalse}%
+ \fi%
+ \fi%
+ \fi%
+ \expandafter\endgroup\@after}%
+\def\cpageref at isrefsametype#1#2{%
+ \begingroup%
+ \expandafter\ifx\csname r@#1 at cref\endcsname\relax%
+ \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
+ \def\@after{\@cref at sametypetrue}%
+ \else%
+ \def\@after{\@cref at sametypefalse}%
+ \fi%
+ \else%
+ \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
+ \def\@after{\@cref at sametypefalse}%
+ \else%
+ \cpageref at gettype{#1}{\@typea}%
+ \cpageref at gettype{#2}{\@typeb}%
+ \ifx\@typea\@typeb%
+ \def\@after{\@cref at sametypetrue}%
+ \else%
+ \def\@after{\@cref at sametypefalse}%
+ \fi%
+ \fi%
+ \fi%
+ \expandafter\endgroup\@after}%
\def\cref at counter@first#1#2\@nil{#1}%
\def\cref at counter@rest#1#2\@nil{#2}%
-\def\cref at countercmp#1#2#3{%
+\def\cref at countercmp{\@cref at countercmp{cref}}%
+\def\cpageref at countercmp{\@cref at countercmp{cpageref}}%
+\def\@cref at countercmp#1#2#3#4{%
\begingroup%
- \def\@tempa{#1}%
+ \def\@tempa{#2}%
\ifx\@tempa\@empty%
\def\cref at result{1}%
\else%
- \def\@tempa{#2}%
+ \def\@tempa{#3}%
\ifx\@tempa\@empty%
\def\cref at result{2}%
\else%
- \expandafter\ifx\csname r@#1 at cref\endcsname\relax%
+ \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
\def\cref at result{2}%
\else%
- \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
+ \expandafter\ifx\csname r@#3 at cref\endcsname\relax%
\def\cref at result{1}%
\else%
- \cref at getcounter{#1}{\@countera}%
- \cref at getprefix{#1}{\@prefixa}%
- \cref at getcounter{#2}{\@counterb}%
- \cref at getprefix{#2}{\@prefixb}%
+ \csname #1 at getcounter\endcsname{#2}{\@countera}%
+ \csname #1 at getprefix\endcsname{#2}{\@prefixa}%
+ \csname #1 at getcounter\endcsname{#3}{\@counterb}%
+ \csname #1 at getprefix\endcsname{#3}{\@prefixb}%
\cref at stack@init{\@countstacka}%
\expandafter\cref at stack@push\expandafter%
{\@countera}{\@countstacka}%
@@ -476,14 +595,14 @@
\expandafter\cref at stack@push\expandafter%
{\@prefixb}{\@countstackb}%
\fi%
- \@cref at countercmp%
+ \@@cref at countercmp%
\fi%
\fi%
\fi%
\fi%
\expandafter\endgroup\expandafter%
- \chardef\expandafter#3\expandafter=\cref at result\relax}%
-\def\@cref at countercmp{%
+ \chardef\expandafter#4\expandafter=\cref at result\relax}%
+\def\@@cref at countercmp{%
\let\@iterate\relax%
\cref at isstackempty{\@countstacka}%
\if at cref@stackempty%
@@ -508,45 +627,12 @@
\ifnum\@tempa>\@tempb\relax%
\def\cref at result{2}%
\else%
- \def\@iterate{\@cref at countercmp}%
+ \def\@iterate{\@@cref at countercmp}%
\fi%
\fi%
\fi%
\fi%
\@iterate}%
-\def\cref at pagecmp#1#2#3{%
- \begingroup%
- \def\@tempa{#1}%
- \ifx\@tempa\@empty%
- \def\cref at result{1}%
- \else%
- \def\@tempa{#2}%
- \ifx\@tempa\@empty%
- \def\cref at result{2}%
- \else%
- \expandafter\ifx\csname r@#1 at cref\endcsname\relax%
- \def\cref at result{2}%
- \else%
- \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
- \def\cref at result{1}%
- \else%
- \cref at getpageref{#1}{\@tempa}%
- \cref at getpageref{#2}{\@tempb}%
- \ifnum\@tempa<\@tempb\relax%
- \def\cref at result{1}\relax%
- \else%
- \ifnum\@tempa>\@tempb\relax%
- \def\cref at result{2}\relax%
- \else%
- \def\cref at result{0}\relax%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \expandafter\endgroup\expandafter%
- \chardef\expandafter#3\expandafter=\cref at result\relax}%
\newif\if at cref@inresetlist%
\def\cref at isinresetlist#1#2{%
\begingroup%
@@ -578,26 +664,20 @@
\@next}%
\def\cref at resetby#1#2{%
\let#2\relax%
- \def\@tempa{#1}%
- \def\@tempb{subfigure}%
- \ifx\@tempa\@tempb%
+ \cref at ifstreq{#1}{subfigure}{%
\cref at isinresetlist{#1}{figure}%
\if at cref@inresetlist%
\def#2{figure}%
\fi%
- \fi%
- \def\@tempa{#1}%
- \def\@tempb{subtable}%
- \ifx\@tempa\@tempb%
+ }{}%
+ \cref at ifstreq{#1}{subtable}{%
\cref at isinresetlist{#1}{table}%
\if at cref@inresetlist%
\def#2{table}%
\fi%
- \fi%
+ }{}%
\@ifundefined{cl at parentequation}{}{%
- \def\@tempa{#1}%
- \def\@tempb{equation}%
- \ifx\@tempa\@tempb%
+ \cref at ifstreq{#1}{equation}{%
\cref at isinresetlist{#1}{parentequation}%
\if at cref@inresetlist%
\expandafter\ifnum\c at parentequation=0\else%
@@ -604,53 +684,18 @@
\def#2{parentequation}%
\fi%
\fi%
- \fi}%
- \def\@tempa{#1}%
- \def\@tempb{enumii}%
- \ifx\@tempa\@tempb%
- \def#2{enum}%
- \fi%
- \def\@tempb{enumiii}%
- \ifx\@tempa\@tempb%
- \def#2{enum}%
- \fi%
- \def\@tempb{enumiv}%
- \ifx\@tempa\@tempb%
- \def#2{enum}%
- \fi%
- \def\@tempb{enumv}%
- \ifx\@tempa\@tempb%
- \def#2{enum}%
- \fi%
- \def\@tempb{enum}%
- \ifx#2\@tempb%
- \cref at isinresetlist{#1}{enumiv}%
- \if at cref@inresetlist%
- \def#2{enumiv}%
- \else%
- \cref at isinresetlist{#1}{enumiii}%
- \if at cref@inresetlist%
+ }{}}%
+ \cref at ifstreq{#1}{enumii}{%
+ \def#2{enumi}%
+ }{%
+ \cref at ifstreq{#1}{enumiii}{%
+ \def#2{enumii}%
+ }{%
+ \cref at ifstreq{#1}{enumiv}{%
\def#2{enumiii}%
- \else%
- \cref at isinresetlist{#1}{enumii}%
- \if at cref@inresetlist%
- \def#2{enumii}%
- \else%
- \cref at isinresetlist{#1}{enumi}%
- \if at cref@inresetlist%
- \def#2{enumi}%
- \else%
- \cref at isinresetlist{#1}{part}%
- \if at cref@inresetlist%
- \def#2{part}%
- \else%
- \let#2\relax%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
+ }{}%
+ }%
+ }%
\ifx#2\relax%
\cref at isinresetlist{#1}{table}%
\if at cref@inresetlist%
@@ -685,212 +730,116 @@
\fi%
\fi}%
\newif\if at cref@refconsecutive%
-\def\cref at isrefconsecutive#1#2{%
+\def\cref at isrefconsecutive{\@cref at isrefconsecutive{cref}}%
+\def\cpageref at isrefconsecutive{\@cref at isrefconsecutive{cpageref}}%
+\def\@cref at isrefconsecutive#1#2#3{%
\begingroup%
- \countdef\refa at counter=0%
- \countdef\refb at counter=1%
- \cref at getcounter{#1}{\cref at result}%
- \refa at counter=\cref at result%
- \cref at getcounter{#2}{\cref at result}%
- \refb at counter=\cref at result%
- \cref at getprefix{#1}{\refa at prefix}%
- \cref at getprefix{#2}{\refb at prefix}%
- \def\@after{\@cref at refconsecutivefalse}%
- \ifx\refa at prefix\refb at prefix%
- \ifnum\refa at counter=\refb at counter\relax%
- \def\@after{\@cref at refconsecutivetrue}%
- \else%
- \advance\refa at counter 1\relax%
+ \def\@after{\@cref at refconsecutivefalse}%
+ \expandafter\ifx\csname r@#2 at cref\endcsname\relax\else%
+ \expandafter\ifx\csname r@#3 at cref\endcsname\relax\else%
+ \countdef\refa at counter=0%
+ \countdef\refb at counter=1%
+ \csname #1 at getcounter\endcsname{#2}{\cref at result}%
+ \refa at counter=\cref at result%
+ \csname #1 at getcounter\endcsname{#3}{\cref at result}%
+ \refb at counter=\cref at result%
+ \csname #1 at getprefix\endcsname{#2}{\refa at prefix}%
+ \csname #1 at getprefix\endcsname{#3}{\refb at prefix}%
+ \ifx\refa at prefix\refb at prefix%
\ifnum\refa at counter=\refb at counter\relax%
\def\@after{\@cref at refconsecutivetrue}%
+ \else%
+ \advance\refa at counter 1\relax%
+ \ifnum\refa at counter=\refb at counter\relax%
+ \def\@after{\@cref at refconsecutivetrue}%
+ \fi%
\fi%
\fi%
\fi%
- \expandafter\endgroup\@after}%
-\def\cref at ispagerefconsecutive#1#2{%
- \begingroup%
- \countdef\refa at counter=0%
- \countdef\refb at counter=1%
- \cref at getpageref{#1}{\cref at result}%
- \refa at counter=\cref at result%
- \cref at getpageref{#2}{\cref at result}%
- \refb at counter=\cref at result%
- \def\@after{\@cref at refconsecutivefalse}%
- \ifnum\refa at counter=\refb at counter\relax%
- \def\@after{\@cref at refconsecutivetrue}%
- \else%
- \advance\refa at counter 1\relax%
- \ifnum\refa at counter=\refb at counter\relax%
- \def\@after{\@cref at refconsecutivetrue}%
- \fi%
\fi%
\expandafter\endgroup\@after}%
-\def\cref at processgroup#1#2{%
- \edef\@nextref{\cref at stack@top{#1}}%
- \expandafter\ifx\csname r@\@nextref @cref\endcsname\relax%
- \def\@grouptype{\@undefined}%
- \def\@groupformat{\@undefined}%
- \else%
- \expandafter\cref at gettype\expandafter{\@nextref}{\@grouptype}%
- \expandafter\expandafter\expandafter\def%
- \expandafter\expandafter\expandafter\@groupformat%
- \expandafter\expandafter\expandafter{%
- \csname cref@\@grouptype @format\endcsname%
- {\@dummya}{\@dummyb}{\@dummyc}}%
- \fi%
- \let\@nexttype\@grouptype%
- \let\@nextformat\@groupformat%
- \@whilesw\ifx\@nextformat\@groupformat\fi{%
- \expandafter\cref at stack@pull\expandafter{\@nextref}{#2}%
- \cref at stack@pop{#1}%
- \cref at isstackempty{#1}%
+\def\cref at processgroup#1#2#3{%
+ \cref at stack@dropempty{#2}%
+ \edef\@firstref{\cref at stack@top{#2}}%
+ \let\@nextref\@firstref%
+ \cref at isrefsametypetrue%
+ \@whilesw\if at cref@sametype\fi{%
+ \expandafter\cref at stack@pull\expandafter{\@nextref}{#3}%
+ \cref at stack@pop{#2}%
+ \cref at isstackempty{#2}%
\if at cref@stackempty%
- \let\@nexttype\relax%
- \let\@nextformat\relax%
+ \@cref at sametypefalse%
\else%
- \edef\@nextref{\cref at stack@top{#1}}%
+ \edef\@nextref{\cref at stack@top{#2}}%
\ifx\@nextref\@empty%
- \let\@nexttype\@grouptype%
- \let\@nextforamt\@groupformat%
+ \@cref at sametypetrue%
\else%
- \expandafter\ifx\csname r@\@nextref @cref\endcsname\relax%
- \def\@nexttype{\@undefined}%
- \def\@nextformat{\@undefined}%
- \else%
- \expandafter\cref at gettype\expandafter%
- {\@nextref}{\@nexttype}%
- \def\@tempa{\@undefined}%
- \ifx\@nexttype\@tempa%
- \def\@nextformat{\@undefined}%
- \else%
- \expandafter\expandafter\expandafter\def%
- \expandafter\expandafter\expandafter\@nextformat%
- \expandafter\expandafter\expandafter{%
- \csname cref@\@nexttype @format\endcsname%
- {\@dummya}{\@dummyb}{\@dummyc}}%
- \fi%
- \fi%
+ \csname #1 at isrefsametype\endcsname{\@firstref}{\@nextref}%
\fi%
- \fi}%
-}%
-\def\cref at processgroupall#1#2{%
+ \fi}}%
+\def\cref at processgroupall#1#2#3{%
\cref at stack@init{\@tempstack}%
- \edef\@nextref{\cref at stack@top{#1}}%
- \expandafter\ifx\csname r@\@nextref @cref\endcsname\relax%
- \def\@grouptype{\@undefined}%
- \def\@groupformat{\@undefined}%
- \else%
- \expandafter\cref at gettype\expandafter{\@nextref}{\@grouptype}%
- \expandafter\expandafter\expandafter\def%
- \expandafter\expandafter\expandafter\@groupformat%
- \expandafter\expandafter\expandafter{%
- \csname cref@\@grouptype @format\endcsname%
- {\@dummya}{\@dummyb}{\@dummyc}}%
- \fi%
- \let\@lasttype\@grouptype%
- \let\@lastformat\@groupformat%
- \cref at isstackfull{#1}%
+ \cref at stack@dropempty{#2}%
+ \edef\@firstref{\cref at stack@top{#2}}%
+ \cref at isstackfull{#2}%
\@whilesw\if at cref@stackfull\fi{%
- \edef\@nextref{\cref at stack@top{#1}}%
+ \edef\@nextref{\cref at stack@top{#2}}%
\ifx\@nextref\@empty%
- \ifx\@lastformat\@groupformat%
- \let\@nexttype\@grouptype%
- \let\@nextformat\@groupformat%
- \else%
- \let\@nexttype\relax%
- \let\@nextformat\relax%
- \fi%
+ \expandafter\cref at stack@pull\expandafter{\@nextref}{#3}%
\else%
- \expandafter\ifx\csname r@\@nextref @cref\endcsname\relax%
- \def\@nexttype{\@undefined}%
- \def\@nextformat{\@undefined}%
+ \edef\@tempa{{\@firstref}{\@nextref}}%
+ \csname #1 at isrefsametype\expandafter\endcsname\@tempa%
+ \if at cref@sametype%
+ \expandafter\cref at stack@pull\expandafter{\@nextref}{#3}%
\else%
- \expandafter\cref at gettype\expandafter%
- {\@nextref}{\@nexttype}%
- \def\@tempa{\@undefined}%
- \ifx\@nexttype\@tempa%
- \def\@nextformat{\@undefined}%
- \else%
- \expandafter\expandafter\expandafter\def%
- \expandafter\expandafter\expandafter\@nextformat%
- \expandafter\expandafter\expandafter{%
- \csname cref@\@nexttype @format\endcsname%
- {\@dummya}{\@dummyb}{\@dummyc}}%
- \fi%
+ \expandafter\cref at stack@pull\expandafter{\@nextref}{\@tempstack}%
\fi%
\fi%
- \ifx\@nextformat\@groupformat%
- \expandafter\cref at stack@pull\expandafter{\@nextref}{#2}%
- \else%
- \expandafter\cref at stack@pull\expandafter{\@nextref}{\@tempstack}%
- \fi%
- \cref at stack@pop{#1}%
- \let\@lasttype\@nexttype%
- \let\@lastformat\@nextformat%
- \cref at isstackfull{#1}}%
- \let#1\@tempstack}%
+ \cref at stack@pop{#2}%
+ \cref at isstackfull{#2}}%
+ \let#2\@tempstack}%
\def\cref at processconsecutive#1#2#3#4#5{%
- #4=0%
- \edef\@nextref{\cref at stack@top{#1}}%
- \cref at stack@pop{#1}%
- \cref at isstackempty{#1}%
- \if at cref@stackempty%
- \edef#2{\@nextref}%
- \let#3\relax%
- #4=1\relax%
- \else%
- \edef#2{\@nextref}%
- \let#3\relax%
- \edef\@nextref{\cref at stack@top{#1}}%
- #4=1\relax%
- \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
+ \let#4\relax%
+ #5=1\relax%
+ \edef\@nextref{\cref at stack@top{#2}}%
+ \edef#3{\@nextref}%
+ \cref at stack@pop{#2}%
+ \cref at isstackfull{#2}%
+ \if at cref@stackfull%
+ \edef\@nextref{\cref at stack@top{#2}}%
+ \expandafter\ifx\csname r@#3 at cref\endcsname\relax%
\@cref at refconsecutivefalse%
\else%
\ifx\@nextref\@empty%
\@cref at refconsecutivefalse%
- \@whilesw\ifx\@nextref\@empty\fi{%
- \cref at stack@pop{#1}%
- \cref at isstackempty{#1}%
- \if at cref@stackempty%
- \let\@nextref\relax%
- \else%
- \edef\@nextref{\cref at stack@top{#1}}%
- \fi}%
+ \cref at stack@dropempty{#2}%
\else%
- \expandafter\ifx\csname r@\@nextref @cref\endcsname\relax%
- \@cref at refconsecutivefalse%
- \else%
- \edef\@tempa{{#2}{\@nextref}}%
- \expandafter#5\@tempa%
- \fi%
+ \edef\@tempa{{#3}{\@nextref}}%
+ \csname #1 at isrefconsecutive\expandafter\endcsname\@tempa%
\fi%
\fi%
\@whilesw\if at cref@refconsecutive\fi{%
- \advance#4 1%
- \let#3\@nextref%
- \cref at stack@pop{#1}%
- \cref at isstackempty{#1}%
+ \advance#5 1\relax%
+ \let#4\@nextref%
+ \cref at stack@pop{#2}%
+ \cref at isstackempty{#2}%
\if at cref@stackempty%
\@cref at refconsecutivefalse%
\else%
- \edef\@nextref{\cref at stack@top{#1}}%
+ \edef\@nextref{\cref at stack@top{#2}}%
\ifx\@nextref\@empty%
\@cref at refconsecutivefalse%
\@whilesw\ifx\@nextref\@empty\fi{%
- \cref at stack@pop{#1}%
- \cref at isstackempty{#1}%
+ \cref at stack@pop{#2}%
+ \cref at isstackempty{#2}%
\if at cref@stackempty%
\let\@nextref\relax%
\else%
- \edef\@nextref{\cref at stack@top{#1}}%
+ \edef\@nextref{\cref at stack@top{#2}}%
\fi}%
\else%
- \expandafter\ifx\csname r@\@nextref @cref\endcsname\relax%
- \@cref at refconsecutivefalse%
- \else%
- \edef\@tempa{{#3}{\@nextref}}%
- \expandafter#5\@tempa%
- \fi%
+ \edef\@tempa{{#4}{\@nextref}}%
+ \csname #1 at isrefconsecutive\expandafter\endcsname\@tempa%
\fi%
\fi}%
\fi}%
@@ -901,7 +850,7 @@
\let\cref at acc\@empty%
\@crefstripprefix%
\cref at result%
- \endgroup}
+ \endgroup}%
\def\@crefstripprefix{%
\let\@iterate\relax%
\def\accum at flag{0}%
@@ -939,7 +888,7 @@
\fi%
\edef\cref at result{\cref at acc\@tempb\@toksb}%
\fi%
- \@iterate}
+ \@iterate}%
\def\cref at poptok#1#2{%
\expandafter\expandafter\expandafter\def%
\expandafter\expandafter\expandafter#2%
@@ -948,13 +897,13 @@
\expandafter\expandafter\expandafter\def%
\expandafter\expandafter\expandafter#1%
\expandafter\expandafter\expandafter{%
- \expandafter\@cref at poptok#1\@nil}}
-\def\@cref at firsttok#1#2\@nil{#1}
-\def\@cref at poptok#1#2\@nil{#2}
+ \expandafter\@cref at poptok#1\@nil}}%
+\def\@cref at firsttok#1#2\@nil{#1}%
+\def\@cref at poptok#1#2\@nil{#2}%
\DeclareRobustCommand{\cref}[1]{\@cref{cref}{#1}}%
\DeclareRobustCommand{\Cref}[1]{\@cref{Cref}{#1}}%
-\DeclareRobustCommand{\crefrange}[2]{\@setcrefrange{#1}{#2}{cref}{}}%
-\DeclareRobustCommand{\Crefrange}[2]{\@setcrefrange{#1}{#2}{Cref}{}}%
+\DeclareRobustCommand{\crefrange}[2]{\@setcrefrange{#1}{#2}{}}%
+\DeclareRobustCommand{\Crefrange}[2]{\@setCrefrange{#1}{#2}{}}%
\@ifpackageloaded{hyperref}{\newif\if at crefstarred}{%
\@ifpackageloaded{varioref}{\newif\if at crefstarred}{}}%
\let\if at crefstarred\iffalse%
@@ -961,11 +910,18 @@
\def\@cref#1#2{%
\leavevmode%
\begingroup%
+ \def\cref at variant{#1}%
+ \def\@tempa{\in@{page}}%
+ \expandafter\@tempa\expandafter{\cref at variant}%
+ \ifin@%
+ \def\cref at variant@get{cpageref}%
+ \else%
+ \def\cref at variant@get{cref}%
+ \fi%
\countdef\count at consecutive=0%
\countdef\count at group=1%
\count at group=1%
- \def\cref at variant{#1}%
- \newif\if at secondref%
+ \countdef\count at subgroup=2%
\cref at stack@init{\@refstack}%
\edef\@tempa{#2}%
\expandafter\cref at stack@push\expandafter{\@tempa}{\@refstack}%
@@ -973,13 +929,16 @@
\@whilesw\if at cref@stackfull\fi{%
\cref at stack@init{\@refsubstack}%
\if at cref@sort%
- \cref at processgroupall{\@refstack}{\@refsubstack}%
- \cref at stack@sort{\@refsubstack}{\cref at countercmp}%
+ \expandafter\cref at processgroupall\expandafter%
+ {\cref at variant@get}{\@refstack}{\@refsubstack}%
+ \expandafter\cref at stack@sort\expandafter%
+ {\csname\cref at variant@get @countercmp\endcsname}{\@refsubstack}%
\else%
- \cref at processgroup{\@refstack}{\@refsubstack}%
+ \expandafter\cref at processgroup\expandafter%
+ {\cref at variant@get}{\@refstack}{\@refsubstack}%
\fi%
\ifnum\count at group=1\relax%
- \advance\count at group 1%
+ \advance\count at group 1\relax%
\else%
\cref at isstackfull{\@refstack}%
\if at cref@stackfull%
@@ -991,103 +950,67 @@
\@setcref at lastgroupconjunction%
\fi%
\fi%
- \advance\count at group 1%
- \def\cref at variant{cref}%
+ \advance\count at group 1\relax%
+ \lowercase{\def\cref at variant{#1}}%
\fi%
- \if at cref@compress%
- \cref at processconsecutive%
- {\@refsubstack}{\@beginref}{\@endref}{\count at consecutive}%
- {\cref at isrefconsecutive}%
- \else%
- \edef\@beginref{\cref at stack@top{\@refsubstack}}%
- \cref at stack@pop{\@refsubstack}%
- \@whilesw\ifx\@beginref\@empty\fi{%
- \cref at stack@pop{\@refsubstack}%
- \cref at isstackempty{\@refsubstack}%
- \if at cref@stackempty%
- \let\@beginref\relax%
- \else%
- \edef\@beginref{\cref at stack@top{\@refsubstack}}%
- \fi}%
- \let\@endref\relax%
- \count at consecutive=1\relax%
- \fi%
- \ifnum\count at consecutive=1\relax%
- \cref at isstackfull{\@refsubstack}%
- \if at cref@stackfull%
- \expandafter\@setcref%
- \expandafter{\@beginref}{\cref at variant}{@first}%
- \else%
- \expandafter\@setcref%
- \expandafter{\@beginref}{\cref at variant}{}%
- \fi%
- \else%
- \ifnum\count at consecutive=2\relax%
- \expandafter\@setcref%
- \expandafter{\@beginref}{\cref at variant}{@first}%
- \expandafter\cref at stack@push\expandafter%
- {\@endref,}{\@refsubstack}%
- \else%
- \edef\@tempa{{\@beginref}{\@endref}}%
- \if at cref@stackempty%
- \expandafter\@setcrefrange\@tempa{\cref at variant}{}%
- \else%
- \expandafter\@setcrefrange\@tempa{\cref at variant}{@first}%
- \fi%
- \fi%
- \fi%
- \@secondreftrue%
+ \count at subgroup=1%
\cref at isstackfull{\@refsubstack}%
\@whilesw\if at cref@stackfull\fi{%
\if at cref@compress%
- \cref at processconsecutive%
+ \expandafter\cref at processconsecutive\expandafter{\cref at variant@get}%
{\@refsubstack}{\@beginref}{\@endref}{\count at consecutive}%
- {\cref at isrefconsecutive}%
\else%
+ \cref at stack@dropempty{\@refsubstack}%
\edef\@beginref{\cref at stack@top{\@refsubstack}}%
\cref at stack@pop{\@refsubstack}%
- \@whilesw\ifx\@beginref\@empty\fi{%
- \cref at stack@pop{\@refsubstack}%
- \cref at isstackempty{\@refsubstack}%
- \if at cref@stackempty%
- \let\@beginref\relax%
- \else%
- \edef\@beginref{\cref at stack@top{\@refsubstack}}%
- \fi}%
\let\@endref\relax%
\count at consecutive=1\relax%
\fi%
- \cref at isstackempty{\@refsubstack}%
- \if at cref@stackempty%
- \if at secondref%
- \def\@pos{@second}%
+ \ifnum\count at consecutive>1\relax%
+ \csname\cref at variant@get @getlabel\endcsname{\@beginref}{\@labela}%
+ \csname\cref at variant@get @getlabel\endcsname{\@endref}{\@labelb}%
+ \ifx\@labela\@labelb%
+ \let\@endref\relax%
+ \count at consecutive=1\relax%
+ \fi%
+ \fi%
+ \ifnum\count at consecutive=2\relax%
+ \expandafter\cref at stack@push\expandafter{\@endref,}{\@refsubstack}%
+ \let\@endref\relax%
+ \count at consecutive=1\relax%
+ \fi%
+ \cref at isstackfull{\@refsubstack}%
+ \if at cref@stackfull%
+ \ifnum\count at subgroup=1\relax%
+ \def\@pos{@first}%
\else%
- \def\@pos{@last}%
+ \def\@pos{@middle}%
\fi%
\else%
- \def\@pos{@middle}%
+ \ifnum\count at subgroup=1\relax%
+ \def\@pos{}%
+ \else%
+ \ifnum\count at subgroup=2\relax%
+ \def\@pos{@second}%
+ \else%
+ \def\@pos{@last}%
+ \fi%
+ \fi%
\fi%
\ifnum\count at consecutive=1\relax%
- \edef\@tempa{{\@beginref}{cref}{\@pos}}%
- \expandafter\@setcref\@tempa%
+ \edef\@tempa{{\@beginref}{\@pos}}%
+ \csname @set\cref at variant\expandafter\endcsname\@tempa%
\else%
- \ifnum\count at consecutive=2\relax%
- \expandafter\@setcref\expandafter%
- {\@beginref}{cref}{@middle}%
- \expandafter\cref at stack@push\expandafter%
- {\@endref}{\@refsubstack}%
- \else%
- \edef\@tempa{{\@beginref}{\@endref}{cref}{\@pos}}%
- \expandafter\@setcrefrange\@tempa%
- \fi%
+ \edef\@tempa{{\@beginref}{\@endref}{\@pos}}%
+ \csname @set\cref at variant range\expandafter\endcsname\@tempa%
\fi%
- \@secondreffalse%
+ \advance\count at subgroup 1\relax%
\cref at isstackfull{\@refsubstack}%
}% end loop over reference substack
\cref at isstackfull{\@refstack}%
\if at cref@stackfull%
- \def\@tempa{#1}\def\@tempb{labelcref}%
- \ifx\@tempa\@tempb\relax%
+ \def\@tempa{labelcref}%
+ \ifx\cref at variant\@tempa%
\protect\G at refundefinedtrue%
\nfss at text{\reset at font\bfseries\space ??}%
\@latex at warning{References in label reference on page \thepage
@@ -1097,80 +1020,94 @@
\fi%
}% end loop over main reference stack
\endgroup}%
-\def\@setcref#1#2#3{%
- \expandafter\ifx\csname r@#1 at cref\endcsname\relax%
+\def\@setcref{\@@setcref{cref}}%
+\def\@setCref{\@@setcref{Cref}}%
+\def\@setlabelcref{\@@setcref{labelcref}}%
+\def\@@setcref#1#2#3{%
+ \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
\protect\G at refundefinedtrue%
\nfss at text{\reset at font\bfseries ??}%
- \@latex at warning{Reference `#1' on page \thepage \space undefined}%
+ \@latex at warning{Reference `#2' on page \thepage \space undefined}%
\else%
- \cref at gettype{#1}{\@temptype}% puts label type in \@temptype
- \cref at getlabel{#1}{\@templabel}% puts label in \@templabel
- \expandafter\ifx\csname #2@\@temptype @format#3\endcsname\relax%
- \edef\@tempa{#2}\def\@tempb{labelcref}%
+ \cref at gettype{#2}{\@temptype}% puts label type in \@temptype
+ \cref at getlabel{#2}{\@templabel}% puts label in \@templabel
+ \expandafter\ifx\csname #1@\@temptype @format#3\endcsname\relax%
+ \edef\@tempa{#1}\def\@tempb{labelcref}%
\ifx\@tempa\@tempb\relax%
- \expandafter\@@setcref\expandafter%
- {\csname #2 at default@format#3\endcsname}{#1}%
+ \expandafter\@@@setcref\expandafter%
+ {\csname #1 at default@format#3\endcsname}{#2}%
\else%
\protect\G at refundefinedtrue%
\nfss at text{\reset at font\bfseries ??}~\@templabel%
- \@latex at warning{#2 \space reference format for label type
+ \@latex at warning{#1\space reference format for label type
`\@temptype' undefined}%
\fi%
\else%
- \expandafter\@@setcref\expandafter%
- {\csname #2@\@temptype @format#3\endcsname}{#1}%
+ \expandafter\@@@setcref\expandafter%
+ {\csname #1@\@temptype @format#3\endcsname}{#2}%
\fi%
\fi}%
-\def\@@setcref#1#2{\cref at getlabel{#2}{\@templabel}#1{\@templabel}{}{}}%
-\def\@setcrefrange#1#2#3#4{%
+\def\@@@setcref#1#2{\cref at getlabel{#2}{\@templabel}#1{\@templabel}{}{}}%
+\def\@setcrefrange{\@@setcrefrange{cref}}%
+\def\@setCrefrange{\@@setcrefrange{Cref}}%
+\def\@setlabelcrefrange{\@@setcrefrange{labelcref}}%
+\def\@@setcrefrange#1#2#3#4{%
\begingroup%
- \expandafter\ifx\csname r@#1 at cref\endcsname\relax%
+ \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
\protect\G at refundefinedtrue%
- \@latex at warning{Reference `#1' on page \thepage \space%
+ \@latex at warning{Reference `#2' on page \thepage \space%
undefined}%
- \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
+ \expandafter\ifx\csname r@#3 at cref\endcsname\relax%
\nfss at text{\reset at font\bfseries ??}--%
\nfss at text{\reset at font\bfseries ??}%
- \@latex at warning{Reference `#2' on page \thepage \space%
+ \@latex at warning{Reference `#3' on page \thepage \space%
undefined}%
\else%
- \cref at getlabel{#2}{\@labelb}%
+ \cref at getlabel{#3}{\@labelb}%
\nfss at text{\reset at font\bfseries ??}--\@labelb%
\fi%
\else%
- \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
+ \expandafter\ifx\csname r@#3 at cref\endcsname\relax%
\protect\G at refundefinedtrue%
- \cref at getlabel{#1}{\@labela}%
+ \cref at getlabel{#2}{\@labela}%
\@labela--\nfss at text{\reset at font\bfseries ??}%
- \@latex at warning{Reference `#2' on page \thepage %
+ \@latex at warning{Reference `#3' on page \thepage %
\space undefined}%
\else%
- \cref at gettype{#1}{\@typea}%
- \cref at gettype{#2}{\@typeb}%
- \cref at getlabel{#1}{\@labela}%
- \cref at getlabel{#2}{\@labelb}%
- \edef\@formata{\expandafter\noexpand%
- \csname #3range@\@typea @format#4\endcsname}%
- \edef\@formatb{\expandafter\noexpand%
- \csname #3range@\@typeb @format#4\endcsname}%
- \expandafter\ifx\@formata\relax%
- \edef\@tempa{#3}\def\@tempb{labelcref}%
+ \cref at gettype{#2}{\@typea}%
+ \cref at gettype{#3}{\@typeb}%
+ \cref at getlabel{#2}{\@labela}%
+ \cref at getlabel{#3}{\@labelb}%
+ \edef\@format{\expandafter\noexpand%
+ \csname #1range@\@typea @format#4\endcsname}%
+ \expandafter\ifx\@format\relax%
+ \edef\@tempa{#1}\def\@tempb{labelcref}%
\ifx\@tempa\@tempb\relax%
- \expandafter\@@setcrefrange\expandafter%
- {\csname #3range at default@format#4\endcsname}{#1}{#2}%
+ \expandafter\@@@setcrefrange\expandafter%
+ {\csname #1range at default@format#4\endcsname}{#2}{#3}%
\else%
\protect\G at refundefinedtrue%
\nfss at text{\reset at font\bfseries ??}~\@labela--\@labelb%
- \@latex at warning{#3\space reference range format for label
+ \@latex at warning{#1 reference range format for label
type `\@typea' undefined}%
\fi%
\else%
+ \expandafter\expandafter\expandafter\def%
+ \expandafter\expandafter\expandafter\@formata%
+ \expandafter\expandafter\expandafter{%
+ \csname #1range@\@typea @format#4\endcsname%
+ {\@dummya}{\@dummyb}{\@dummyc}{\@dummyd}{\@dummye}{\@dummyf}}%
+ \expandafter\expandafter\expandafter\def%
+ \expandafter\expandafter\expandafter\@formatb%
+ \expandafter\expandafter\expandafter{%
+ \csname #1range@\@typeb @format#4\endcsname%
+ {\@dummya}{\@dummyb}{\@dummyc}{\@dummyd}{\@dummye}{\@dummyf}}%
\ifx\@formata\@formatb%
- \expandafter\@@setcrefrange\expandafter{\@formata}{#1}{#2}%
+ \expandafter\@@@setcrefrange\expandafter{\@format}{#2}{#3}%
\else%
\protect\G at refundefinedtrue%
\nfss at text{\reset at font\bfseries ??}~\@labela--\@labelb%
- \@latex at warning{References `#1' and `#2' in reference range
+ \@latex at warning{References `#2' and `#3' in reference range
on page \thepage \space have different types
`\@typea' and `\@typeb'}%
\fi%
@@ -1178,7 +1115,7 @@
\fi%
\fi%
\endgroup}%
-\def\@@setcrefrange#1#2#3{%
+\def\@@@setcrefrange#1#2#3{%
\cref at getlabel{#2}{\@labela}%
\cref at getlabel{#3}{\@labelb}%
#1{\@labela}{\@labelb}{}{}{}{}}%
@@ -1212,146 +1149,52 @@
}{%
\edef\@tempa{%
\expandafter\noexpand\csname #1@\@tempa @name#3\endcsname}%
- \expandafter\@@setnamecref\expandafter{\@tempa}{#4}%
+ \expandafter\@@@setnamecref\expandafter{\@tempa}{#4}%
}%
\fi}%
-\def\@@setnamecref#1#2{%
+\def\@@@setnamecref#1#2{%
\expandafter\def\expandafter\@tempa\expandafter{#1}%
\expandafter#2\@tempa}%
-\DeclareRobustCommand{\cpageref}[1]{%
- \@cpageref{cref}{#1}{\@setcpageref}{\@setcpagerefrange}}%
-\DeclareRobustCommand{\Cpageref}[1]{%
- \@cpageref{Cref}{#1}{\@setcpageref}{\@setcpagerefrange}}%
+\DeclareRobustCommand{\cpageref}[1]{\@cref{cpageref}{#1}}%
+\DeclareRobustCommand{\Cpageref}[1]{\@cref{Cpageref}{#1}}%
\DeclareRobustCommand{\cpagerefrange}[2]{%
- \@setcpagerefrange{#1}{#2}{cref}{}}%
+ \@@setcpagerefrange{#1}{#2}{cref}{}}%
\DeclareRobustCommand{\Cpagerefrange}[2]{%
- \@setcpagerefrange{#1}{#2}{Cref}{}}%
+ \@@setcpagerefrange{#1}{#2}{Cref}{}}%
\DeclareRobustCommand{\labelcpageref}[1]{%
- \@cpageref{labelcref}{#1}{\@setcpageref}{\@setcpagerefrange}}%
-\def\@cpageref#1#2#3#4{%
- \leavevmode%
- \begingroup%
- \countdef\count at consecutive=0%
- \countdef\count at group=1%
- \countdef\@counta=2%
- \countdef\@countb=3%
- \count at group=0%
- \cref at stack@init{\@refstack}%
- \edef\@tempa{#2}%
- \expandafter\cref at stack@push\expandafter{\@tempa}{\@refstack}%
- \if at cref@sort%
- \cref at stack@sort{\@refstack}{\cref at pagecmp}%
- \fi%
- \cref at isstackfull{\@refstack}%
- \@whilesw\if at cref@stackfull\fi{%
- \if at cref@compress%
- \cref at processconsecutive%
- {\@refstack}{\@beginref}{\@endref}{\count at consecutive}%
- {\cref at ispagerefconsecutive}%
- \else%
- \edef\@beginref{\cref at stack@top{\@refstack}}%
- \cref at stack@pop{\@refstack}%
- \@whilesw\ifx\@beginref\@empty\fi{%
- \cref at stack@pop{\@refstack}%
- \cref at isstackempty{\@refstack}%
- \if at cref@stackempty%
- \let\@beginref\relax%
- \else%
- \edef\@beginref{\cref at stack@top{\@refstack}}%
- \fi}%
- \let\@endref\relax%
- \count at consecutive=1\relax%
- \fi%
- \ifx\@endref\relax\else%
- \expandafter\ifx\csname r@\@beginref @cref\endcsname\relax\else%
- \expandafter\ifx\csname r@\@endref @cref\endcsname\relax\else%
- \cref at getpageref{\@beginref}{\@tempa}%
- \cref at getpageref{\@endref}{\@tempb}%
- \ifx\@tempa\@tempb\relax%
- \count at consecutive=1%
- \let\@endref\relax%
- \else%
- \@counta=\@tempa\relax%
- \@countb=\@tempb\relax%
- \advance\@counta 1\relax%
- \ifnum\@counta=\@countb\relax%
- \count at consecutive=2%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \cref at isstackempty{\@refstack}%
- \if at cref@stackempty%
- \ifcase\count at group\relax%
- \ifnum\count at consecutive=2\relax%
- \def\@pos{@first}%
- \else%
- \def\@pos{}%
- \fi%
- \or%
- \ifnum\count at consecutive=2\relax%
- \def\@pos{@middle}%
- \else%
- \def\@pos{@second}%
- \fi%
- \else%
- \def\@pos{@last}%
- \fi%
- \else%
- \ifnum\count at group=0\relax%
- \def\@pos{@first}%
- \else%
- \def\@pos{@middle}%
- \fi%
- \fi%
- \ifnum\count at consecutive=1\relax%
- \def\@tempa{#3}%
- \edef\@tempb{{\@beginref}{#1}{\@pos}}%
- \expandafter\@tempa\@tempb%
- \else%
- \ifnum\count at consecutive=2\relax%
- \def\@tempa{#3}%
- \edef\@tempb{{\@beginref}{#1}{\@pos}}%
- \expandafter\@tempa\@tempb%
- \expandafter\cref at stack@push\expandafter%
- {\@endref,}{\@refstack}%
- \else%
- \def\@tempa{#4}%
- \edef\@tempb{{\@beginref}{\@endref}{#1}{\@pos}}%
- \expandafter\@tempa\@tempb%
- \fi%
- \fi%
- \advance\count at group 1%
- \cref at isstackfull{\@refstack}%
- }% end loop over reference stack
- \endgroup}%
-\def\@setcpageref#1#2#3{%
- \expandafter\ifx\csname r@#1 at cref\endcsname\relax%
+ \@cref{labelcpageref}{#1}}%
+\def\@setcpageref{\@@setcpageref{cref}}
+\def\@setCpageref{\@@setcpageref{Cref}}
+\def\@setlabelcpageref{\@@setcpageref{labelcref}}
+\def\@@setcpageref#1#2#3{%
+ \expandafter\ifx\csname r@#2 at cref\endcsname\relax%
\protect\G at refundefinedtrue%
\nfss at text{\reset at font\bfseries ??}%
- \@latex at warning{Reference `#1' on page \thepage \space undefined}%
+ \@latex at warning{Reference `#2' on page \thepage \space undefined}%
\else%
- \cref at getpageref{#1}{\@temppage}%
- \expandafter\ifx\csname #2 at page@format#3\endcsname\relax%
- \edef\@tempa{#2}\def\@tempb{labelcref}%
+ \cpageref at getlabel{#2}{\@temppage}%
+ \expandafter\ifx\csname #1 at page@format#3\endcsname\relax%
+ \edef\@tempa{#1}\def\@tempb{labelcref}%
\ifx\@tempa\@tempb\relax%
- \expandafter\@@setcpageref\expandafter%
- {\csname #2 at default@format#3\endcsname}{#1}%
+ \expandafter\@@@setcpageref\expandafter%
+ {\csname #1 at default@format#3\endcsname}{#2}%
\else%
\protect\G at refundefinedtrue%
\nfss at text{\reset at font\bfseries ??}~\@temppage%
- \@latex at warning{#2 \space reference format for
+ \@latex at warning{ #1 reference format for
page references undefined}%
\fi%
\else%
- \expandafter\@@setcpageref\expandafter%
- {\csname #2 at page@format#3\endcsname}{#1}%
+ \expandafter\@@@setcpageref\expandafter%
+ {\csname #1 at page@format#3\endcsname}{#2}%
\fi%
\fi}%
-\def\@@setcpageref#1#2{%
- \cref at getpageref{#2}{\@temppage}#1{\@temppage}{}{}}%
-\def\@setcpagerefrange#1#2#3#4{%
+\def\@@@setcpageref#1#2{%
+ \cpageref at getlabel{#2}{\@temppage}#1{\@temppage}{}{}}%
+\def\@setcpagerefrange#1#2#3{\@@setcpagerefrange{#1}{#2}{cref}{#3}}%
+\def\@setCpagerefrange#1#2#3{\@@setcpagerefrange{#1}{#2}{Cref}{#3}}%
+\def\@setlabelcpagerefrange#1#2#3{\@@setcpagerefrange{#1}{#2}{labelcref}{#3}}%
+\def\@@setcpagerefrange#1#2#3#4{%
\begingroup%
\expandafter\ifx\csname r@#1 at cref\endcsname\relax%
\protect\G at refundefinedtrue%
@@ -1363,41 +1206,41 @@
\@latex at warning{Reference `#2' on page \thepage \space%
undefined}%
\else%
- \cref at getpageref{#2}{\@pageb}%
+ \cpageref at getlabel{#2}{\@pageb}%
\nfss at text{\reset at font\bfseries ??}--\@pageb%
\fi%
\else%
\expandafter\ifx\csname r@#2 at cref\endcsname\relax%
\protect\G at refundefinedtrue%
- \cref at getpageref{#1}{\@pagea}%
+ \cpageref at getlabel{#1}{\@pagea}%
\@pagea--\nfss at text{\reset at font\bfseries ??}%
\@latex at warning{Reference `#2' on page \thepage %
\space undefined}%
\else%
- \cref at getpageref{#1}{\@pagea}%
- \cref at getpageref{#2}{\@pageb}%
+ \cpageref at getlabel{#1}{\@pagea}%
+ \cpageref at getlabel{#2}{\@pageb}%
\edef\@format{\expandafter\noexpand%
- \csname #3range at page@format#4\endcsname}%
+ \csname#3range at page@format#4\endcsname}%
\expandafter\ifx\@format\relax%
\edef\@tempa{#3}\def\@tempb{labelcref}%
\ifx\@tempa\@tempb\relax%
- \expandafter\@@setcpagerefrange\expandafter%
- {\csname #3range at default@format#4\endcsname}{#1}{#2}%
+ \expandafter\@@@setcpagerefrange\expandafter%
+ {\csname#3range at default@format#4\endcsname}{#1}{#2}%
\else%
\protect\G at refundefinedtrue%
\nfss at text{\reset at font\bfseries ??}~\@pagea--\@pageb%
- \@latex at warning{#3\space reference range format for page
+ \@latex at warning{#3 reference range format for page
references undefined}%
\fi%
\else%
- \expandafter\@@setcpagerefrange\expandafter{\@format}{#1}{#2}%
+ \expandafter\@@@setcpagerefrange\expandafter{\@format}{#1}{#2}%
\fi%
\fi%
\fi%
\endgroup}%
-\def\@@setcpagerefrange#1#2#3{%
- \cref at getpageref{#2}{\@pagea}%
- \cref at getpageref{#3}{\@pageb}%
+\def\@@@setcpagerefrange#1#2#3{%
+ \cpageref at getlabel{#2}{\@pagea}%
+ \cpageref at getlabel{#3}{\@pageb}%
#1{\@pagea}{\@pageb}{}{}{}{}}%
\cref at stack@init{\cref at label@types}%
\newcommand\crefdefaultlabelformat[1]{%
@@ -1824,6 +1667,142 @@
\@crefrangedefineformat{#1}%
\@crefdefinemultiformat{#1}%
\@crefrangedefinemultiformat{#1}}%
+\def\@crefcopyformats#1#2{%
+ \@ifundefined{cref@#2 at name}{%
+ \edef\@tempa{\expandafter\noexpand\csname cref@#2 at name\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname cref@#1 at name\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb%
+ \edef\@tempa{\expandafter\noexpand\csname cref@#2 at name@plural\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname cref@#1 at name@plural\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{cref@#2 at format}{%
+ \edef\@tempa{\expandafter\noexpand\csname cref@#2 at format\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname cref@#1 at format\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{crefrange@#2 at format}{%
+ \edef\@tempa{\expandafter\noexpand\csname crefrange@#2 at format\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname crefrange@#1 at format\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{cref@#2 at format@first}{%
+ \edef\@tempa{\expandafter\noexpand\csname cref@#2 at format@first\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname cref@#1 at format@first\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{cref@#2 at format@second}{%
+ \edef\@tempa{\expandafter\noexpand\csname cref@#2 at format@second\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname cref@#1 at format@second\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{cref@#2 at format@middle}{%
+ \edef\@tempa{\expandafter\noexpand\csname cref@#2 at format@middle\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname cref@#1 at format@middle\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{cref@#2 at format@last}{%
+ \edef\@tempa{\expandafter\noexpand\csname cref@#2 at format@last\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname cref@#1 at format@last\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{crefrange@#2 at format@first}{%
+ \edef\@tempa{\expandafter\noexpand\csname crefrange@#2 at format@first\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname crefrange@#1 at format@first\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{crefrange@#2 at format@second}{%
+ \edef\@tempa{\expandafter\noexpand\csname crefrange@#2 at format@second\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname crefrange@#1 at format@second\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{crefrange@#2 at format@middle}{%
+ \edef\@tempa{\expandafter\noexpand\csname crefrange@#2 at format@middle\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname crefrange@#1 at format@middle\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{crefrange@#2 at format@last}{%
+ \edef\@tempa{\expandafter\noexpand\csname crefrange@#2 at format@last\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname crefrange@#1 at format@last\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{Cref@#2 at name}{%
+ \edef\@tempa{\expandafter\noexpand\csname Cref@#2 at name\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname Cref@#1 at name\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb%
+ \edef\@tempa{\expandafter\noexpand\csname Cref@#2 at name@plural\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname Cref@#1 at name@plural\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{Cref@#2 at format}{%
+ \edef\@tempa{\expandafter\noexpand\csname Cref@#2 at format\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname Cref@#1 at format\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{Crefrange@#2 at format}{%
+ \edef\@tempa{\expandafter\noexpand\csname Crefrange@#2 at format\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname Crefrange@#1 at format\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{Cref@#2 at format@first}{%
+ \edef\@tempa{\expandafter\noexpand\csname Cref@#2 at format@first\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname Cref@#1 at format@first\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{Cref@#2 at format@second}{%
+ \edef\@tempa{\expandafter\noexpand\csname Cref@#2 at format@second\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname Cref@#1 at format@second\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{Cref@#2 at format@middle}{%
+ \edef\@tempa{\expandafter\noexpand\csname Cref@#2 at format@middle\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname Cref@#1 at format@middle\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{Cref@#2 at format@last}{%
+ \edef\@tempa{\expandafter\noexpand\csname Cref@#2 at format@last\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname Cref@#1 at format@last\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{Crefrange@#2 at format@first}{%
+ \edef\@tempa{\expandafter\noexpand\csname Crefrange@#2 at format@first\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname Crefrange@#1 at format@first\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{Crefrange@#2 at format@second}{%
+ \edef\@tempa{\expandafter\noexpand\csname Crefrange@#2 at format@second\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname Crefrange@#1 at format@second\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{Crefrange@#2 at format@middle}{%
+ \edef\@tempa{\expandafter\noexpand\csname Crefrange@#2 at format@middle\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname Crefrange@#1 at format@middle\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{Crefrange@#2 at format@last}{%
+ \edef\@tempa{\expandafter\noexpand\csname Crefrange@#2 at format@last\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname Crefrange@#1 at format@last\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{labelcref@#2 at format}{%
+ \edef\@tempa{\expandafter\noexpand\csname labelcref@#2 at format\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname labelcref@#1 at format\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{labelcrefrange@#2 at format}{%
+ \edef\@tempa{\expandafter\noexpand\csname labelcrefrange@#2 at format\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname labelcrefrange@#1 at format\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{labelcref@#2 at format@first}{%
+ \edef\@tempa{\expandafter\noexpand\csname labelcref@#2 at format@first\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname labelcref@#1 at format@first\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{labelcref@#2 at format@second}{%
+ \edef\@tempa{\expandafter\noexpand\csname labelcref@#2 at format@second\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname labelcref@#1 at format@second\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{labelcref@#2 at format@middle}{%
+ \edef\@tempa{\expandafter\noexpand\csname labelcref@#2 at format@middle\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname labelcref@#1 at format@middle\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{labelcref@#2 at format@last}{%
+ \edef\@tempa{\expandafter\noexpand\csname labelcref@#2 at format@last\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname labelcref@#1 at format@last\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{labelcrefrange@#2 at format@first}{%
+ \edef\@tempa{\expandafter\noexpand\csname labelcrefrange@#2 at format@first\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname labelcrefrange@#1 at format@first\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{labelcrefrange@#2 at format@second}{%
+ \edef\@tempa{\expandafter\noexpand\csname labelcrefrange@#2 at format@second\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname labelcrefrange@#1 at format@second\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{labelcrefrange@#2 at format@middle}{%
+ \edef\@tempa{\expandafter\noexpand\csname labelcrefrange@#2 at format@middle\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname labelcrefrange@#1 at format@middle\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+ \@ifundefined{labelcrefrange@#2 at format@last}{%
+ \edef\@tempa{\expandafter\noexpand\csname labelcrefrange@#2 at format@last\endcsname}%
+ \edef\@tempb{\expandafter\noexpand\csname labelcrefrange@#1 at format@last\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter\@tempa\@tempb}{}%
+}
\newcommand\crefformat[2]{\@crefformat{cref}{#1}{#2}}%
\newcommand\Crefformat[2]{\@crefformat{Cref}{#1}{#2}}%
\newcommand\crefrangeformat[2]{\@crefrangeformat{crefrange}{#1}{#2}}%
@@ -2000,15 +1979,17 @@
}{}%
\endgroup}%
\let\if at cref@hyperrefloaded\iffalse%
+\let\cref at addtoreset\@addtoreset%
\@ifpackageloaded{hyperref}{%
\@ifpackagewith{hyperref}{implicit=false}{}{%
\let\if at cref@hyperrefloaded\iftrue%
\PackageInfo{cleveref}{`hyperref' support loaded}%
+ \let\cref at addtoreset\HyOrg at addtoreset%
\def\cref at hyperlinkname#1{\expandafter\expandafter\expandafter%
\@fourthoffive\csname r@#1\endcsname}%
\def\cref at hyperlinkurl#1{\expandafter\expandafter\expandafter%
\@fifthoffive\csname r@#1\endcsname}%
- \def\cref at hyperlink#1#2#3\@nil{\hyper@@link[link]{#1}{#2}{#3}}
+ \def\cref at hyperlink#1#2#3\@nil{\hyper@@link[link]{#1}{#2}{#3}}%
\let\cref at old@H at refstepcounter\H at refstepcounter%
\def\H at refstepcounter#1{%
\cref at old@H at refstepcounter{#1}%
@@ -2022,105 +2003,108 @@
\let\refstepcounter at noarg\cref at old@refstepcounter%
\def\refstepcounter at optarg[#1]#2{%
\cref at old@refstepcounter{#2}%
+ \@ifundefined{cref@#1 at alias}%
+ {\def\@tempa{#1}}%
+ {\def\@tempa{\csname cref@#1 at alias\endcsname}}%
\protected at edef\cref at currentlabel{%
\expandafter\cref at override@label at type%
- \cref at currentlabel\@nil{#1}}}%
+ \cref at currentlabel\@nil{\@tempa}}}%
\@ifundefined{appendix}{}{%
- \g at addto@macro\appendix{%
+ \def\appendix{%
\@ifundefined{chapter}{%
- \def\H at refstepcounter#1{%
- \cref at old@H at refstepcounter{#1}%
- \cref at constructprefix{#1}{\cref at result}%
+ \def\H at refstepcounter##1{%
+ \cref at old@H at refstepcounter{##1}%
+ \cref at constructprefix{##1}{\cref at result}%
\ifx\cref at result\@empty%
\def\cref at result{2147483647}%
\else%
\edef\cref at result{2147483647,\cref at result}%
\fi%
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{section}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [appendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [appendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{subsection}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [subappendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [subappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{subsubsection}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [subsubappendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [subsubappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \@ifundefined{cref@#1 at alias}%
- {\def\@tempa{#1}}%
- {\def\@tempa{\csname cref@#1 at alias\endcsname}}%
+ \@ifundefined{cref@##1 at alias}%
+ {\def\@tempa{##1}}%
+ {\def\@tempa{\csname cref@##1 at alias\endcsname}}%
\protected at edef\cref at currentlabel{%
- [\@tempa][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [\@tempa][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\fi%
\fi%
\fi}%
+ \cref at old@appendix%
}{%
- \def\H at refstepcounter#1{%
- \cref at old@H at refstepcounter{#1}%
- \cref at constructprefix{#1}{\cref at result}%
+ \def\H at refstepcounter##1{%
+ \cref at old@H at refstepcounter{##1}%
+ \cref at constructprefix{##1}{\cref at result}%
\ifx\cref at result\@empty%
\def\cref at result{2147483647}%
\else%
\edef\cref at result{2147483647,\cref at result}%
\fi%
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{chapter}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [appendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [appendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{section}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [subappendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [subappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{subsection}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [subsubappendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [subsubappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \def\@tempa{#1}%
+ \def\@tempa{##1}%
\def\@tempb{subsubsection}%
\ifx\@tempa\@tempb%
\protected at edef\cref at currentlabel{%
- [subsubsubappendix][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [subsubsubappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\else%
- \@ifundefined{cref@#1 at alias}%
- {\def\@tempa{#1}}%
- {\def\@tempa{\csname cref@#1 at alias\endcsname}}%
+ \@ifundefined{cref@##1 at alias}%
+ {\def\@tempa{##1}}%
+ {\def\@tempa{\csname cref@##1 at alias\endcsname}}%
\protected at edef\cref at currentlabel{%
- [\@tempa][\arabic{#1}][\cref at result]%
- \csname p@#1\endcsname\csname the#1\endcsname}%
+ [\@tempa][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
\fi%
\fi%
\fi%
\fi}%
- }%
+ \cref at old@appendix}%
}%
}% end of \@ifundefined{appendix}
\DeclareRobustCommand{\cref}{%
- \@ifstar{\@crefstar{cref}}{\@crefnostar{cref}}}%
+ \@ifstar{\@crefstar{cref}}{\@cref{cref}}}%
\DeclareRobustCommand{\Cref}{%
- \@ifstar{\@crefstar{Cref}}{\@crefnostar{Cref}}}%
- \def\@crefnostar#1#2{\@cref{#1}{#2}}%
+ \@ifstar{\@crefstar{Cref}}{\@cref{Cref}}}%
\def\@crefstar#1#2{%
\@crefstarredtrue\@cref{#1}{#2}\@crefstarredfalse}%
\DeclareRobustCommand{\crefrange}{%
@@ -2127,44 +2111,34 @@
\@ifstar{\@crefrangestar{cref}}{\@crefrangenostar{cref}}}%
\DeclareRobustCommand{\Crefrange}{%
\@ifstar{\@crefrangestar{Cref}}{\@crefrangenostar{Cref}}}%
- \def\@crefrangenostar#1#2#3{\@setcrefrange{#2}{#3}{#1}{}}%
+ \def\@crefrangenostar#1#2#3{\@@setcrefrange{#1}{#2}{#3}{}}
\def\@crefrangestar#1#2#3{%
- \@crefstarredtrue\@setcrefrange{#2}{#3}{#1}{}\@crefstarredfalse}%
+ \@crefstarredtrue\@@setcrefrange{#1}{#2}{#3}{}\@crefstarredfalse}%
\DeclareRobustCommand{\cpageref}{%
- \@ifstar{\@cpagerefstar{cref}}{\@cpagerefnostar{cref}}}%
+ \@ifstar{\@crefstar{cpageref}}{\@cref{cpageref}}}%
\DeclareRobustCommand{\Cpageref}{%
- \@ifstar{\@cpagerefstar{Cref}}{\@cpagerefnostar{Cref}}}%
- \def\@cpagerefnostar#1#2{%
- \@cpageref{#1}{#2}{\@setcpageref}{\@setcpagerefrange}}%
- \def\@cpagerefstar#1#2{%
- \@crefstarredtrue%
- \@cpageref{#1}{#2}{\@setcpageref}{\@setcpagerefrange}%
- \@crefstarredfalse}%
+ \@ifstar{\@crefstar{Cpageref}}{\@cref{Cpageref}}}%
\DeclareRobustCommand{\cpagerefrange}{%
- \@ifstar{\@cpagerefrangestar{cref}}{\@cpagerefrangenostar{cref}}}%
+ \@ifstar{\@cpagerefrangestar{cpageref}}{\@setcpagerefrange}}%
\DeclareRobustCommand{\Cpagerefrange}{%
- \@ifstar{\@cpagerefrangestar{Cref}}{\@cpagerefrangenostar{Cref}}}%
- \def\@cpagerefrangenostar#1#2#3{\@setcpagerefrange{#2}{#3}{#1}{}}%
+ \@ifstar{\@cpagerefrangestar{Cpageref}}{\@setCpagerefrange}}%
\def\@cpagerefrangestar#1#2#3{%
\@crefstarredtrue%
- \@setcpagerefrange{#2}{#3}{#1}{}%
+ \@@setcpagerefrange{#1}{#2}{#3}{}%
\@crefstarredfalse}%
\DeclareRobustCommand{\labelcref}{%
- \@ifstar{\@labelcrefstar}{\@labelcrefnostar}}%
- \def\@labelcrefnostar#1{\@cref{labelcref}{#1}}%
+ \@ifstar{\@labelcrefstar}{\@cref{labelcref}}}%
\def\@labelcrefstar#1{%
\@crefstarredtrue%
\@cref{labelcref}{#1}%
\@crefstarredfalse}%
\DeclareRobustCommand{\labelcpageref}{%
- \@ifstar{\@labelcpagerefstar}{\@labelcpagerefnostar}}%
- \def\@labelcpagerefnostar#1{%
- \@cpageref{labelcref}{#1}{\@setcpageref}{\@setcpagerefrange}}%
+ \@ifstar{\@labelcpagerefstar}{\@cref{labelcpageref}}}%
\def\@labelcpagerefstar#1{%
\@crefstarredtrue%
- \@cpageref{labelcref}{#1}{\@setcpageref}{\@setcpagerefrange}%
+ \@cref{labelcpageref}{#1}%
\@crefstarredfalse}%
- \def\@@setcref#1#2{%
+ \def\@@@setcref#1#2{%
\cref at getlabel{#2}{\@templabel}%
\if at crefstarred%
#1{\@templabel}{}{}%
@@ -2173,7 +2147,7 @@
\edef\@tempurl{\cref at hyperlinkurl{#2}}%
#1{\@templabel}{\cref at hyperlink{\@tempurl}{\@tempname}}{\@nil}%
\fi}%
- \def\@@setcrefrange#1#2#3{%
+ \def\@@@setcrefrange#1#2#3{%
\cref at getlabel{#2}{\@labela}%
\cref at getlabel{#3}{\@labelb}%
\if at crefstarred%
@@ -2187,8 +2161,8 @@
{\cref at hyperlink{\@tempurla}{\@tempnamea}}{\@nil}%
{\cref at hyperlink{\@tempurlb}{\@tempnameb}}{\@nil}%
\fi}%
- \def\@@setcpageref#1#2{%
- \cref at getpageref{#2}{\@temppage}%
+ \def\@@@setcpageref#1#2{%
+ \cpageref at getlabel{#2}{\@temppage}%
\if at crefstarred%
#1{\@temppage}{}{}%
\else%
@@ -2196,9 +2170,9 @@
\edef\@tempurl{\cref at hyperlinkurl{#2}}%
#1{\@temppage}{\cref at hyperlink{\@tempurl}{\@tempname}}{\@nil}%
\fi}%
- \def\@@setcpagerefrange#1#2#3{%
- \cref at getpageref{#2}{\@pagea}%
- \cref at getpageref{#3}{\@pageb}%
+ \def\@@@setcpagerefrange#1#2#3{%
+ \cpageref at getlabel{#2}{\@pagea}%
+ \cpageref at getlabel{#3}{\@pageb}%
\if at crefstarred%
#1{\@pagea}{\@pageb}{}{}{}{}%
\else%
@@ -2225,78 +2199,117 @@
\protected at edef\cref at currentlabel{%
[\@tempa][\arabic{#1}][\cref at result]%
\csname p@#1\endcsname\csname the#1\endcsname}}%
- \fi%
+ \@ifundefined{appendix}{}{%
+ \def\appendix{%
+ \@ifundefined{chapter}{%
+ \def\H at refstepcounter##1{%
+ \cref at old@H at refstepcounter{##1}%
+ \cref at constructprefix{##1}{\cref at result}%
+ \ifx\cref at result\@empty%
+ \def\cref at result{2147483647}%
+ \else%
+ \edef\cref at result{2147483647,\cref at result}%
+ \fi%
+ \def\@tempa{##1}%
+ \def\@tempb{section}%
+ \ifx\@tempa\@tempb%
+ \protected at edef\cref at currentlabel{%
+ [appendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
+ \else%
+ \def\@tempa{##1}%
+ \def\@tempb{subsection}%
+ \ifx\@tempa\@tempb%
+ \protected at edef\cref at currentlabel{%
+ [subappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
+ \else%
+ \def\@tempa{##1}%
+ \def\@tempb{subsubsection}%
+ \ifx\@tempa\@tempb%
+ \protected at edef\cref at currentlabel{%
+ [subsubappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
+ \else%
+ \@ifundefined{cref@##1 at alias}%
+ {\def\@tempa{##1}}%
+ {\def\@tempa{\csname cref@##1 at alias\endcsname}}%
+ \protected at edef\cref at currentlabel{%
+ [\@tempa][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
+ \fi%
+ \fi%
+ \fi}%
+ \cref at old@appendix%
+ }{%
+ \def\H at refstepcounter##1{%
+ \cref at old@H at refstepcounter{##1}%
+ \cref at constructprefix{##1}{\cref at result}%
+ \ifx\cref at result\@empty%
+ \def\cref at result{2147483647}%
+ \else%
+ \edef\cref at result{2147483647,\cref at result}%
+ \fi%
+ \def\@tempa{##1}%
+ \def\@tempb{chapter}%
+ \ifx\@tempa\@tempb%
+ \protected at edef\cref at currentlabel{%
+ [appendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
+ \else%
+ \def\@tempa{##1}%
+ \def\@tempb{section}%
+ \ifx\@tempa\@tempb%
+ \protected at edef\cref at currentlabel{%
+ [subappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
+ \else%
+ \def\@tempa{##1}%
+ \def\@tempb{subsection}%
+ \ifx\@tempa\@tempb%
+ \protected at edef\cref at currentlabel{%
+ [subsubappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
+ \else%
+ \def\@tempa{##1}%
+ \def\@tempb{subsubsection}%
+ \ifx\@tempa\@tempb%
+ \protected at edef\cref at currentlabel{%
+ [subsubsubappendix][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
+ \else%
+ \@ifundefined{cref@##1 at alias}%
+ {\def\@tempa{##1}}%
+ {\def\@tempa{\csname cref@##1 at alias\endcsname}}%
+ \protected at edef\cref at currentlabel{%
+ [\@tempa][\arabic{##1}][\cref at result]%
+ \csname p@##1\endcsname\csname the##1\endcsname}%
+ \fi%
+ \fi%
+ \fi%
+ \fi}%
+ \cref at old@appendix}%
+ }%
+ }% end of \@ifundefined{appendix}
+ \fi% end of \if at cref@hyperrefloaded
\let\if at cref@hyperrefloaded\iffalse%
}% end of \@ifpackageloaded{hyperref}
+\AtBeginDocument{%
+ \if at cref@hyperrefloaded\else%
+ \@ifpackageloaded{hyperref}{%
+ \PackageError{cleveref}{cleveref must be loaded after hyperref!}%
+ {Package load order is wrong: load cleveref *after* hyperref.}
+ }{}%
+ \fi}
+\let\if at cref@variorefloaded\iffalse%
\@ifpackageloaded{varioref}{%
+ \let\if at cref@variorefloaded\iftrue%
\PackageInfo{cleveref}{`varioref' support loaded}%
\PackageInfo{cleveref}{`cleveref' supersedes `varioref's
\string\labelformat command}%
- \def\cref@@vpageref#1[#2]#3{%
- \@cpageref{cref}{#3}%
- {\@setvpageref[#1][\vref at space]}{\@setvpagerefrange[#1]}}%
- \def\cref at vref#1#2{%
- \leavevmode%
- \begingroup%
- \def\reftextcurrent{}%
- \@cref{#1}{#2}\@setcref at space%
- \cref@@vpageref{\reftextcurrent}[]{#2}%
- \endgroup}%
- \def\cref at vrefrange#1#2#3{%
- \@setcrefrange{#2}{#3}{#1}{}\@setcref at space\vpagerefrange{#2}{#3}}%
- \def\cref at fullref#1#2{%
- \@cref{#1}{#2}\@setcref at space%
- \@cpageref{cref}{#2}{\@setfullpageref}{\@setfullpagerefrange}}%
- \def\cref at vpagerefconjunction#1{%
- \def\@tempa{#1}%
- \def\@tempb{@second}%
- \ifx\@tempa\@tempb\relax%
- \@setcref at pairconjunction%
- \else%
- \def\@tempb{@middle}%
- \ifx\@tempa\@tempb\relax%
- \@setcref at middleconjunction%
- \else%
- \def\@tempb{@last}%
- \ifx\@tempa\@tempb\relax%
- \@setcref at lastconjunction%
- \fi%
- \fi%
- \fi}%
- \def\@setcref at space{ }%
- \def\@setvpageref[#1][#2]#3#4#5{%
- \cref at vpagerefconjunction{#5}%
- \def\vref at space{}%
- \begingroup%
- \cref at patchreftexts{#5}%
- \@@setvpageref{#1}[#2]{#3}%
- \endgroup}%
- \def\@@setvpageref#1[#2]#3{\cref at old@@vpageref{#1}[#2]{#3}}%
- \def\@setvpagerefrange[#1]#2#3#4#5{%
- \cref at vpagerefconjunction{#5}%
- \let\vref at space\relax%
- \begingroup%
- \cref at patchreftexts{#5}%
- \@@setvpagerefrange[#1]{#2}{#3}%
- \endgroup}%
- \def\@@setvpagerefrange[#1]#2#3{\vpagerefrange[#1]{#2}{#3}}%
- \def\@setfullpageref#1#2#3{%
- \cref at vpagerefconjunction{#3}%
- \begingroup%
- \cref at patchreftexts{#3}%
- \@@setfullpageref{#1}%
- \endgroup}%
- \def\@@setfullpageref#1{\reftextfaraway{#1}}%
- \def\@setfullpagerefrange#1#2#3#4{%
- \cref at vpagerefconjunction{#4}%
- \begingroup%
- \cref at patchreftexts{#4}%
- \@@setfullpagerefrange{#1}{#2}%
- \endgroup}%
- \def\@@setfullpagerefrange#1#2{\reftextpagerange{#1}{#2}}%
\def\cref at old@@vpageref#1[#2]#3{%
\leavevmode%\unskip <<<
- \global\advance\c at vrcnt\@ne%
+ \global\advance\c at vrcnt\@ne\relax%
\vref at pagenum\@tempa{\the\c at vrcnt @vr}%
\vref at pagenum\@tempb{\the\c at vrcnt @xvr}%
%\vref at label{\the\c at vrcnt @xvr}% <<<
@@ -2320,7 +2333,7 @@
{%
\is at pos@number\@tempa%
{\@tempcnta\@tempa%
- \advance\@tempcnta\@ne%
+ \advance\@tempcnta\@ne\relax%
}%
{\@tempcnta\maxdimen}%
\ifnum \thevpagerefnum =\@tempcnta%
@@ -2334,7 +2347,7 @@
\reftextafter%
\fi%
\else%
- \advance\@tempcnta-2%
+ \advance\@tempcnta-2\relax%
\ifnum \thevpagerefnum =\@tempcnta%
\ifodd\@tempcnta%
\reftextbefore%
@@ -2355,6 +2368,71 @@
\vref at label{\the\c at vrcnt @xvr}% <<<
\vref at label{\the\c at vrcnt @vr}%
}%
+ \def\cref@@vpageref#1[#2]#3{%
+ \begingroup%
+ \def\cref@@vpageref at arg{#1}%
+ \@cref{vpageref}{#3}%
+ \endgroup}%
+ \def\cref at vref#1#2{%
+ \leavevmode%
+ \begingroup%
+ \def\reftextcurrent{}%
+ \@cref{#1}{#2}\@setcref at space%
+ \cref@@vpageref{\reftextcurrent}[]{#2}%
+ \endgroup}%
+ \def\cref at vrefrange#1#2#3{%
+ \@@setcrefrange{#1}{#2}{#3}{}\@setcref at space\vpagerefrange{#2}{#3}}%
+ \def\cref at fullref#1#2{%
+ \@cref{#1}{#2}\@setcref at space\@cref{fullpageref}{#2}}%
+ \def\cref at vpagerefconjunction#1{%
+ \def\@tempa{#1}%
+ \def\@tempb{@second}%
+ \ifx\@tempa\@tempb\relax%
+ \@setcref at pairconjunction%
+ \else%
+ \def\@tempb{@middle}%
+ \ifx\@tempa\@tempb\relax%
+ \@setcref at middleconjunction%
+ \else%
+ \def\@tempb{@last}%
+ \ifx\@tempa\@tempb\relax%
+ \@setcref at lastconjunction%
+ \fi%
+ \fi%
+ \fi}%
+ \def\@setcref at space{ }%
+ \def\@setvpageref#1#2{%
+ \cref at vpagerefconjunction{#2}%
+ \def\vref at space{}%
+ \begingroup%
+ \cref at patchreftexts{#2}%
+ \expandafter\@@@setvpageref\expandafter%
+ {\cref@@vpageref at arg}[\vref at space]{#1}%
+ \endgroup}%
+ \let\@@@setvpageref\cref at old@@vpageref%
+ \def\@setvpagerefrange#1#2#3{%
+ \cref at vpagerefconjunction{#3}%
+ \let\vref at space\relax%
+ \begingroup%
+ \cref at patchreftexts{#3}%
+ \expandafter\@@@setvpagerefrange\expandafter%
+ [\cref@@vpageref at arg]{#1}{#2}%
+ \endgroup}%
+ \let\@@@setvpagerefrange\vpagerefrange
+ \def\@setfullpageref#1#2{%
+ \cref at vpagerefconjunction{#2}%
+ \begingroup%
+ \cref at patchreftexts{#2}%
+ \@@@setfullpageref{#1}%
+ \endgroup}%
+ \let\@@@setfullpageref\reftextfaraway%
+ \def\@setfullpagerefrange#1#2#3{%
+ \cref at vpagerefconjunction{#3}%
+ \begingroup%
+ \cref at patchreftexts{#3}%
+ \@@@setfullpagerefrange{#1}{#2}%
+ \endgroup}%
+ \let\@@@setfullpagerefrange\reftextpagerange%
\let\creftextcurrent\reftextcurrent%
\let\creftextfaceafter\reftextfaceafter%
\let\creftextfacebefore\reftextfacebefore%
@@ -2374,12 +2452,12 @@
\def\@tempc{}%
\expandafter\ifx\csname #1\endcsname\@tempc\relax%
\expandafter\def\csname #1\endcsname{\unskip}%
- %{\advance\count at group -1\reftextcurrent at orig}%
+ %{\advance\count at group -1\relax\reftextcurrent at orig}%
\else%
\long\def\@tempc{}%
\expandafter\ifx\csname #1\endcsname\@tempc\relax%
\expandafter\def\csname #1\endcsname{\unskip}%
- %{\advance\count at group -1\reftextcurrent at orig}%
+ %{\advance\count at group -1\relax\reftextcurrent at orig}%
\fi%
\fi%
\else%
@@ -2415,7 +2493,7 @@
\def\@setcref at middleconjunction{\crefmiddleconjunction}%
\def\@setcref at lastconjunction{\creflastconjunction}%
\AtBeginDocument{%
- \def\@@vpageref#1[#2]#3{\cref@@vpageref{#1}[#2]{#3}}%
+ \let\@@vpageref\cref@@vpageref%
}%
\if at cref@hyperrefloaded\relax% hyperref loaded%
\DeclareRobustCommand{\vref}{%
@@ -2450,8 +2528,17 @@
\DeclareRobustCommand{\fullref}{\cref at fullref{cref}}%
\DeclareRobustCommand{\Fullref}{\cref at fullref{Cref}}%
\fi% end of test for hyperref
-}{}% end of \@ifpackageloaded{varioref}
+}{\let\if at cref@variorefloaded\iffalse}% end of \@ifpackageloaded{varioref}
+\AtBeginDocument{%
+ \if at cref@variorefloaded\relax\else%
+ \@ifpackageloaded{varioref}{%
+ \PackageError{cleveref}{cleveref must be loaded after varioref!}%
+ {Package load order is wrong: load cleveref *after* varioref.}
+ }{}%
+ \fi}
+\let\if at cref@amsmathloaded\iffalse%
\@ifpackageloaded{amsmath}{%
+ \let\if at cref@amsmathloaded\iftrue%
\AtBeginDocument{%
\let\cref at old@label at in@display\label at in@display%
\def\label at in@display{%
@@ -2473,7 +2560,7 @@
\let\math at cr@@@\math at cr@@@align at measure%
\everycr{\noalign{\global\tag at false%
\global\let\raise at tag\@empty \global\column@\z@}}%
- \let\label\@gobble at optarg% <<< cleveref modification
+ \let\label\cref at gobble@optarg% <<< cleveref modification
\global\row@\z@%
\tabskip\z@%
\halign{\span\align at preamble\crcr%
@@ -2485,7 +2572,7 @@
}%
\restorecounters@%
\ifodd\maxfields@%
- \global\advance\maxfields@\@ne%
+ \global\advance\maxfields@\@ne\relax%
\fi%
\ifnum\xatlevel@=\tw@%
\ifnum\maxfields@<\thr@@%
@@ -2496,7 +2583,7 @@
\unvbox\z@ \unpenalty \global\setbox\@ne\lastbox%
}%
\global\totwidth@\wd\@ne%
- \if at fleqn \global\advance\totwidth@\@mathmargin \fi%
+ \if at fleqn \global\advance\totwidth@\@mathmargin\relax\fi%
\global\let\maxcolumn at widths\@empty%
\begingroup%
\let\or\relax%
@@ -2509,7 +2596,7 @@
\repeat%
\endgroup%
\dimen@\displaywidth%
- \advance\dimen at -\totwidth@%
+ \advance\dimen at -\totwidth@\relax%
\ifcase\xatlevel@%
\global\alignsep@\z@%
\let\minalignsep\z@%
@@ -2520,34 +2607,34 @@
\else%
\@tempcnta\tw@%
\global\eqnshift@\dimen@%
- \global\divide\eqnshift@\@tempcnta%
+ \global\divide\eqnshift@\@tempcnta\relax%
\fi%
\or%
\@tempcntb\maxfields@%
- \divide\@tempcntb\tw@%
+ \divide\@tempcntb\tw@\relax%
\@tempcnta\@tempcntb%
- \advance\@tempcntb\m at ne%
+ \advance\@tempcntb\m at ne\relax%
\if at fleqn%
\global\eqnshift@\@mathmargin%
\global\alignsep@\dimen@%
- \global\divide\alignsep@\@tempcnta%
+ \global\divide\alignsep@\@tempcnta\relax%
\else%
- \global\advance\@tempcnta\@ne%
+ \global\advance\@tempcnta\@ne\relax%
\global\eqnshift@\dimen@%
- \global\divide\eqnshift@\@tempcnta%
+ \global\divide\eqnshift@\@tempcnta\relax%
\global\alignsep@\eqnshift@%
\fi%
\or%
\@tempcntb\maxfields@%
- \divide\@tempcntb\tw@%
- \global\advance\@tempcntb\m at ne%
- \global\@tempcnta\@tempcntb%
+ \divide\@tempcntb\tw@\relax%
+ \global\advance\@tempcntb\m at ne\relax%
+ \global\@tempcnta\@tempcntb\relax%
\global\eqnshift@\z@%
\global\alignsep@\dimen@%
\if at fleqn%
\global\advance\alignsep@\@mathmargin\relax%
\fi%
- \global\divide\alignsep@\@tempcntb%
+ \global\divide\alignsep@\@tempcntb\relax%
\fi%
\ifdim\alignsep@<\minalignsep\relax%
\global\alignsep@\minalignsep\relax%
@@ -2554,9 +2641,9 @@
\ifdim\eqnshift@>\z@%
\if at fleqn\else%
\global\eqnshift@\displaywidth%
- \global\advance\eqnshift at -\totwidth@%
- \global\advance\eqnshift at -\@tempcntb\alignsep@%
- \global\divide\eqnshift@\tw@%
+ \global\advance\eqnshift at -\totwidth@\relax%
+ \global\advance\eqnshift at -\@tempcntb\alignsep@\relax%
+ \global\divide\eqnshift@\tw@\relax%
\fi%
\fi%
\fi%
@@ -2565,19 +2652,19 @@
\fi%
\calc at shift@align%
\global\tagshift@\totwidth@%
- \global\advance\tagshift@\@tempcntb\alignsep@%
+ \global\advance\tagshift@\@tempcntb\alignsep@\relax%
\if at fleqn%
\ifnum\xatlevel@=\tw@%
\global\advance\tagshift at -\@mathmargin\relax%
\fi%
\else%
- \global\advance\tagshift@\eqnshift@%
+ \global\advance\tagshift@\eqnshift@\relax%
\fi%
\iftagsleft@ \else%
- \global\advance\tagshift at -\displaywidth%
+ \global\advance\tagshift at -\displaywidth\relax%
\fi%
\dimen@\minalignsep\relax%
- \global\advance\totwidth@\@tempcntb\dimen@%
+ \global\advance\totwidth@\@tempcntb\dimen@\relax%
\ifdim\totwidth@>\displaywidth%
\global\let\displaywidth@\totwidth@%
\else%
@@ -2609,7 +2696,7 @@
}%
\restorecounters@%
\if at fleqn%
- \global\advance\totwidth@\@mathmargin%
+ \global\advance\totwidth@\@mathmargin\relax%
\fi%
\iftagsleft@%
\ifdim\totwidth@>\displaywidth%
@@ -2622,17 +2709,17 @@
}%
\def\multline@#1{%
\Let@%
- \@display at init{\global\advance\row@\@ne \global\dspbrk at lvl\m at ne}%
+ \@display at init{\global\advance\row@\@ne\relax\global\dspbrk at lvl\m at ne}%
\chardef\dspbrk at context\z@%
\restore at math@cr%
\let\tag\tag at in@align%
\global\tag at false \global\let\raise at tag\@empty%
\mmeasure@{#1}%
- \let\tag\gobble at tag \let\label\@gobble at optarg% <<< cleveref modification
+ \let\tag\gobble at tag \let\label\cref at gobble@optarg% <<< cleveref modification
\tabskip \if at fleqn \@mathmargin \else \z at skip \fi%
\totwidth@\displaywidth%
\if at fleqn%
- \advance\totwidth at -\@mathmargin%
+ \advance\totwidth at -\@mathmargin\relax%
\fi%
\halign\bgroup%
\hbox to\totwidth@{%
@@ -2669,7 +2756,7 @@
\multline at indent%
\else%
\setbox\z@\hbox{\make at display@tag}%
- \dimen@\@mathmargin \advance\dimen at -\wd\z@%
+ \dimen@\@mathmargin \advance\dimen at -\wd\z@\relax%
\ifdim\dimen@<\multlinetaggap%
\dimen@\multlinetaggap%
\fi%
@@ -2725,11 +2812,11 @@
}%
\global\tagwidth@\wdz@%
\dimen@\totwidth@%
- \advance\dimen@\tagwidth@%
- \advance\dimen@\multlinetaggap%
+ \advance\dimen@\tagwidth@\relax%
+ \advance\dimen@\multlinetaggap\relax%
\iftagsleft@\else%
\if at fleqn%
- \advance\dimen@\@mathmargin%
+ \advance\dimen@\@mathmargin\relax%
\fi%
\fi%
\ifdim\dimen@>\displaywidth%
@@ -2755,10 +2842,10 @@
\let\cref at old@endsubequations\endsubequations%
\cref at resetby{equation}{\cref at result}%
\ifx\cref at result\relax\else%
- \@addtoreset{parentequation}{\cref at result}%
+ \cref at addtoreset{parentequation}{\cref at result}%
\fi%
\renewenvironment{subequations}{%
- \@addtoreset{equation}{parentequation}%
+ \cref at addtoreset{equation}{parentequation}%
\let\cref at orig@equation at alias\cref at equation@alias%
\@ifundefined{cref at subequation@alias}%
{\crefalias{equation}{subequation}}%
@@ -2791,6 +2878,13 @@
\toks@\@xp{\p at equation{#1}}%
\edef\cref at currentlabel{[equation][2147483647][]\the\toks@}}}%
}{}% end of \@ifpackageloaded{amsmath}
+\AtBeginDocument{%
+ \if at cref@amsmathloaded\else%
+ \@ifpackageloaded{amsmath}{%
+ \PackageError{cleveref}{cleveref must be loaded after amsmath!}%
+ {Package load order is wrong: load cleveref *after* amsmath.}
+ }{}%
+ \fi}
\@ifpackageloaded{amsthm}{%
\PackageInfo{cleveref}{`amsthm' support loaded}%
\let\cref at thmnoarg\@thm%
@@ -2875,12 +2969,12 @@
\refstepcounter[#1]{#2}% <<< cleveref modification
\theorem at prework%
\thm at topsepadd \theorempostskipamount%
- \ifvmode \advance\thm at topsepadd\partopsep\fi%
+ \ifvmode \advance\thm at topsepadd\partopsep\relax\fi%
\trivlist%
\@topsep \theorempreskipamount%
\@topsepadd \thm at topsepadd%
- \advance\linewidth -\theorem at indent%
- \advance\@totalleftmargin \theorem at indent%
+ \advance\linewidth -\theorem at indent\relax%
+ \advance\@totalleftmargin \theorem at indent\relax%
\parshape \@ne \@totalleftmargin \linewidth%
\@ifnextchar[{\@ythm{#1}{#2}{#3}}{\@xthm{#1}{#2}{#3}}%]
}%
@@ -2893,18 +2987,31 @@
\addtocounter{equation}{-1}%
\cref at orig@@IEEEeqnarray[#1]{#2}}%
\let\cref at orig@IEEEeqnarrayXCR\@IEEEeqnarrayXCR%
- \def\@IEEEeqnarrayXCR[#1]{%
- \if at eqnsw%
- \if at IEEEissubequation%
- %\addtocounter{equation}{1}%
- \refstepcounter{IEEEsubequation}%
- \addtocounter{IEEEsubequation}{-1}%
- \else%
- \refstepcounter{equation}%
- \addtocounter{equation}{-1}%
+ \@ifundefined{c at IEEEsubequation}{%
+ \def\@IEEEeqnarrayXCR[#1]{%
+ \if at eqnsw%
+ \if at IEEEissubequation%
+ \refstepcounter{IEEEsubequation}%
+ \addtocounter{IEEEsubequation}{-1}%
+ \else%
+ \refstepcounter{equation}%
+ \addtocounter{equation}{-1}%
+ \fi%
\fi%
- \fi%
- \cref at orig@IEEEeqnarrayXCR[#1]}%
+ \cref at orig@IEEEeqnarrayXCR[#1]}%
+ }{
+ \def\@IEEEeqnarrayXCR[#1]{%
+ \if at eqnsw%
+ \ifnum\c at IEEEsubequation>0\relax%
+ \refstepcounter{IEEEsubequation}%
+ \addtocounter{IEEEsubequation}{-1}%
+ \else%
+ \refstepcounter{equation}%
+ \addtocounter{equation}{-1}%
+ \fi%
+ \fi%
+ \cref at orig@IEEEeqnarrayXCR[#1]}%
+ }% end of \@ifundefined{c at IEEEsubequation}
\let\cref at orig@IEEEyessubnumber\IEEEyessubnumber%
\def\IEEEyessubnumber{%
\if at IEEEeqnarrayISinner%
@@ -2914,8 +3021,8 @@
\fi%
\fi%
\cref at orig@IEEEyessubnumber}%
- \@addtoreset{IEEEsubequation}{equation}%
- \crefalias{IEEEsubequation}{equation}%
+ \cref at addtoreset{IEEEsubequation}{subequation}%
+ \crefalias{IEEEsubequation}{subequation}%
}{}% end of \@ifpackageloaded{IEEEtrantools}
\@ifpackageloaded{breqn}{%
\PackageInfo{cleveref}{`breqn' support loaded}%
@@ -2924,7 +3031,7 @@
\cref at old@eq at setnumber%
\cref at constructprefix{equation}{\cref at result}%
\protected at xdef\cref at currentlabel{%
- [equation][\arabic{equation}][\cref at result]\p at equation\theequation}}%
+ [equation][\arabic{equation}][\cref at result]\p at equation\eq at number}}%
}{}% end of \@ifpackageloaded{breqn}
\@ifpackageloaded{algorithmicx}{%
\PackageInfo{cleveref}{`algorithmicx' support loaded}%
@@ -3007,7 +3114,7 @@
\cref at old@newaliascnt{#1}{#2}%
\cref at resetby{#2}{\cref at result}%
\ifx\cref at result\relax\else%
- \@addtoreset{#1}{\cref at result}%
+ \cref at addtoreset{#1}{\cref at result}%
\fi}%
}{}% end of \@ifpackageloaded{aliascnt}
\DeclareOption{poorman}{%
@@ -3291,7 +3398,7 @@
\@tempa#1\@nil}%
\def\@crefrangenostar#1#2#3{%
\gdef\cref at poorman@text{}%
- \@setcrefrange{#2}{#3}{#1}{}%
+ \@@setcrefrange{#2}{#3}{#1}{}%
\def\@tempa##1##2\@nil{%
\if##1c%
\cref at writescript{}{%
@@ -3298,12 +3405,12 @@
\string\crefrange\string{#2\string}\string{#3\string}}%
\else%
\cref at writescript{}{%
- \string\Crefrange\string{#2\string}\string{#3\string}}%
+ \strinsg\Crefrange\string{#2\string}\string{#3\string}}%
\fi}%
\@tempa#1\@nil}%
\def\@crefrangestar#1#2#3{%
\gdef\cref at poorman@text{}%
- \@crefstarredtrue\@setcrefrange{#2}{#3}{#1}{}\@crefstarredfalse%
+ \@crefstarredtrue\@@setcrefrange{#2}{#3}{#1}{}\@crefstarredfalse%
\def\@tempa##1##2\@nil{%
\if##1c%
\cref at writescript{}{%
@@ -3313,31 +3420,9 @@
\string\Crefrange*\string{#2\string}\string{#3\string}}%
\fi}%
\@tempa#1\@nil}%
- \def\@cpagerefnostar#1#2{%
- \gdef\cref at poorman@text{}%
- \@cpageref{#1}{#2}{\@setcpageref}{\@setcpagerefrange}%
- \def\@tempa##1##2\@nil{%
- \if##1c%
- \cref at writescript{}{\string\cpageref\string{#2\string}}%
- \else%
- \cref at writescript{}{\string\Cpageref\string{#2\string}}%
- \fi}%
- \@tempa#1\@nil}%
- \def\@cpagerefstar#1#2{%
- \gdef\cref at poorman@text{}%
- \@crefstarredtrue%
- \@cpageref{#1}{#2}{\@setcpageref}{\@setcpagerefrange}%
- \@crefstarredfalse%
- \def\@tempa##1##2\@nil{%
- \if##1c%
- \cref at writescript{}{\string\cpageref*\string{#2\string}}%
- \else%
- \cref at writescript{}{\string\Cpageref*\string{#2\string}}%
- \fi}%
- \@tempa#1\@nil}%
\def\@cpagerefrangenostar#1#2#3{%
\gdef\cref at poorman@text{}%
- \@setcpagerefrange{#2}{#3}{#1}{}%
+ \@@setcpagerefrange{#2}{#3}{#1}{}%
\def\@tempa##1##2\@nil{%
\if##1c%
\cref at writescript{}{%
@@ -3350,7 +3435,7 @@
\def\@cpagerefrangestar#1#2#3{%
\gdef\cref at poorman@text{}%
\@crefstarredtrue%
- \@setcpagerefrange{#2}{#3}{#1}{}%
+ \@@setcpagerefrange{#2}{#3}{#1}{}%
\@crefstarredfalse%
\def\@tempa##1##2\@nil{%
\if##1c%
@@ -3373,12 +3458,12 @@
\cref at writescript{}{\string\labelcref*\string{#1\string}}}%
\def\@labelcpagerefnostar#1{%
\gdef\cref at poorman@text{}%
- \@cpageref{labelcref}{#1}{\@setcpageref}{\@setcpagerefrange}%
+ \@cref{labelcpageref}{#1}%
\cref at writescript{}{\string\labelcpageref\string{#1\string}}}%
\def\@labelcpagerefstar#1{%
\gdef\cref at poorman@text{}%
\@crefstarredtrue%
- \@cpageref{labelcref}{#1}{\@setcpageref}{\@setcpagerefrange}%
+ \@cref{labelcpageref}{#1}%
\@crefstarredfalse%
\cref at writescript{}{\string\labelcpageref*\string{#1\string}}}%
\else% hyperref not loaded
@@ -3392,30 +3477,30 @@
\cref at writescript{}{\string\Cref\string{#1\string}}}%
\DeclareRobustCommand{\crefrange}[2]{%
\gdef\cref at poorman@text{}%
- \@setcrefrange{#1}{#2}{cref}{}%
+ \@@setcrefrange{#1}{#2}{cref}{}%
\cref at writescript{}{%
\string\crefrange\string{#1\string}\string{#2\string}}}%
\DeclareRobustCommand{\Crefrange}[2]{%
\gdef\cref at poorman@text{}%
- \@setcrefrange{#1}{#2}{Cref}{}%
+ \@@setcrefrange{#1}{#2}{Cref}{}%
\cref at writescript{}{%
\string\Crefrange\string{#1\string}\string{#2\string}}}%
\DeclareRobustCommand{\cpageref}[1]{%
\gdef\cref at poorman@text{}%
- \@cpageref{cref}{#1}{\@setcpageref}{\@setcpagerefrange}%
+ \@cref{cpageref}{#1}%
\cref at writescript{}{\string\cpageref\string{#1\string}}}%
\DeclareRobustCommand{\Cpageref}[1]{%
\gdef\cref at poorman@text{}%
- \@cpageref{Cref}{#1}{\@setcpageref}{\@setcpagerefrange}%
+ \@cref{Cpageref}{#1}%
\cref at writescript{}{\string\Cpageref\string{#1\string}}}%
\DeclareRobustCommand{\cpagerefrange}[2]{%
\gdef\cref at poorman@text{}%
- \@setcpagerefrange{#1}{#2}{cref}{}%
+ \@@setcpagerefrange{#1}{#2}{cref}{}%
\cref at writescript{}{%
\string\cpagerefrange\string{#1\string}\string{#2\string}}}%
\DeclareRobustCommand{\Cpagerefrange}[2]{%
\gdef\cref at poorman@text{}%
- \@setcpagerefrange{#1}{#2}{Cref}{}%
+ \@@setcpagerefrange{#1}{#2}{Cref}{}%
\cref at writescript{}{%
\string\Cpagerefrange\string{#1\string}\string{#2\string}}}%
\DeclareRobustCommand{\labelcref}[1]{%
@@ -3424,7 +3509,7 @@
\cref at writescript{}{\string\labelcref\string{#1\string}}}%
\DeclareRobustCommand{\labelcpageref}[1]{%
\gdef\cref at poorman@text{}%
- \@cpageref{labelcref}{#1}{\@setcpageref}{\@setcpagerefrange}%
+ \@cref{labelcpageref}{#1}%
\cref at writescript{}{\string\labelcpageref\string{#1\string}}}%
\fi% end of test for hyperref
\DeclareRobustCommand{\namecref}[1]{%
@@ -3463,13 +3548,13 @@
\creflastgroupconjunction%
\expandafter\g at addto@macro\expandafter\cref at poorman@text%
\expandafter{\creflastgroupconjunction}}%
- \let\old@@setcref\@@setcref%
- \let\old@@setcrefrange\@@setcrefrange%
- \let\old@@setcpageref\@@setcpageref%
- \let\old@@setcpagerefrange\@@setcpagerefrange%
+ \let\old@@@setcref\@@@setcref%
+ \let\old@@@setcrefrange\@@@setcrefrange%
+ \let\old@@@setcpageref\@@@setcpageref%
+ \let\old@@@setcpagerefrange\@@@setcpagerefrange%
\if at cref@hyperrefloaded\relax% hyperref loaded
- \def\@@setcref#1#2{%
- \old@@setcref{#1}{#2}%
+ \def\@@@setcref#1#2{%
+ \old@@@setcref{#1}{#2}%
\if at crefstarred%
\expandafter\g at addto@macro\expandafter\cref at poorman@text%
\expandafter{#1{\ref*{#2}}{}{}}%
@@ -3477,8 +3562,8 @@
\expandafter\g at addto@macro\expandafter\cref at poorman@text%
\expandafter{#1{\ref{#2}}{}{}}%
\fi}%
- \def\@@setcrefrange#1#2#3{%
- \old@@setcrefrange{#1}{#2}{#3}%
+ \def\@@@setcrefrange#1#2#3{%
+ \old@@@setcrefrange{#1}{#2}{#3}%
\if at crefstarred%
\expandafter\g at addto@macro\expandafter\cref at poorman@text%
\expandafter{#1{\ref*{#2}}{\ref*{#3}}{}{}{}{}}%
@@ -3486,8 +3571,8 @@
\expandafter\g at addto@macro\expandafter\cref at poorman@text%
\expandafter{#1{\ref{#2}}{\ref{#3}}{}{}{}{}}%
\fi}%
- \def\@@setcpageref#1#2{%
- \old@@setcpageref{#1}{#2}%
+ \def\@@@setcpageref#1#2{%
+ \old@@@setcpageref{#1}{#2}%
\if at crefstarred%
\expandafter\g at addto@macro\expandafter\cref at poorman@text%
\expandafter{#1{\pageref*{#2}}{}{}}%
@@ -3495,8 +3580,8 @@
\expandafter\g at addto@macro\expandafter\cref at poorman@text%
\expandafter{#1{\pageref{#2}}{}{}}%
\fi}%
- \def\@@setcpagerefrange#1#2#3{%
- \old@@setcpagerefrange{#1}{#2}{#3}%
+ \def\@@@setcpagerefrange#1#2#3{%
+ \old@@@setcpagerefrange{#1}{#2}{#3}%
\if at crefstarred%
\expandafter\g at addto@macro\expandafter\cref at poorman@text%
\expandafter{#1{\pageref*{#2}}{\pageref*{#3}}{}{}{}{}}%
@@ -3505,30 +3590,30 @@
\expandafter{#1{\pageref{#2}}{\pageref{#3}}{}{}{}{}}%
\fi}%
\else% hyperref not loaded
- \def\@@setcref#1#2{%
- \old@@setcref{#1}{#2}%
+ \def\@@@setcref#1#2{%
+ \old@@@setcref{#1}{#2}%
\expandafter\g at addto@macro\expandafter{%
\expandafter\cref at poorman@text\expandafter}%
\expandafter{#1{\ref{#2}}{}{}}}%
- \def\@@setcrefrange#1#2#3{%
- \old@@setcrefrange{#1}{#2}{#3}%
+ \def\@@@setcrefrange#1#2#3{%
+ \old@@@setcrefrange{#1}{#2}{#3}%
\expandafter\g at addto@macro%
\expandafter{\expandafter\cref at poorman@text\expandafter}%
\expandafter{#1{\ref{#2}}{\ref{#3}}{}{}{}{}}}%
- \def\@@setcpageref#1#2{%
- \old@@setcpageref{#1}{#2}%
+ \def\@@@setcpageref#1#2{%
+ \old@@@setcpageref{#1}{#2}%
\expandafter\g at addto@macro\expandafter{%
\expandafter\cref at poorman@text\expandafter}%
\expandafter{#1{\pageref{#2}}{}{}}}%
- \def\@@setcpagerefrange#1#2#3{%
- \old@@setcpagerefrange{#1}{#2}{#3}%
+ \def\@@@setcpagerefrange#1#2#3{%
+ \old@@@setcpagerefrange{#1}{#2}{#3}%
\expandafter\g at addto@macro%
\expandafter{\expandafter\cref at poorman@text\expandafter}%
\expandafter{#1{\pageref{#2}}{\pageref{#3}}{}{}{}{}}}%
\fi% end of hyperref test
- \let\old@@setnamecref\@@setnamecref%
- \def\@@setnamecref#1#2{%
- \old@@setnamecref{#1}{#2}%
+ \let\old@@@setnamecref\@@@setnamecref%
+ \def\@@@setnamecref#1#2{%
+ \old@@@setnamecref{#1}{#2}%
\expandafter\def\expandafter\@tempa\expandafter{#1}%
\def\@tempb{#2}%
\expandafter\expandafter\expandafter\g at addto@macro%
@@ -3603,16 +3688,16 @@
\fi%
\fi}%
\@tempa#1\@nil}%
- \def\@@setvpageref#1[#2]#3{%
+ \def\@@@setvpageref#1[#2]#3{%
\cref at old@@vpageref{#1}[#2]{#3}%
\g at addto@macro\cref at poorman@text{\vpageref{#3}}}%
- \def\@@setvpagerefrange[#1]#2#3{%
+ \def\@@@setvpagerefrange[#1]#2#3{%
\vpagerefrange[#1]{#2}{#3}%
\g at addto@macro\cref at poorman@text{\vpagerefrange{#2}{#3}}}%
- \def\@@setfullpageref#1{%
+ \def\@@@setfullpageref#1{%
\reftextfaraway{#1}%
\g at addto@macro\cref at poorman@text{\reftextfaraway{#1}}}%
- \def\@@setfullpagerefrange#1#2{%
+ \def\@@@setfullpagerefrange#1#2{%
\reftextpagerange{#1}{#2}%
\g at addto@macro\cref at poorman@text{\reftextpagerange{#1}{#2}}}%
\def\@setcref at space{ % space here is deliberate
@@ -7163,7 +7248,7 @@
\crefname{subfigure}{Figur}{Figur}%
\fi%
\crefname{page}{Sida}{Sida}%
- \crefname{table}{Tablell}{Tabell}%
+ \crefname{table}{Tabell}{Tabell}%
\crefname{subtable}{Tabell}{Tabell}%
\crefname{part}{Del}{Del}%
\crefname{chapter}{Kapitel}{Kapitel}%
@@ -7205,7 +7290,7 @@
\crefname{subfigure}{figur}{figur}%
\crefname{page}{sida}{sida}%
\fi%
- \crefname{table}{tablell}{tabell}%
+ \crefname{table}{tabell}{tabell}%
\crefname{subtable}{tabell}{tabell}%
\crefname{part}{del}{del}%
\crefname{chapter}{kapitel}{kapitel}%
@@ -7458,6 +7543,207 @@
\crefname{listing}{listagem}{listagens}%
\crefname{line}{linha}{linhas}%
\fi}% end \cref at addlangagedefs
+\DeclareOption{catalan}{%
+ \AtBeginDocument{%
+ \def\crefrangeconjunction at preamble{ a\nobreakspace}%
+ \def\crefrangepreconjunction at preamble{}%
+ \def\crefrangepostconjunction at preamble{}%
+ \def\crefpairconjunction at preamble{ i\nobreakspace}%
+ \def\crefmiddleconjunction at preamble{, }%
+ \def\creflastconjunction at preamble{ i\nobreakspace}%
+ \def\crefpairgroupconjunction at preamble{ i\nobreakspace}%
+ \def\crefmiddlegroupconjunction at preamble{, }%
+ \def\creflastgroupconjunction at preamble{ i\nobreakspace}%
+ %
+ \Crefname at preamble{equation}{Equaci\'o}{Equacions}%
+ \Crefname at preamble{figure}{Gr\`afic}{Gr\`afics}%
+ \Crefname at preamble{table}{Taula}{Taules}%
+ \Crefname at preamble{page}{P\`agina}{P\`agines}%
+ \Crefname at preamble{part}{Part}{Parts}%
+ \Crefname at preamble{chapter}{Cap\'itol}{Cap\'itols}%
+ \Crefname at preamble{section}{Secci\'o}{Seccions}%
+ \Crefname at preamble{appendix}{Ap\`endix}{Ap\`endixs}%
+ \Crefname at preamble{enumi}{Punt}{Punts}%
+ \Crefname at preamble{footnote}{Nota}{Notes}%
+ \Crefname at preamble{theorem}{Teorema}{Teoremes}%
+ \Crefname at preamble{lemma}{Lema}{Lemes}%
+ \Crefname at preamble{corollary}{Coro\lgem ari}{Coro\lgem aris}%
+ \Crefname at preamble{proposition}{Proposici\'o}{Proposicions}%
+ \Crefname at preamble{definition}{Definici\'o}{Definicions}%
+ \Crefname at preamble{result}{Resultat}{Resultats}%
+ \Crefname at preamble{example}{Exemple}{Exemples}%
+ \Crefname at preamble{remark}{Observaci\'o}{Observacions}%
+ \Crefname at preamble{note}{Nota}{Notes}%
+ \Crefname at preamble{algorithm}{Algorisme}{Algorismes}%
+ \Crefname at preamble{listing}{Llistat}{Llistats}%
+ \Crefname at preamble{line}{L\'inia}{L\'inies}%
+ %
+ \if at cref@capitalise% capitalise set
+ \crefname at preamble{equation}{Equaci\'o}{Equacions}%
+ \crefname at preamble{figure}{Gr\`afic}{Gr\`afics}%
+ \crefname at preamble{table}{Taula}{Taules}%
+ \crefname at preamble{page}{P\`agina}{P\`agines}%
+ \crefname at preamble{part}{Part}{Parts}%
+ \crefname at preamble{chapter}{Cap\'itol}{Cap\'itols}%
+ \crefname at preamble{section}{Secci\'o}{Seccions}%
+ \crefname at preamble{appendix}{Ap\`endix}{Ap\`endixs}%
+ \crefname at preamble{enumi}{Punt}{Punts}%
+ \crefname at preamble{footnote}{Nota}{Notes}%
+ \crefname at preamble{theorem}{Teorema}{Teoremes}%
+ \crefname at preamble{lemma}{Lema}{Lemes}%
+ \crefname at preamble{corollary}{Coro\lgem ari}{Coro\lgem aris}%
+ \crefname at preamble{proposition}{Proposici\'o}{Proposicions}%
+ \crefname at preamble{definition}{Definici\'o}{Definicions}%
+ \crefname at preamble{result}{Resultat}{Resultats}%
+ \crefname at preamble{example}{Exemple}{Exemples}%
+ \crefname at preamble{remark}{Observaci\'o}{Observacions}%
+ \crefname at preamble{note}{Nota}{Notes}%
+ \crefname at preamble{algorithm}{Algorisme}{Algorismes}%
+ \crefname at preamble{listing}{Llistat}{Llistats}%
+ \crefname at preamble{line}{L\'inia}{L\'inies}%
+ %
+ \else% capitalise unset
+ \crefname at preamble{equation}{equaci\'o}{equacions}%
+ \crefname at preamble{figure}{gr\`afic}{gr\`afics}%
+ \crefname at preamble{table}{taula}{taules}%
+ \crefname at preamble{page}{p\`agina}{p\`agines}%
+ \crefname at preamble{part}{part}{parts}%
+ \crefname at preamble{chapter}{cap\'itol}{cap\'itols}%
+ \crefname at preamble{section}{secci\'o}{seccions}%
+ \crefname at preamble{appendix}{ap\`endix}{ap\`endixs}%
+ \crefname at preamble{enumi}{punt}{punts}%
+ \crefname at preamble{footnote}{nota}{notes}%
+ \crefname at preamble{theorem}{teorema}{teoremes}%
+ \crefname at preamble{lemma}{lema}{lemes}%
+ \crefname at preamble{corollary}{coro\lgem ari}{coro\lgem aris}%
+ \crefname at preamble{proposition}{proposici\'o}{proposicions}%
+ \crefname at preamble{definition}{definici\'o}{definicions}%
+ \crefname at preamble{result}{resultat}{resultats}%
+ \crefname at preamble{example}{exemple}{exemples}%
+ \crefname at preamble{remark}{observaci\'o}{observacions}%
+ \crefname at preamble{note}{nota}{notes}%
+ \crefname at preamble{algorithm}{algorisme}{algorismes}%
+ \crefname at preamble{listing}{llistat}{llistats}%
+ \crefname at preamble{line}{l\'inia}{l\'inies}%
+ \fi%
+ \def\cref at language{catalan}%
+ }}% end \AtBeginDocument and \DeclareOption
+\cref at addlanguagedefs{catalan}{%
+ \PackageInfo{cleveref}{loaded `catalan language definitions}%
+ \renewcommand{\crefrangeconjunction}{ a\nobreakspace}%
+ \renewcommand{\crefrangepreconjunction}{}%
+ \renewcommand{\crefrangepostconjunction}{}%
+ \renewcommand{\crefpairconjunction}{ i\nobreakspace}%
+ \renewcommand{\crefmiddleconjunction}{, }%
+ \renewcommand{\creflastconjunction}{ i\nobreakspace}%
+ \renewcommand{\crefpairgroupconjunction}{ i\nobreakspace}%
+ \renewcommand{\crefmiddlegroupconjunction}{, }%
+ \renewcommand{\creflastgroupconjunction}{ i\nobreakspace}%
+ %
+ \Crefname{equation}{Equaci\'o}{Equacions}%
+ \Crefname{figure}{Gr\`afic}{Gr\`afics}%
+ \Crefname{subfigure}{Gr\`afic}{Gr\`afics}%
+ \Crefname{table}{Taula}{Taules}%
+ \Crefname{subtable}{Taula}{Taules}%
+ \Crefname{page}{P\`agina}{P\`aginas}%
+ \Crefname{part}{Part}{Parts}%
+ \Crefname{chapter}{Cap\'itol}{Cap\'itols}%
+ \Crefname{section}{Secci\'o}{Seccions}%
+ \Crefname{subsection}{Secci\'o}{Seccions}%
+ \Crefname{subsubsection}{Secci\'o}{Seccions}%
+ \Crefname{appendix}{Ap\`endix}{Ap\`endixs}%
+ \Crefname{subappendix}{Ap\`endix}{Ap\`endixs}%
+ \Crefname{subsubappendix}{Ap\`endix}{Ap\`endixs}%
+ \Crefname{subsubsubappendix}{Ap\`endix}{Ap\`endixs}%
+ \Crefname{enumi}{Punt}{Punts}%
+ \Crefname{enumii}{Punt}{Punts}%
+ \Crefname{enumiii}{Punt}{Punts}%
+ \Crefname{enumiv}{Punt}{Punts}%
+ \Crefname{enumv}{Punt}{Punts}%
+ \Crefname{footnote}{Nota}{Notes}%
+ \Crefname{theorem}{Teorema}{Teoremes}%
+ \Crefname{lemma}{Lema}{Lemes}%
+ \Crefname{corollary}{Coro\lgem ari}{Coro\lgem aris}%
+ \Crefname{proposition}{Proposici\'o}{Proposicions}%
+ \Crefname{definition}{Definici\'o}{Definicions}%
+ \Crefname{result}{Resultat}{Resultats}%
+ \Crefname{example}{Exemple}{Exemples}%
+ \Crefname{remark}{Observaci\'o}{Observacions}%
+ \Crefname{note}{Nota}{Notes}%
+ \Crefname{algorithm}{Algorisme}{Algorismes}%
+ \Crefname{listing}{Llistat}{Llistats}%
+ \Crefname{line}{L\'inia}{L\'inies}%
+ %
+ \if at cref@capitalise% capitalise set
+ \crefname{equation}{Equaci\'o}{Equacions}%
+ \crefname{figure}{Gr\`afic}{Gr\`afics}%
+ \crefname{subfigure}{Gr\`afic}{Gr\`afics}%
+ \crefname{table}{Taula}{Taules}%
+ \crefname{subtable}{Taula}{Taules}%
+ \crefname{page}{P\`agina}{P\`aginas}%
+ \crefname{part}{Part}{Parts}%
+ \crefname{chapter}{Cap\'itol}{Cap\'itols}%
+ \crefname{section}{Secci\'o}{Seccions}%
+ \crefname{subsection}{Secci\'o}{Seccions}%
+ \crefname{subsubsection}{Secci\'o}{Seccions}%
+ \crefname{appendix}{Ap\`endix}{Ap\`endixs}%
+ \crefname{subappendix}{Ap\`endix}{Ap\`endixs}%
+ \crefname{subsubappendix}{Ap\`endix}{Ap\`endixs}%
+ \crefname{subsubsubappendix}{Ap\`endix}{Ap\`endixs}%
+ \crefname{enumi}{Punt}{Punts}%
+ \crefname{enumii}{Punt}{Punts}%
+ \crefname{enumiii}{Punt}{Punts}%
+ \crefname{enumiv}{Punt}{Punts}%
+ \crefname{enumv}{Punt}{Punts}%
+ \crefname{footnote}{Nota}{Notes}%
+ \crefname{theorem}{Teorema}{Teoremes}%
+ \crefname{lemma}{Lema}{Lemes}%
+ \crefname{corollary}{Coro\lgem ari}{Coro\lgem aris}%
+ \crefname{proposition}{Proposici\'o}{Proposicions}%
+ \crefname{definition}{Definici\'o}{Definicions}%
+ \crefname{result}{Resultat}{Resultats}%
+ \crefname{example}{Exemple}{Exemples}%
+ \crefname{remark}{Observaci\'o}{Observacions}%
+ \crefname{note}{Nota}{Notes}%
+ \crefname{algorithm}{Algorisme}{Algorismes}%
+ \crefname{listing}{Llistat}{Llistats}%
+ \crefname{line}{L\'inia}{L\'inies}%
+ %
+ \else% capitalise unset
+ \crefname{equation}{equaci\'o}{equacions}%
+ \crefname{figure}{gr\`afic}{gr\`afics}%
+ \crefname{subfigure}{gr\`afic}{gr\`afics}%
+ \crefname{table}{taula}{taules}%
+ \crefname{subtable}{taula}{taules}%
+ \crefname{page}{p\`agina}{p\`aginas}%
+ \crefname{part}{part}{parts}%
+ \crefname{chapter}{cap\'itol}{cap\'itols}%
+ \crefname{section}{secci\'o}{seccions}%
+ \crefname{subsection}{secci\'o}{seccions}%
+ \crefname{subsubsection}{secci\'o}{seccions}%
+ \crefname{appendix}{ap\`endix}{ap\`endixs}%
+ \crefname{subappendix}{ap\`endix}{ap\`endixs}%
+ \crefname{subsubappendix}{ap\`endix}{ap\`endixs}%
+ \crefname{subsubsubappendix}{ap\`endix}{ap\`endixs}%
+ \crefname{enumi}{punt}{punts}%
+ \crefname{enumii}{punt}{punts}%
+ \crefname{enumiii}{punt}{punts}%
+ \crefname{enumiv}{punt}{punts}%
+ \crefname{enumv}{punt}{punts}%
+ \crefname{footnote}{nota}{notes}%
+ \crefname{theorem}{teorema}{teoremes}%
+ \crefname{lemma}{lema}{lemes}%
+ \crefname{corollary}{coro\lgem ari}{coro\lgem aris}%
+ \crefname{proposition}{proposici\'o}{proposicions}%
+ \crefname{definition}{definici\'o}{definicions}%
+ \crefname{result}{resultat}{resultats}%
+ \crefname{example}{exemple}{exemples}%
+ \crefname{remark}{observaci\'o}{observacions}%
+ \crefname{note}{nota}{notes}%
+ \crefname{algorithm}{algorisme}{algorismes}%
+ \crefname{listing}{llistat}{llistats}%
+ \crefname{line}{l\'inia}{l\'inies}%
+ \fi}% end \cref at loadlanguagedefs
\edef\@curroptions{\@ptionlist{\@currname.\@currext}}%
\@expandtwoargs\in@{,capitalise,}{%
,\@classoptionslist,\@curroptions,}%
@@ -7481,7 +7767,6 @@
\else%
\creflabelformat{equation}{\textup{(#2#1#3)}}%
\fi%
-\@labelcrefdefinedefaultformats%
\@ifpackageloaded{polyglossia}%
{\ifcsdef{languagename}%
{\ExecuteOptions{\languagename}}%
@@ -7674,750 +7959,19 @@
\expandafter{\@tempa}}}{}%
\cref at stack@pop{\@tempstack}%
\cref at isstackfull{\@tempstack}}%
- \@ifundefined{cref at subsection@name}{%
- \let\cref at subsection@name\cref at section@name%
- \let\cref at subsection@name at plural\cref at section@name at plural}{}%
- \@ifundefined{Cref at subsection@name}{%
- \let\Cref at subsection@name\Cref at section@name%
- \let\Cref at subsection@name at plural\Cref at section@name at plural}{}%
- \@ifundefined{cref at subsection@format}{%
- \let\cref at subsection@format\cref at section@format}{}%
- \@ifundefined{Cref at subsection@format}{%
- \let\Cref at subsection@format\Cref at section@format}{}%
- \@ifundefined{crefrange at subsection@format}{%
- \let\crefrange at subsection@format%
- \crefrange at section@format}{}%
- \@ifundefined{Crefrange at subsection@format}{%
- \let\Crefrange at subsection@format%
- \Crefrange at section@format}{}%
- \@ifundefined{cref at subsection@format at first}{%
- \let\cref at subsection@format at first%
- \cref at section@format at first}{}%
- \@ifundefined{Cref at subsection@format at first}{%
- \let\Cref at subsection@format at first%
- \Cref at section@format at first}{}%
- \@ifundefined{cref at subsection@format at second}{%
- \let\cref at subsection@format at second%
- \cref at section@format at second}{}%
- \@ifundefined{Cref at subsection@format at second}{%
- \let\Cref at subsection@format at second%
- \Cref at section@format at second}{}%
- \@ifundefined{cref at subsection@format at middle}{%
- \let\cref at subsection@format at middle%
- \cref at section@format at middle}{}%
- \@ifundefined{Cref at subsection@format at middle}{%
- \let\Cref at subsection@format at middle%
- \Cref at section@format at middle}{}%
- \@ifundefined{cref at subsection@format at last}{%
- \let\cref at subsection@format at last%
- \cref at section@format at last}{}%
- \@ifundefined{Cref at subsection@format at last}{%
- \let\Cref at subsection@format at last%
- \Cref at section@format at last}{}%
- \@ifundefined{crefrange at subsection@format at first}{%
- \let\crefrange at subsection@format at first%
- \crefrange at section@format at first}{}%
- \@ifundefined{Crefrange at subsection@format at first}{%
- \let\Crefrange at subsection@format at first%
- \Crefrange at section@format at first}{}%
- \@ifundefined{crefrange at subsection@format at second}{%
- \let\crefrange at subsection@format at second%
- \crefrange at section@format at second}{}%
- \@ifundefined{Crefrange at subsection@format at second}{%
- \let\Crefrange at subsection@format at second%
- \Crefrange at section@format at second}{}%
- \@ifundefined{crefrange at subsection@format at middle}{%
- \let\crefrange at subsection@format at middle%
- \crefrange at section@format at middle}{}%
- \@ifundefined{Crefrange at subsection@format at middle}{%
- \let\Crefrange at subsection@format at middle%
- \Crefrange at section@format at middle}{}%
- \@ifundefined{crefrange at subsection@format at last}{%
- \let\crefrange at subsection@format at last%
- \crefrange at section@format at last}{}%
- \@ifundefined{Crefrange at subsection@format at last}{%
- \let\Crefrange at subsection@format at last%
- \Crefrange at section@format at last}{}%
- \@ifundefined{cref at subsubsection@name}{%
- \let\cref at subsubsection@name\cref at section@name%
- \let\cref at subsubsection@name at plural\cref at section@name at plural}{}%
- \@ifundefined{Cref at subsection@name}{%
- \let\Cref at subsection@name\Cref at section@name%
- \let\Cref at subsection@name at plural\Cref at section@name at plural}{}%
- \@ifundefined{cref at subsubsection@format}{%
- \let\cref at subsubsection@format%
- \cref at subsection@format}{}%
- \@ifundefined{Cref at subsubsection@format}{%
- \let\Cref at subsubsection@format%
- \Cref at subsection@format}{}%
- \@ifundefined{crefrange at subsubsection@format}{%
- \let\crefrange at subsubsection@format%
- \crefrange at subsection@format}{}%
- \@ifundefined{Crefrange at subsubsection@format}{%
- \let\Crefrange at subsubsection@format%
- \Crefrange at subsection@format}{}%
- \@ifundefined{cref at subsubsection@format at first}{%
- \let\cref at subsubsection@format at first%
- \cref at subsection@format at first}{}%
- \@ifundefined{Cref at subsubsection@format at first}{%
- \let\Cref at subsubsection@format at first%
- \Cref at subsection@format at first}{}%
- \@ifundefined{cref at subsubsection@format at second}{%
- \let\cref at subsubsection@format at second%
- \cref at subsection@format at second}{}%
- \@ifundefined{Cref at subsubsection@format at second}{%
- \let\Cref at subsubsection@format at second%
- \Cref at subsection@format at second}{}%
- \@ifundefined{cref at subsubsection@format at middle}{%
- \let\cref at subsubsection@format at middle%
- \cref at subsection@format at middle}{}%
- \@ifundefined{Cref at subsubsection@format at middle}{%
- \let\Cref at subsubsection@format at middle%
- \Cref at subsection@format at middle}{}%
- \@ifundefined{cref at subsubsection@format at last}{%
- \let\cref at subsubsection@format at last%
- \cref at subsection@format at last}{}%
- \@ifundefined{Cref at subsubsection@format at last}{%
- \let\Cref at subsubsection@format at last%
- \Cref at subsection@format at last}{}%
- \@ifundefined{crefrange at subsubsection@format at first}{%
- \let\crefrange at subsubsection@format at first%
- \crefrange at subsection@format at first}{}%
- \@ifundefined{Crefrange at subsubsection@format at first}{%
- \let\Crefrange at subsubsection@format at first%
- \Crefrange at subsection@format at first}{}%
- \@ifundefined{crefrange at subsubsection@format at second}{%
- \let\crefrange at subsubsection@format at second%
- \crefrange at subsection@format at second}{}%
- \@ifundefined{Crefrange at subsubsection@format at second}{%
- \let\Crefrange at subsubsection@format at second%
- \Crefrange at subsection@format at second}{}%
- \@ifundefined{crefrange at subsubsection@format at middle}{%
- \let\crefrange at subsubsection@format at middle%
- \crefrange at subsection@format at middle}{}%
- \@ifundefined{Crefrange at subsubsection@format at middle}{%
- \let\Crefrange at subsubsection@format at middle%
- \Crefrange at subsection@format at middle}{}%
- \@ifundefined{crefrange at subsubsection@format at last}{%
- \let\crefrange at subsubsection@format at last%
- \crefrange at subsection@format at last}{}%
- \@ifundefined{Crefrange at subsubsection@format at last}{%
- \let\Crefrange at subsubsection@format at last%
- \Crefrange at subsection@format at last}{}%
- \@ifundefined{cref at subappendix@name}{%
- \let\cref at subappendix@name\cref at appendix@name%
- \let\cref at subappendix@name at plural%
- \cref at appendix@name at plural}{}%
- \@ifundefined{Cref at subappendix@name}{%
- \let\Cref at subappendix@name\Cref at section@name%
- \let\Cref at subappendixsection@name at plural%
- \Cref at appendix@name at plural}{}%
- \@ifundefined{cref at subappendix@format}{%
- \let\cref at subappendix@format\cref at appendix@format}{}%
- \@ifundefined{Cref at subappendix@format}{%
- \let\Cref at subappendix@format\Cref at appendix@format}{}%
- \@ifundefined{crefrange at subappendix@format}{%
- \let\crefrange at subappendix@format%
- \crefrange at appendix@format}{}%
- \@ifundefined{Crefrange at subappendix@format}{%
- \let\Crefrange at subappendix@format%
- \Crefrange at appendix@format}{}%
- \@ifundefined{cref at subappendix@format at first}{%
- \let\cref at subappendix@format at first%
- \cref at appendix@format at first}{}%
- \@ifundefined{Cref at subappendix@format at first}{%
- \let\Cref at subappendix@format at first%
- \Cref at appendix@format at first}{}%
- \@ifundefined{cref at subappendix@format at second}{%
- \let\cref at subappendix@format at second%
- \cref at appendix@format at second}{}%
- \@ifundefined{Cref at subappendix@format at second}{%
- \let\Cref at subappendix@format at second%
- \Cref at appendix@format at second}{}%
- \@ifundefined{cref at subappendix@format at middle}{%
- \let\cref at subappendix@format at middle%
- \cref at appendix@format at middle}{}%
- \@ifundefined{Cref at subappendix@format at middle}{%
- \let\Cref at subappendix@format at middle%
- \Cref at appendix@format at middle}{}%
- \@ifundefined{cref at subappendix@format at last}{%
- \let\cref at subappendix@format at last%
- \cref at appendix@format at last}{}%
- \@ifundefined{Cref at subappendix@format at last}{%
- \let\Cref at subappendix@format at last%
- \Cref at appendix@format at last}{}%
- \@ifundefined{crefrange at subappendix@format at first}{%
- \let\crefrange at subappendix@format at first%
- \crefrange at appendix@format at first}{}%
- \@ifundefined{Crefrange at subappendix@format at first}{%
- \let\Crefrange at subappendix@format at first%
- \Crefrange at appendix@format at first}{}%
- \@ifundefined{crefrange at subappendix@format at second}{%
- \let\crefrange at subappendix@format at second%
- \crefrange at appendix@format at second}{}%
- \@ifundefined{Crefrange at subappendix@format at second}{%
- \let\Crefrange at subappendix@format at second%
- \Crefrange at appendix@format at second}{}%
- \@ifundefined{crefrange at subappendix@format at middle}{%
- \let\crefrange at subappendix@format at middle%
- \crefrange at appendix@format at middle}{}%
- \@ifundefined{Crefrange at subappendix@format at middle}{%
- \let\Crefrange at subappendix@format at middle%
- \Crefrange at appendix@format at middle}{}%
- \@ifundefined{crefrange at subappendix@format at last}{%
- \let\crefrange at subappendix@format at last%
- \crefrange at appendix@format at last}{}%
- \@ifundefined{Crefrange at subappendix@format at last}{%
- \let\Crefrange at subappendix@format at last%
- \Crefrange at appendix@format at last}{}%
- \@ifundefined{cref at subsubappendix@name}{%
- \let\cref at subsubappendix@name\cref at appendix@name%
- \let\cref at subsubappendix@name at plural%
- \cref at appendix@name at plural}{}%
- \@ifundefined{Cref at subsubappendix@name}{%
- \let\Cref at subsubappendix@name\Cref at section@name%
- \let\Cref at subsubappendixsection@name at plural%
- \Cref at appendix@name at plural}{}%
- \@ifundefined{cref at subsubappendix@format}{%
- \let\cref at subsubappendix@format%
- \cref at subappendix@format}{}%
- \@ifundefined{Cref at subsubappendix@format}{%
- \let\Cref at subsubappendix@format%
- \Cref at subappendix@format}{}%
- \@ifundefined{crefrange at subsubappendix@format}{%
- \let\crefrange at subsubappendix@format%
- \crefrange at subappendix@format}{}%
- \@ifundefined{Crefrange at subsubappendix@format}{%
- \let\Crefrange at subsubappendix@format%
- \Crefrange at subappendix@format}{}%
- \@ifundefined{cref at subsubappendix@format at first}{%
- \let\cref at subsubappendix@format at first%
- \cref at subappendix@format at first}{}%
- \@ifundefined{Cref at subsubappendix@format at first}{%
- \let\Cref at subsubappendix@format at first%
- \Cref at subappendix@format at first}{}%
- \@ifundefined{cref at subsubappendix@format at second}{%
- \let\cref at subsubappendix@format at second%
- \cref at subappendix@format at second}{}%
- \@ifundefined{Cref at subsubappendix@format at second}{%
- \let\Cref at subsubappendix@format at second%
- \Cref at subappendix@format at second}{}%
- \@ifundefined{cref at subsubappendix@format at middle}{%
- \let\cref at subsubappendix@format at middle%
- \cref at subappendix@format at middle}{}%
- \@ifundefined{Cref at subsubappendix@format at middle}{%
- \let\Cref at subsubappendix@format at middle%
- \Cref at subappendix@format at middle}{}%
- \@ifundefined{cref at subsubappendix@format at last}{%
- \let\cref at subsubappendix@format at last%
- \cref at subappendix@format at last}{}%
- \@ifundefined{Cref at subsubappendix@format at last}{%
- \let\Cref at subsubappendix@format at last%
- \Cref at subappendix@format at last}{}%
- \@ifundefined{crefrange at subsubappendix@format at first}{%
- \let\crefrange at subsubappendix@format at first%
- \crefrange at subappendix@format at first}{}%
- \@ifundefined{Crefrange at subsubappendix@format at first}{%
- \let\Crefrange at subsubappendix@format at first%
- \Crefrange at subappendix@format at first}{}%
- \@ifundefined{crefrange at subsubappendix@format at second}{%
- \let\crefrange at subsubappendix@format at second%
- \crefrange at subappendix@format at second}{}%
- \@ifundefined{Crefrange at subsubappendix@format at second}{%
- \let\Crefrange at subsubappendix@format at second%
- \Crefrange at subappendix@format at second}{}%
- \@ifundefined{crefrange at subsubappendix@format at middle}{%
- \let\crefrange at subsubappendix@format at middle%
- \crefrange at subappendix@format at middle}{}%
- \@ifundefined{Crefrange at subsubappendix@format at middle}{%
- \let\Crefrange at subsubappendix@format at middle%
- \Crefrange at subappendix@format at middle}{}%
- \@ifundefined{crefrange at subsubappendix@format at last}{%
- \let\crefrange at subsubappendix@format at last%
- \crefrange at subappendix@format at last}{}%
- \@ifundefined{Crefrange at subsubappendix@format at last}{%
- \let\Crefrange at subsubappendix@format at last%
- \Crefrange at subappendix@format at last}{}%
- \@ifundefined{cref at subsubsubappendix@format}{%
- \let\cref at subsubsubappendix@format%
- \cref at subsubappendix@format}{}%
- \@ifundefined{Cref at subsubsubappendix@format}{%
- \let\Cref at subsubsubappendix@format%
- \Cref at subsubappendix@format}{}%
- \@ifundefined{crefrange at subsubsubappendix@format}{%
- \let\crefrange at subsubsubappendix@format%
- \crefrange at subsubappendix@format}{}%
- \@ifundefined{Crefrange at subsubsubappendix@format}{%
- \let\Crefrange at subsubsubappendix@format%
- \Crefrange at subsubappendix@format}{}%
- \@ifundefined{cref at subsubsubappendix@format at first}{%
- \let\cref at subsubsubappendix@format at first%
- \cref at subsubappendix@format at first}{}%
- \@ifundefined{Cref at subsubsubappendix@format at first}{%
- \let\Cref at subsubsubappendix@format at first%
- \Cref at subsubappendix@format at first}{}%
- \@ifundefined{cref at subsubsubappendix@format at second}{%
- \let\cref at subsubsubappendix@format at second%
- \cref at subsubappendix@format at second}{}%
- \@ifundefined{Cref at subsubsubappendix@format at second}{%
- \let\Cref at subsubsubappendix@format at second%
- \Cref at subsubappendix@format at second}{}%
- \@ifundefined{cref at subsubsubappendix@format at middle}{%
- \let\cref at subsubsubappendix@format at middle%
- \cref at subsubappendix@format at middle}{}%
- \@ifundefined{Cref at subsubsubappendix@format at middle}{%
- \let\Cref at subsubsubappendix@format at middle%
- \Cref at subsubappendix@format at middle}{}%
- \@ifundefined{cref at subsubsubappendix@format at last}{%
- \let\cref at subsubsubappendix@format at last%
- \cref at subsubappendix@format at last}{}%
- \@ifundefined{Cref at subsubsubappendix@format at last}{%
- \let\Cref at subsubsubappendix@format at last%
- \Cref at subsubappendix@format at last}{}%
- \@ifundefined{crefrange at subsubsubappendix@format at first}{%
- \let\crefrange at subsubsubappendix@format at first%
- \crefrange at subsubappendix@format at first}{}%
- \@ifundefined{Crefrange at subsubsubappendix@format at first}{%
- \let\Crefrange at subsubsubappendix@format at first%
- \Crefrange at subsubappendix@format at first}{}%
- \@ifundefined{crefrange at subsubsubappendix@format at second}{%
- \let\crefrange at subsubsubappendix@format at second%
- \crefrange at subsubappendix@format at second}{}%
- \@ifundefined{Crefrange at subsubsubappendix@format at second}{%
- \let\Crefrange at subsubsubappendix@format at second%
- \Crefrange at subsubappendix@format at second}{}%
- \@ifundefined{crefrange at subsubsubappendix@format at middle}{%
- \let\crefrange at subsubsubappendix@format at middle%
- \crefrange at subsubappendix@format at middle}{}%
- \@ifundefined{Crefrange at subsubsubappendix@format at middle}{%
- \let\Crefrange at subsubsubappendix@format at middle%
- \Crefrange at subsubappendix@format at middle}{}%
- \@ifundefined{crefrange at subsubsubappendix@format at last}{%
- \let\crefrange at subsubsubappendix@format at last%
- \crefrange at subsubappendix@format at last}{}%
- \@ifundefined{Crefrange at subsubsubappendix@format at last}{%
- \let\Crefrange at subsubsubappendix@format at last%
- \Crefrange at subsubappendix@format at last}{}%
- \@ifundefined{cref at subfigure@format}{%
- \let\cref at subfigure@format%
- \cref at figure@format}{}%
- \@ifundefined{Cref at subfigure@format}{%
- \let\Cref at subfigure@format%
- \Cref at figure@format}{}%
- \@ifundefined{crefrange at subfigure@format}{%
- \let\crefrange at subfigure@format%
- \crefrange at figure@format}{}%
- \@ifundefined{Crefrange at subfigure@format}{%
- \let\Crefrange at subfigure@format%
- \Crefrange at figure@format}{}%
- \@ifundefined{cref at subfigure@format at first}{%
- \let\cref at subfigure@format at first%
- \cref at figure@format at first}{}%
- \@ifundefined{Cref at subfigure@format at first}{%
- \let\Cref at subfigure@format at first%
- \Cref at figure@format at first}{}%
- \@ifundefined{cref at subfigure@format at second}{%
- \let\cref at subfigure@format at second%
- \cref at figure@format at second}{}%
- \@ifundefined{Cref at subfigure@format at second}{%
- \let\Cref at subfigure@format at second%
- \Cref at figure@format at second}{}%
- \@ifundefined{cref at subfigure@format at middle}{%
- \let\cref at subfigure@format at middle%
- \cref at figure@format at middle}{}%
- \@ifundefined{Cref at subfigure@format at middle}{%
- \let\Cref at subfigure@format at middle%
- \Cref at figure@format at middle}{}%
- \@ifundefined{cref at subfigure@format at last}{%
- \let\cref at subfigure@format at last%
- \cref at figure@format at last}{}%
- \@ifundefined{Cref at subfigure@format at last}{%
- \let\Cref at subfigure@format at last%
- \Cref at figure@format at last}{}%
- \@ifundefined{crefrange at subfigure@format at first}{%
- \let\crefrange at subfigure@format at first%
- \crefrange at figure@format at first}{}%
- \@ifundefined{Crefrange at subfigure@format at first}{%
- \let\Crefrange at subfigure@format at first%
- \Crefrange at figure@format at first}{}%
- \@ifundefined{crefrange at subfigure@format at second}{%
- \let\crefrange at subfigure@format at second%
- \crefrange at figure@format at second}{}%
- \@ifundefined{Crefrange at subfigure@format at second}{%
- \let\Crefrange at subfigure@format at second%
- \Crefrange at figure@format at second}{}%
- \@ifundefined{crefrange at subfigure@format at middle}{%
- \let\crefrange at subfigure@format at middle%
- \crefrange at figure@format at middle}{}%
- \@ifundefined{Crefrange at subfigure@format at middle}{%
- \let\Crefrange at subfigure@format at middle%
- \Crefrange at figure@format at middle}{}%
- \@ifundefined{crefrange at subfigure@format at last}{%
- \let\crefrange at subfigure@format at last%
- \crefrange at figure@format at last}{}%
- \@ifundefined{Crefrange at subfigure@format at last}{%
- \let\Crefrange at subfigure@format at last%
- \Crefrange at figure@format at last}{}%
- \@ifundefined{cref at subtable@format}{%
- \let\cref at subtable@format%
- \cref at table@format}{}%
- \@ifundefined{Cref at subtable@format}{%
- \let\Cref at subtable@format%
- \Cref at table@format}{}%
- \@ifundefined{crefrange at subtable@format}{%
- \let\crefrange at subtable@format%
- \crefrange at table@format}{}%
- \@ifundefined{Crefrange at subtable@format}{%
- \let\Crefrange at subtable@format%
- \Crefrange at table@format}{}%
- \@ifundefined{cref at subtable@format at first}{%
- \let\cref at subtable@format at first%
- \cref at table@format at first}{}%
- \@ifundefined{Cref at subtable@format at first}{%
- \let\Cref at subtable@format at first%
- \Cref at table@format at first}{}%
- \@ifundefined{cref at subtable@format at second}{%
- \let\cref at subtable@format at second%
- \cref at table@format at second}{}%
- \@ifundefined{Cref at subtable@format at second}{%
- \let\Cref at subtable@format at second%
- \Cref at table@format at second}{}%
- \@ifundefined{cref at subtable@format at middle}{%
- \let\cref at subtable@format at middle%
- \cref at table@format at middle}{}%
- \@ifundefined{Cref at subtable@format at middle}{%
- \let\Cref at subtable@format at middle%
- \Cref at table@format at middle}{}%
- \@ifundefined{cref at subtable@format at last}{%
- \let\cref at subtable@format at last%
- \cref at table@format at last}{}%
- \@ifundefined{Cref at subtable@format at last}{%
- \let\Cref at subtable@format at last%
- \Cref at table@format at last}{}%
- \@ifundefined{crefrange at subtable@format at first}{%
- \let\crefrange at subtable@format at first%
- \crefrange at table@format at first}{}%
- \@ifundefined{Crefrange at subtable@format at first}{%
- \let\Crefrange at subtable@format at first%
- \Crefrange at table@format at first}{}%
- \@ifundefined{crefrange at subtable@format at second}{%
- \let\crefrange at subtable@format at second%
- \crefrange at table@format at second}{}%
- \@ifundefined{Crefrange at subtable@format at second}{%
- \let\Crefrange at subtable@format at second%
- \Crefrange at table@format at second}{}%
- \@ifundefined{crefrange at subtable@format at middle}{%
- \let\crefrange at subtable@format at middle%
- \crefrange at table@format at middle}{}%
- \@ifundefined{Crefrange at subtable@format at middle}{%
- \let\Crefrange at subtable@format at middle%
- \Crefrange at table@format at middle}{}%
- \@ifundefined{crefrange at subtable@format at last}{%
- \let\crefrange at subtable@format at last%
- \crefrange at table@format at last}{}%
- \@ifundefined{Crefrange at subtable@format at last}{%
- \let\Crefrange at subtable@format at last%
- \Crefrange at table@format at last}{}%
- \@ifundefined{cref at subequation@format}{%
- \let\cref at subequation@format%
- \cref at equation@format}{}%
- \@ifundefined{Cref at subequation@format}{%
- \let\Cref at subequation@format%
- \Cref at equation@format}{}%
- \@ifundefined{crefrange at subequation@format}{%
- \let\crefrange at subequation@format%
- \crefrange at equation@format}{}%
- \@ifundefined{Crefrange at subequation@format}{%
- \let\Crefrange at subequation@format%
- \Crefrange at equation@format}{}%
- \@ifundefined{cref at subequation@format at first}{%
- \let\cref at subequation@format at first%
- \cref at equation@format at first}{}%
- \@ifundefined{Cref at subequation@format at first}{%
- \let\Cref at subequation@format at first%
- \Cref at equation@format at first}{}%
- \@ifundefined{cref at subequation@format at second}{%
- \let\cref at subequation@format at second%
- \cref at equation@format at second}{}%
- \@ifundefined{Cref at subequation@format at second}{%
- \let\Cref at subequation@format at second%
- \Cref at equation@format at second}{}%
- \@ifundefined{cref at subequation@format at middle}{%
- \let\cref at subequation@format at middle%
- \cref at equation@format at middle}{}%
- \@ifundefined{Cref at subequation@format at middle}{%
- \let\Cref at subequation@format at middle%
- \Cref at equation@format at middle}{}%
- \@ifundefined{cref at subequation@format at last}{%
- \let\cref at subequation@format at last%
- \cref at equation@format at last}{}%
- \@ifundefined{Cref at subequation@format at last}{%
- \let\Cref at subequation@format at last%
- \Cref at equation@format at last}{}%
- \@ifundefined{crefrange at subequation@format at first}{%
- \let\crefrange at subequation@format at first%
- \crefrange at equation@format at first}{}%
- \@ifundefined{Crefrange at subequation@format at first}{%
- \let\Crefrange at subequation@format at first%
- \Crefrange at equation@format at first}{}%
- \@ifundefined{crefrange at subequation@format at second}{%
- \let\crefrange at subequation@format at second%
- \crefrange at equation@format at second}{}%
- \@ifundefined{Crefrange at subequation@format at second}{%
- \let\Crefrange at subequation@format at second%
- \Crefrange at equation@format at second}{}%
- \@ifundefined{crefrange at subequation@format at middle}{%
- \let\crefrange at subequation@format at middle%
- \crefrange at equation@format at middle}{}%
- \@ifundefined{Crefrange at subequation@format at middle}{%
- \let\Crefrange at subequation@format at middle%
- \Crefrange at equation@format at middle}{}%
- \@ifundefined{crefrange at subequation@format at last}{%
- \let\crefrange at subequation@format at last%
- \crefrange at equation@format at last}{}%
- \@ifundefined{Crefrange at subequation@format at last}{%
- \let\Crefrange at subequation@format at last%
- \Crefrange at equation@format at last}{}%
- \@ifundefined{cref at enumii@format}{%
- \let\cref at enumii@format%
- \cref at enumi@format}{}%
- \@ifundefined{Cref at enumii@format}{%
- \let\Cref at enumii@format%
- \Cref at enumi@format}{}%
- \@ifundefined{crefrange at enumii@format}{%
- \let\crefrange at enumii@format%
- \crefrange at enumi@format}{}%
- \@ifundefined{Crefrange at enumii@format}{%
- \let\Crefrange at enumii@format%
- \Crefrange at enumi@format}{}%
- \@ifundefined{cref at enumii@format at first}{%
- \let\cref at enumii@format at first%
- \cref at enumi@format at first}{}%
- \@ifundefined{Cref at enumii@format at first}{%
- \let\Cref at enumii@format at first%
- \Cref at enumi@format at first}{}%
- \@ifundefined{cref at enumii@format at second}{%
- \let\cref at enumii@format at second%
- \cref at enumi@format at second}{}%
- \@ifundefined{Cref at enumii@format at second}{%
- \let\Cref at enumii@format at second%
- \Cref at enumi@format at second}{}%
- \@ifundefined{cref at enumii@format at middle}{%
- \let\cref at enumii@format at middle%
- \cref at enumi@format at middle}{}%
- \@ifundefined{Cref at enumii@format at middle}{%
- \let\Cref at enumii@format at middle%
- \Cref at enumi@format at middle}{}%
- \@ifundefined{cref at enumii@format at last}{%
- \let\cref at enumii@format at last%
- \cref at enumi@format at last}{}%
- \@ifundefined{Cref at enumii@format at last}{%
- \let\Cref at enumii@format at last%
- \Cref at enumi@format at last}{}%
- \@ifundefined{crefrange at enumii@format at first}{%
- \let\crefrange at enumii@format at first%
- \crefrange at enumi@format at first}{}%
- \@ifundefined{Crefrange at enumii@format at first}{%
- \let\Crefrange at enumii@format at first%
- \Crefrange at enumi@format at first}{}%
- \@ifundefined{crefrange at enumii@format at second}{%
- \let\crefrange at enumii@format at second%
- \crefrange at enumi@format at second}{}%
- \@ifundefined{Crefrange at enumii@format at second}{%
- \let\Crefrange at enumii@format at second%
- \Crefrange at enumi@format at second}{}%
- \@ifundefined{crefrange at enumii@format at middle}{%
- \let\crefrange at enumii@format at middle%
- \crefrange at enumi@format at middle}{}%
- \@ifundefined{Crefrange at enumii@format at middle}{%
- \let\Crefrange at enumii@format at middle%
- \Crefrange at enumi@format at middle}{}%
- \@ifundefined{crefrange at enumii@format at last}{%
- \let\crefrange at enumii@format at last%
- \crefrange at enumi@format at last}{}%
- \@ifundefined{Crefrange at enumii@format at last}{%
- \let\Crefrange at enumii@format at last%
- \Crefrange at enumi@format at last}{}%
- \@ifundefined{cref at enumiii@format}{%
- \let\cref at enumiii@format%
- \cref at enumii@format}{}%
- \@ifundefined{Cref at enumiii@format}{%
- \let\Cref at enumiii@format%
- \Cref at enumii@format}{}%
- \@ifundefined{crefrange at enumiii@format}{%
- \let\crefrange at enumiii@format%
- \crefrange at enumii@format}{}%
- \@ifundefined{Crefrange at enumiii@format}{%
- \let\Crefrange at enumiii@format%
- \Crefrange at enumii@format}{}%
- \@ifundefined{cref at enumiii@format at first}{%
- \let\cref at enumiii@format at first%
- \cref at enumii@format at first}{}%
- \@ifundefined{Cref at enumiii@format at first}{%
- \let\Cref at enumiii@format at first%
- \Cref at enumii@format at first}{}%
- \@ifundefined{cref at enumiii@format at second}{%
- \let\cref at enumiii@format at second%
- \cref at enumii@format at second}{}%
- \@ifundefined{Cref at enumiii@format at second}{%
- \let\Cref at enumiii@format at second%
- \Cref at enumii@format at second}{}%
- \@ifundefined{cref at enumiii@format at middle}{%
- \let\cref at enumiii@format at middle%
- \cref at enumii@format at middle}{}%
- \@ifundefined{Cref at enumiii@format at middle}{%
- \let\Cref at enumiii@format at middle%
- \Cref at enumii@format at middle}{}%
- \@ifundefined{cref at enumiii@format at last}{%
- \let\cref at enumiii@format at last%
- \cref at enumii@format at last}{}%
- \@ifundefined{Cref at enumiii@format at last}{%
- \let\Cref at enumiii@format at last%
- \Cref at enumii@format at last}{}%
- \@ifundefined{crefrange at enumiii@format at first}{%
- \let\crefrange at enumiii@format at first%
- \crefrange at enumii@format at first}{}%
- \@ifundefined{Crefrange at enumiii@format at first}{%
- \let\Crefrange at enumiii@format at first%
- \Crefrange at enumii@format at first}{}%
- \@ifundefined{crefrange at enumiii@format at second}{%
- \let\crefrange at enumiii@format at second%
- \crefrange at enumii@format at second}{}%
- \@ifundefined{Crefrange at enumiii@format at second}{%
- \let\Crefrange at enumiii@format at second%
- \Crefrange at enumii@format at second}{}%
- \@ifundefined{crefrange at enumiii@format at middle}{%
- \let\crefrange at enumiii@format at middle%
- \crefrange at enumii@format at middle}{}%
- \@ifundefined{Crefrange at enumiii@format at middle}{%
- \let\Crefrange at enumiii@format at middle%
- \Crefrange at enumii@format at middle}{}%
- \@ifundefined{crefrange at enumiii@format at last}{%
- \let\crefrange at enumiii@format at last%
- \crefrange at enumii@format at last}{}%
- \@ifundefined{Crefrange at enumiii@format at last}{%
- \let\Crefrange at enumiii@format at last%
- \Crefrange at enumii@format at last}{}%
- \@ifundefined{cref at enumiv@format}{%
- \let\cref at enumiv@format%
- \cref at enumiii@format}{}%
- \@ifundefined{Cref at enumiv@format}{%
- \let\Cref at enumiv@format%
- \Cref at enumiii@format}{}%
- \@ifundefined{crefrange at enumiv@format}{%
- \let\crefrange at enumiv@format%
- \crefrange at enumiii@format}{}%
- \@ifundefined{Crefrange at enumiv@format}{%
- \let\Crefrange at enumiv@format%
- \Crefrange at enumiii@format}{}%
- \@ifundefined{cref at enumiv@format at first}{%
- \let\cref at enumiv@format at first%
- \cref at enumiii@format at first}{}%
- \@ifundefined{Cref at enumiv@format at first}{%
- \let\Cref at enumiv@format at first%
- \Cref at enumiii@format at first}{}%
- \@ifundefined{cref at enumiv@format at second}{%
- \let\cref at enumiv@format at second%
- \cref at enumiii@format at second}{}%
- \@ifundefined{Cref at enumiv@format at second}{%
- \let\Cref at enumiv@format at second%
- \Cref at enumiii@format at second}{}%
- \@ifundefined{cref at enumiv@format at middle}{%
- \let\cref at enumiv@format at middle%
- \cref at enumiii@format at middle}{}%
- \@ifundefined{Cref at enumiv@format at middle}{%
- \let\Cref at enumiv@format at middle%
- \Cref at enumiii@format at middle}{}%
- \@ifundefined{cref at enumiv@format at last}{%
- \let\cref at enumiv@format at last%
- \cref at enumiii@format at last}{}%
- \@ifundefined{Cref at enumiv@format at last}{%
- \let\Cref at enumiv@format at last%
- \Cref at enumiii@format at last}{}%
- \@ifundefined{crefrange at enumiv@format at first}{%
- \let\crefrange at enumiv@format at first%
- \crefrange at enumiii@format at first}{}%
- \@ifundefined{Crefrange at enumiv@format at first}{%
- \let\Crefrange at enumiv@format at first%
- \Crefrange at enumiii@format at first}{}%
- \@ifundefined{crefrange at enumiv@format at second}{%
- \let\crefrange at enumiv@format at second%
- \crefrange at enumiii@format at second}{}%
- \@ifundefined{Crefrange at enumiv@format at second}{%
- \let\Crefrange at enumiv@format at second%
- \Crefrange at enumiii@format at second}{}%
- \@ifundefined{crefrange at enumiv@format at middle}{%
- \let\crefrange at enumiv@format at middle%
- \crefrange at enumiii@format at middle}{}%
- \@ifundefined{Crefrange at enumiv@format at middle}{%
- \let\Crefrange at enumiv@format at middle%
- \Crefrange at enumiii@format at middle}{}%
- \@ifundefined{crefrange at enumiv@format at last}{%
- \let\crefrange at enumiv@format at last%
- \crefrange at enumiii@format at last}{}%
- \@ifundefined{Crefrange at enumiv@format at last}{%
- \let\Crefrange at enumiv@format at last%
- \Crefrange at enumiii@format at last}{}%
- \@ifundefined{cref at enumv@format}{%
- \let\cref at enumv@format%
- \cref at enumiv@format}{}%
- \@ifundefined{Cref at enumv@format}{%
- \let\Cref at enumv@format%
- \Cref at enumiv@format}{}%
- \@ifundefined{crefrange at enumv@format}{%
- \let\crefrange at enumv@format%
- \crefrange at enumiv@format}{}%
- \@ifundefined{Crefrange at enumv@format}{%
- \let\Crefrange at enumv@format%
- \Crefrange at enumiv@format}{}%
- \@ifundefined{cref at enumv@format at first}{%
- \let\cref at enumv@format at first%
- \cref at enumiv@format at first}{}%
- \@ifundefined{Cref at enumv@format at first}{%
- \let\Cref at enumv@format at first%
- \Cref at enumiv@format at first}{}%
- \@ifundefined{cref at enumv@format at second}{%
- \let\cref at enumv@format at second%
- \cref at enumiv@format at second}{}%
- \@ifundefined{Cref at enumv@format at second}{%
- \let\Cref at enumv@format at second%
- \Cref at enumiv@format at second}{}%
- \@ifundefined{cref at enumv@format at middle}{%
- \let\cref at enumv@format at middle%
- \cref at enumiv@format at middle}{}%
- \@ifundefined{Cref at enumv@format at middle}{%
- \let\Cref at enumv@format at middle%
- \Cref at enumiv@format at middle}{}%
- \@ifundefined{cref at enumv@format at last}{%
- \let\cref at enumv@format at last%
- \cref at enumiv@format at last}{}%
- \@ifundefined{Cref at enumv@format at last}{%
- \let\Cref at enumv@format at last%
- \Cref at enumiv@format at last}{}%
- \@ifundefined{crefrange at enumv@format at first}{%
- \let\crefrange at enumv@format at first%
- \crefrange at enumiv@format at first}{}%
- \@ifundefined{Crefrange at enumv@format at first}{%
- \let\Crefrange at enumv@format at first%
- \Crefrange at enumiv@format at first}{}%
- \@ifundefined{crefrange at enumv@format at second}{%
- \let\crefrange at enumv@format at second%
- \crefrange at enumiv@format at second}{}%
- \@ifundefined{Crefrange at enumv@format at second}{%
- \let\Crefrange at enumv@format at second%
- \Crefrange at enumiv@format at second}{}%
- \@ifundefined{crefrange at enumv@format at middle}{%
- \let\crefrange at enumv@format at middle%
- \crefrange at enumiv@format at middle}{}%
- \@ifundefined{Crefrange at enumv@format at middle}{%
- \let\Crefrange at enumv@format at middle%
- \Crefrange at enumiv@format at middle}{}%
- \@ifundefined{crefrange at enumv@format at last}{%
- \let\crefrange at enumv@format at last%
- \crefrange at enumiv@format at last}{}%
- \@ifundefined{Crefrange at enumv@format at last}{%
- \let\Crefrange at enumv@format at last%
- \Crefrange at enumiv@format at last}{}%
+ \@crefcopyformats{section}{subsection}%
+ \@crefcopyformats{section}{subsubsection}%
+ \@crefcopyformats{appendix}{subappendix}%
+ \@crefcopyformats{appendix}{subsubappendix}%
+ \@crefcopyformats{figure}{subfigure}%
+ \@crefcopyformats{table}{subtable}%
+ \@crefcopyformats{equation}{subequation}%
+ \@crefcopyformats{enumi}{enumii}%
+ \@crefcopyformats{enumii}{enumiii}%
+ \@crefcopyformats{enumiii}{enumiv}%
+ \@crefcopyformats{enumiv}{enumv}%
+ \@labelcrefdefinedefaultformats%
+ %
\let\cref at language\relax%
}% end of \AtBeginDocument
\InputIfFileExists{cleveref.cfg}%
Modified: trunk/Master/tlpkg/libexec/ctan2tds
===================================================================
--- trunk/Master/tlpkg/libexec/ctan2tds 2018-02-05 12:35:05 UTC (rev 46548)
+++ trunk/Master/tlpkg/libexec/ctan2tds 2018-02-05 21:55:39 UTC (rev 46549)
@@ -255,6 +255,7 @@
'cmcyr', "&MAKEflatten",
'cmcyralt', "die 'skipping, noinfo license",
'cmexb', "&MAKEflatten",
+ 'cmsrb', "&MAKEflatten",
'cnbwp', "&MAKEflatten",
'cntdwn', "die 'skipping, author (dps) request",
'comicsans', "die 'skipping, Comic Sans is nonfree'",
More information about the tex-live-commits
mailing list