You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
370 lines
11 KiB
370 lines
11 KiB
%%
|
|
%% This is file `memhfixc.sty',
|
|
%% generated with the docstrip utility.
|
|
%%
|
|
%% The original source files were:
|
|
%%
|
|
%% mempatch.dtx (with options: `hyper')
|
|
%%
|
|
%% Author: Peter Wilson (Herries Press) herries dot press at earthlink dot net
|
|
%% Copyright 2001 --- 2010 Peter R. Wilson
|
|
%% Copyright 2011 --- 2013 Peter R. Wilson
|
|
%% Copyright 2013 --- Lars Madsen
|
|
%% Maintainer: Lars Madsen (daleif at math dot au dot dk)
|
|
%%
|
|
%% This work may be distributed and/or modified under the
|
|
%% conditions of the LaTeX Project Public License, either
|
|
%% version 1.3 of this license or (at your option) any
|
|
%% later version.
|
|
%% The latest version of the license is in
|
|
%% http://www.latex-project.org/lppl.txt
|
|
%% and version 1.3 or later is part of all distributions of
|
|
%% LaTeX version 2003/06/01 or later.
|
|
%%
|
|
%% This work has the LPPL maintenance status "maintained".
|
|
%%
|
|
%% This work consists of the files listed in the README file.
|
|
%%
|
|
%%
|
|
%% The memhfixc package provides hyperref related temporary
|
|
%% fixes and extensions for versions v1.618 and later of the memoir class.
|
|
%% o hyperref fix for part and chapter entries in the ToC (v1.0)
|
|
%% o Other fixes as and when
|
|
%%
|
|
%% Only use this package in conjunction with the hyperref package.
|
|
%% Call the package without options after the hyperref package as:
|
|
%% \documentclass[...]{memoir}
|
|
%% ...
|
|
%% \usepackage[...]{hyperref}
|
|
%% \usepackage{memhfixc}
|
|
%%
|
|
%% With thanks to Heiko Oberdiek, if you use hyperref dated 2006/11/15
|
|
%% or later, memhfixc will be automatically loaded after hyperref.
|
|
%%
|
|
%% Version 1.18 2019/10/24
|
|
%% Version 1.17 2013/05/30
|
|
%% Version 1.16 2013/05/16
|
|
%% Version 1.15 2010/08/17
|
|
%% Version 1.14 2010/06/10
|
|
%% Version 1.13 2010/04/19
|
|
%% Version 1.12 2009/02/06
|
|
%% Version 1.11 2009/01/18
|
|
%% Version 1.10 2008/08/23
|
|
%% Version 1.9 2006/11/22
|
|
%% Version 1.8 2006/01/21
|
|
%% Version 1.7 2005/11/15
|
|
%% Version 1.6 2004/05/13
|
|
%% Version 1.5 2003/10/14
|
|
%% Version 1.4 2003/09/26
|
|
%% Version 1.3 2003/02/20
|
|
%% Version 1.2 2003/02/02
|
|
%% Version 1.1 2003/01/22
|
|
%% Version 1.0 2002/10/22
|
|
%%
|
|
\ProvidesPackage{memhfixc}[2019/10/24 v1.18 nameref/hyperref package fixes for memoir class]
|
|
\let\M@hfixcfinish\relax
|
|
\@ifclassloaded{memoir}{}%
|
|
{\let\M@hfixcfinish\endinput
|
|
\typeout{No memoir class: memhfixc does nothing}}
|
|
\M@hfixcfinish
|
|
|
|
\AtEndPackage{nameref}{%
|
|
|
|
\@ifundefined{NR@sectm@m}{% haven't fiddled with \M@sect
|
|
\typeout{Redoing nameref's sectioning}
|
|
\let\NR@sectm@m\M@sect
|
|
\def\M@sect##1##2##3##4##5##6[##7][##8]##9{%
|
|
\setcounter{section@level}{##2}%
|
|
\def\@currentlabelname{##7}%
|
|
\NR@sectm@m{##1}{##2}{##3}{##4}{##5}{##6}[{##7}][{##8}]{\Sectionformat{##9}{##2}}}%
|
|
}%
|
|
{% \NR@sectm@m has already been defined
|
|
}%
|
|
\@ifundefined{MNR@label}{% haven't fiddled with \label
|
|
\typeout{Redoing nameref's label}
|
|
\let\MNR@label\label
|
|
\def\label##1{\@bsphack\begingroup
|
|
\protected@edef\@currentlabel{\protect\M@TitleReference
|
|
{\@currentlabel}{\M@currentTitle}}%
|
|
\MNR@label{##1}%
|
|
\endgroup \@esphack}%
|
|
\let\MNR@old@caption\@caption
|
|
\long\def\@caption##1[##2]##3{%
|
|
\MNR@old@caption{##1}[{##2}]{##3}%
|
|
\def\@currentlabelname{##2}%
|
|
\M@gettitle{##2}%
|
|
}%
|
|
}%
|
|
{% \MNR@label has already been defined
|
|
}%
|
|
\DeclareRobustCommand\nameref{\@ifstar{\@mem@titlerefnolink}{\@mem@titleref}}
|
|
}% end of AtEndPackage
|
|
|
|
%% We are done unless the hyperref package has been loaded
|
|
\@ifpackageloaded{hyperref}{}{\let\M@hfixcfinish\endinput}
|
|
\M@hfixcfinish
|
|
|
|
\let\H@old@sbook\@sbook
|
|
\def\@sbook#1{%
|
|
\H@old@sbook{#1}%
|
|
\Hy@GlobalStepCount\Hy@linkcounter
|
|
\xdef\@currentHref{book*.\the\Hy@linkcounter}%
|
|
\Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}%
|
|
}
|
|
|
|
\@ifundefined{Hy@captionsenglish}{}{%
|
|
\g@addto@macro{\Hy@captionsenglish}{\def\bookautorefname{Book}}}
|
|
\@ifundefined{HyLang@english}{}{%
|
|
\g@addto@macro{\HyLang@english}{\def\bookautorefname{Book}}}
|
|
|
|
\@ifundefined{Hy@captionsgerman}{}{%
|
|
\g@addto@macro{\Hy@captionsgerman}{\def\bookautorefname{Buch}}}
|
|
\@ifundefined{HyLang@german}{}{%
|
|
\g@addto@macro{\HyLang@german}{\def\bookautorefname{Buch}}}
|
|
|
|
\@ifundefined{Hy@captionsportuges}{}{%
|
|
\g@addto@macro{\Hy@captionsportuges}{\def\bookautorefname{Livro}}}
|
|
\@ifundefined{HyLang@portuges}{}{%
|
|
\g@addto@macro{\HyLang@portuges}{\def\bookautorefname{Livro}}}
|
|
|
|
\@ifundefined{Hy@captionsspanish}{}{%
|
|
\g@addto@macro{\Hy@captionsspanish}{\def\bookautorefname{Libro}}}
|
|
\@ifundefined{HyLang@spanish}{}{%
|
|
\g@addto@macro{\HyLang@spanish}{\def\bookautorefname{Libro}}}
|
|
|
|
\@ifundefined{Hy@captionsafrikaans}{}{%
|
|
\g@addto@macro{\Hy@captionsafrikaans}{\def\bookautorefname{Boek}}}
|
|
\@ifundefined{HyLang@afrikaans}{}{%
|
|
\g@addto@macro{\HyLang@afrikaans}{\def\bookautorefname{Boek}}}
|
|
|
|
\providecommand{\bookautorefname}{Book}
|
|
|
|
\@ifpackagelater{hyperref}{2006/11/15}{%
|
|
}{%
|
|
\def\@@writetorep#1#2#3#4#5{%
|
|
\begingroup
|
|
\def\Hy@tempa{#5}%
|
|
\ifx\Hy@tempa\Hy@bookmarkstype
|
|
\edef\Hy@level{#4}%
|
|
\ifx\Hy@levelcheck Y%
|
|
\@tempcnta\Hy@level\relax
|
|
\advance\@tempcnta by -1
|
|
\ifnum\Hy@currentbookmarklevel<\@tempcnta
|
|
\advance\@tempcnta by -\Hy@currentbookmarklevel\relax
|
|
\advance\@tempcnta by 1
|
|
\Hy@Warning{%
|
|
Difference (\the\@tempcnta) between bookmark levels is %
|
|
greater \MessageBreak than one, level fixed%
|
|
}%
|
|
\@tempcnta\Hy@currentbookmarklevel
|
|
\advance\@tempcnta by 1
|
|
\edef\Hy@level{\the\@tempcnta}%
|
|
\fi
|
|
\else
|
|
\global\let\Hy@levelcheck Y%
|
|
\fi
|
|
\global\let\Hy@currentbookmarklevel\Hy@level
|
|
\@tempcnta\Hy@level\relax
|
|
\expandafter\xdef\csname Parent\Hy@level\endcsname{#3}%
|
|
\advance\@tempcnta by -1
|
|
\edef\Hy@tempa{#3}
|
|
\edef\Hy@tempb{\csname Parent\the\@tempcnta\endcsname}%
|
|
\ifx\Hy@tempa\Hy@tempb
|
|
\Hy@Warning{%
|
|
The anchor of a bookmark and its parent's must not%
|
|
\MessageBreak be the same. Added a new anchor%
|
|
}%
|
|
\phantomsection
|
|
\fi
|
|
\ifHy@bookmarksnumbered
|
|
\let\numberline\Hy@numberline
|
|
\let\booknumberline\Hy@numberline % <- added
|
|
\let\partnumberline\Hy@numberline % <- added
|
|
\let\chapternumberline\Hy@numberline % <- added
|
|
\else
|
|
\let\numberline\@gobble
|
|
\let\booknumberline\@gobble % <- added
|
|
\let\partnumberline\@gobble % <- added
|
|
\let\chapternumberline\@gobble % <- added
|
|
\fi
|
|
\pdfstringdef\Hy@tempa{#2}%
|
|
\protected@write\@outlinefile{}{%
|
|
\protect\BOOKMARK
|
|
[\Hy@level][\@bookmarkopenstatus{\Hy@level}]{#3}%
|
|
{\Hy@tempa}{\Hy@tempb}%
|
|
}%
|
|
\fi
|
|
\endgroup}
|
|
}
|
|
|
|
\@ifundefined{H@old@sectm@m}{% haven't fiddled with \M@sect
|
|
\let\H@old@sectm@m\M@sect
|
|
\def\M@sect#1#2#3#4#5#6[#7][#8]#9{%
|
|
\ifnum #2>\c@secnumdepth%
|
|
\expandafter\@firstoftwo%
|
|
\else%
|
|
\expandafter\@secondoftwo%
|
|
\fi%
|
|
{%
|
|
\Hy@MakeCurrentHrefAuto{section*}%
|
|
\setlength{\Hy@SectionHShift}{#3}%
|
|
\begingroup
|
|
\toks@{\H@old@sectm@m{#1}{#2}{#3}{#4}{#5}{#6}[{#7}][{#8}]}%
|
|
\toks\tw@\expandafter{%
|
|
\expandafter\Hy@SectionAnchorHref\expandafter{\@currentHref}%
|
|
#9%
|
|
}%
|
|
\edef\x{\endgroup%
|
|
\the\toks@{\the\toks\tw@}%
|
|
}\x%
|
|
}{%
|
|
\H@old@sectm@m{#1}{#2}{#3}{#4}{#5}{#6}[{#7}][{#8}]{#9}%
|
|
}%
|
|
}%
|
|
}%
|
|
{% already fiddled \M@sect
|
|
}
|
|
|
|
\let\MH@old@resets@pp\@resets@pp
|
|
\renewcommand*{\@resets@pp}{%
|
|
\MH@old@resets@pp
|
|
\def\theHchapter{\Alph{chapter}}}
|
|
|
|
\let\MH@old@resets@ppsub\@resets@ppsub
|
|
\renewcommand*{\@resets@ppsub}{%
|
|
\MH@old@resets@ppsub
|
|
\def\theHsection{\theHchapter.\Alph{section}}}
|
|
\def\endsubappendices{\def\theHsection{\theHchapter.\arabic{section}}}
|
|
|
|
\renewcommand{\cftaddtitleline}[4]{%
|
|
\addtocontents{#1}{\protect\contentsline{#2}{#3}{#4}{\@currentHref}}}
|
|
\renewcommand{\cftaddnumtitleline}[5]{\addtocontents{#1}{%
|
|
\protect\contentsline{#2}{\protect\numberline{#3}#4}{#5}{\@currentHref}}}
|
|
|
|
\let\m@moldhypcaption\caption
|
|
\renewcommand{\caption}{\donemaincaptiontrue\m@moldhypcaption}
|
|
|
|
\newcounter{memhycontfloat}
|
|
\renewcommand*{\thememhycontfloat}{\arabic{memhycontfloat}}
|
|
\providecommand*{\theHmemhycontfloat}{}
|
|
\renewcommand*{\theHmemhycontfloat}{\arabic{memhycontfloat}}
|
|
\setcounter{memhycontfloat}{0}
|
|
|
|
\renewcommand{\contcaption}{%
|
|
\par%
|
|
\refstepcounter{memhycontfloat}%
|
|
\addtocounter{\@captype}{\m@ne}\H@refstepcounter{\@captype}%
|
|
\@contcaption\@captype}
|
|
|
|
\def\endsidecaption{%
|
|
\m@mscapend@fbox
|
|
\H@refstepcounter{\@captype}%
|
|
\hyper@makecurrent{\@captype}%
|
|
\m@mscaplabel
|
|
\m@mscapcheckside %<--- added 2013/05/30
|
|
\begin{lrbox}{\m@mscap@capbox}%
|
|
\begin{minipage}[c]{\sidecapwidth}%
|
|
\sidecapstyle
|
|
\@caption\@captype[\m@mscap@fortoc]{\m@mscap@forcap}%
|
|
\end{minipage}%
|
|
\end{lrbox}%
|
|
\m@mscapopboxes}
|
|
|
|
\renewcommand*{\sidecontcaption}{%
|
|
\refstepcounter{memhycontfloat}%
|
|
\@sidecontcaption}
|
|
\def\endsidecontcaption{%
|
|
\m@mscapend@fbox
|
|
\addtocounter{\@captype}{\m@ne}\H@refstepcounter{\@captype}%
|
|
\hyper@makecurrent{memhycontfloat}%
|
|
\m@mscaplabel
|
|
\m@mscapcheckside %<--- added 2013/05/30
|
|
\begin{lrbox}{\m@mscap@capbox}%
|
|
\begin{minipage}[c]{\sidecapwidth}%
|
|
\sidecapstyle
|
|
\@contcaption\@captype{\m@mscap@forcap}%
|
|
\end{minipage}%
|
|
\end{lrbox}%
|
|
\m@mscapopboxes}
|
|
|
|
\def\@mem@titlerefnolink#1{\begingroup \let\numberline\@gobble
|
|
\let\M@TitleReference\@mem@theTR % interrupt recursion of \ref
|
|
\ref*{#1}\endgroup}
|
|
|
|
\AtBeginDocument{%
|
|
\let\printpageinnotes\printpageinnoteshyperref%
|
|
}
|
|
\ifHy@hyperfootnotes
|
|
\def\@footnotemark{%
|
|
\leavevmode
|
|
\ifhmode\edef\@x@sf{\the\spacefactor}%
|
|
\m@mmf@check% <--- added
|
|
\nobreak\fi
|
|
\stepcounter{Hfootnote}%
|
|
\global\let\Hy@saved@currentHref\@currentHref
|
|
\hyper@makecurrent{Hfootnote}%
|
|
\global\let\Hy@footnote@currentHref\@currentHref
|
|
\global\let\@currentHref\Hy@saved@currentHref
|
|
\hyper@linkstart{link}{\Hy@footnote@currentHref}%
|
|
\@makefnmark
|
|
\hyper@linkend
|
|
\m@mmf@prepare% <--- added
|
|
\ifhmode\spacefactor\@x@sf\fi
|
|
\relax
|
|
}%
|
|
\fi
|
|
|
|
\Hy@AtBeginDocument{%
|
|
\ifx\hyper@last\@undefined
|
|
\def\@starttoc#1{%
|
|
\begingroup\makeatletter
|
|
\IfFileExists{\jobname.#1}{%
|
|
\Hy@WarningNoLine{%
|
|
old #1 file detected, not used; run LaTeX again%
|
|
}%
|
|
}{}%
|
|
\if@filesw
|
|
\AtEndDocument{%
|
|
\expandafter\ifx\csname tf@#1\endcsname\relax
|
|
\expandafter\newwrite\csname tf@#1\endcsname
|
|
\immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
|
|
\fi
|
|
}
|
|
\fi
|
|
\@nobreakfalse
|
|
\endgroup
|
|
}%
|
|
\fi
|
|
}
|
|
|
|
\ifHy@hyperfootnotes
|
|
\let\m@m@pnwrite@fourtharg\m@m@pnwrite@fourtharg@hyperref
|
|
\let\pagenoteanchor\pagenotehyperanchor
|
|
\newcounter{Hpagenote}
|
|
\@namedef{mem@pnmm@start@hook}{%
|
|
\stepcounter{Hpagenote}%
|
|
\global\let\Hy@saved@currentHref\@currentHref
|
|
\hyper@makecurrent{Hpagenote}%
|
|
\global\let\Hy@pagenote@currentHref\@currentHref
|
|
\global\let\@currentHref\Hy@saved@currentHref
|
|
\hyper@linkstart{link}{\Hy@pagenote@currentHref}%
|
|
}
|
|
\@namedef{mem@pnmm@end@hook}{\hyper@linkend}
|
|
\fi
|
|
|
|
\AtEndPackage{hypcap}{%
|
|
\long\def\@@contcaption##1##2{%
|
|
\par
|
|
\begingroup
|
|
\@parboxrestore
|
|
\if@minipage
|
|
\@setminipage
|
|
\fi
|
|
\global\@capstartfalse% added
|
|
\normalsize
|
|
\@makecaption{\csname fnum@##1\endcsname}{\ignorespaces ##2}\par
|
|
\endgroup}
|
|
}
|
|
\endinput
|
|
%%
|
|
%% End of file `memhfixc.sty'.
|
|
|