`\hyper@normalise` 명령을 `\patchcmd`로 패치할 수 없습니다.

`\hyper@normalise` 명령을 `\patchcmd`로 패치할 수 없습니다.

\hyper@normalise모든 매크로를 덮어쓰지 않고도 명령 에 후크를 추가할 수 있습니까 ? \hyper@n@rmalise정규화할 사용자 정의 정의를 추가하기 직전에 매크로 끝에 후크를 추가하고 싶습니다 .

이것이 내가 달성하고 싶은 것입니다:

\begingroup
  \endlinechar=-1 %
  \catcode`\^^A=14 %
  \catcode`\^^M\active
  \catcode`\%\active
  \catcode`\#\active
  \catcode`\_\active
  \catcode`\$\active
  \catcode`\&\active
  \gdef\hyper@normalise{^^A
    \begingroup
    \catcode`\^^M\active
    \def^^M{ }^^A
    \catcode`\%\active
    \let%\@percentchar
    \let\%\@percentchar
    \catcode`\#\active
    \def#{\hyper@hash}^^A
    \def\#{\hyper@hash}^^A
    \@makeother\&^^A
    \edef&{\string&}^^A
    \edef\&{\string&}^^A
    \edef\textunderscore{\string_}^^A
    \let\_\textunderscore
    \catcode`\_\active
    \let_\textunderscore
    \let~\hyper@tilde
    \let\~\hyper@tilde
    \let\textasciitilde\hyper@tilde
    \let\\\@backslashchar
    \edef${\string$}^^A
    \Hy@safe@activestrue
    \csname hyper@normalise@hook\endcsname % <--HERE
    \hyper@n@rmalise
  }^^A
\endgroup

하지만 나는 패키지에 있는 \patchcmd것을 얼릴 필요가 없는 것으로 하고 싶습니다 . \hyper@normalise이 매크로에서는 많은 catcode가 변경되어 오류가 발생합니다.

Runaway definition?
\active \def  \catcode `\
! File ended while scanning definition of \etb@resrvda.

MWE:

\documentclass{article}
\usepackage{etoolbox}
\usepackage{hyperref}

\makeatletter
\patchcmd\hyper@normalise{\hyper@n@rmalise}{\csname hyper@normalise@hook\endcsname \hyper@n@rmalise}{}{}
\show\hyper@normalise
\makeatother

\begin{document}
aa
\end{document}

관련 정보