패키지를 조정하기 위해 \renewcommand를 사용하는 것에 대한 질문

패키지를 조정하기 위해 \renewcommand를 사용하는 것에 대한 질문

이 기사는 다음의 하위 질문입니다.2종의 끝 각주에 대한 상호 참조(구분되고 다른 색상의 숫자)


안녕,

parnotes라는 패키지를 적용하려고 합니다( 를 사용하여 호출할 수 있음) \usepackage{parnotes}. 원본 소스 코드를 다운로드할 수 있습니다.여기 CTAN에서.

"적응"(즉, 다른 .tex 문서에서 구현될 때 변경)하려는 코드 줄은 다음 부분에 있습니다.

\long\def\PN@parnote@real#1{
   \global\advance\c@PN@t\@ne

    \g@addto@macro\PN@text{

        \global\advance\c@PN@n\@ne
        \parnotemarkfmt{PN@n}\nolinebreak\thinspace#1

            \unless\ifnum\c@PN@n=\c@PN@t
                \parnoteintercmd
            \fi
        }
    \unskip\parnotemarkfmt{PN@t}
}

내가 바꾸고 싶은 유일한 줄은 마지막 줄입니다. 나는 그것이되기를 원합니다 :

    \unskip\textsuperscript{\parnotemarkfmt{PN@t}}

이 변경 사항이 언제 완벽하게 수행되는지 알고 있지만(CTAN에서 다운로드 가능한 소스 코드를 수정했습니다) 외부에서(예: 새 .tex에서 이 코드 줄을 변경하는 방법을 모르기 때문에 도움을 요청하고 싶습니다. -파일).

나는 (이 방법으로 소스의 다른 코드 줄을 조정할 수 있었기 때문에) 새로운 .tex 문서의 서문에 사용할 것이라고 생각합니다.

\makeatletter
\renewcommand{...???...}
\makeatother

아니면 누군가가 \let ...?

미리 감사드립니다.

답변1

다음은 최소한의 예입니다.

\documentclass{article}
\usepackage{parnotes}

\begin{document}

\begin{autopn}
Text\parnote{parnote}

Text
\end{autopn}

\end{document}

출력

여기에 이미지 설명을 입력하세요

귀하가 제안한 변경 사항은 다음과 같습니다.

여기에 이미지 설명을 입력하세요

지수가 너무 높기 때문에 확실히 나쁜 것입니다(너무 작다는 것 외에도 맛의 문제입니다).

제가 예제를 만든 "쉬운" 방법은 다음과 같습니다.

\usepackage{etoolbox}
\makeatletter
\patchcmd{\PN@parnote@real}
  {\parnotemarkfmt{PN@t}}
  {\textsuperscript{\parnotemarkfmt{PN@t}}}
  {}{}
\makeatother

\patchcmd어떻게 사용할 수 있는지 에 대한 많은 예가 있습니다 . 예를 들어 참조하세요.patchcmd 및 xpatch 사용법을 가르쳐주세요.

그러나 이 경우에는 잘못된 방법입니다. 실제로 패키지는 \parnotemarkfmt마커를 텍스트 형식으로 지정하기 위한 목적으로 정확하게 제공됩니다.

패키지에 의한 정의는 다음과 같습니다.

\providecommand{\parnotemarkfmt}[1]{\textsuperscript{\PN@mark@set{#1}}}

(그런데 \newcommand여기서 사용해야 하지만 현재 주제에는 아무런 영향을 미치지 않습니다.) 보시다시피 \textsuperscript사용됩니다. 자세한 내용은 \PN@mark@set기본적으로 와 동일합니다 \arabic.

지수의 크기를 줄이려면 간단히 정의를 변경하면 됩니다 \parnotemarkfmt. 더 작은 지수를 원할 경우 \textsmallsuperscript다음을 기반으로 매크로를 정의할 수 있습니다 \textsuperscript.

% latex.ltx, line 6017:
\DeclareRobustCommand*\textsuperscript[1]{%
  \@textsuperscript{\selectfont#1}}
\def\@textsuperscript#1{%
  {\m@th\ensuremath{^{\mbox{\fontsize\sf@size\z@#1}}}}}

그래서 우리는 할 수 있습니다

\DeclareRobustCommand*\textsmallsuperscript[1]{%
  \vincent@textsmallsuperscript{\selectfont#1}}
\def\vincent@textsmallsuperscript#1{%
  {\m@th\ensuremath{^{\mbox{\fontsize\ssf@size\z@#1}}}}}

"내부 매크로 마커" 앞에 접두사를 사용하는 @것이 좋습니다.

완전한 예:

\documentclass{article}
\usepackage{parnotes}

\makeatletter
\DeclareRobustCommand*\textsmallsuperscript[1]{%
  \vincent@textsmallsuperscript{\selectfont#1}}
\def\vincent@textsmallsuperscript#1{%
  {\m@th\ensuremath{^{\mbox{\fontsize\ssf@size\z@#1}}}}}% <--- use scriptscriptsize

\renewcommand{\parnotemarkfmt}[1]{\textsmallsuperscript{\PN@mark@set{#1}}}
\makeatother

\begin{document}

\begin{autopn}
Text\parnote{parnote}

Text
\end{autopn}

\end{document}

여기에 이미지 설명을 입력하세요

관련 정보