%%
%% 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.
%%
%% With the new hooking system from 2020+ memhfixc is automatically
%% added after loading hyperref with the memoir class
%%
%% Version 1.21  2023/07/28
%% Version 1.20  2022/11/17
%% Version 1.19  2021/06/16
%% 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}[2023/07/28 v1.21 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

%% 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}
\providecommand{\subfigureautorefname}{Subfigure}

\@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
}

\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

 % patch removed as per 2022 hyperref does not touch \@starttoc
 % \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'.
