Eine Frage zur Verwendung eines \renew-Befehls zum Anpassen eines Pakets

Eine Frage zur Verwendung eines \renew-Befehls zum Anpassen eines Pakets

Dieser Artikel ist eine Unterfrage von:Querverweise auf 2 Arten von Endfußnoten (getrennt und mit unterschiedlich farbigen Nummern)


Hallo,

Ich versuche, ein Paket namens parnotes anzupassen (das mit aufgerufen werden kann \usepackage{parnotes}. Der ursprüngliche Quellcode kann heruntergeladen werdenbei CTAN hier.

Die Codezeile, die ich „anpassen“ möchte (d. h. ändern, wenn sie in ein anderes .tex-Dokument implementiert wird), befindet sich im folgenden Teil:

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

Die einzige Zeile, die ich ändern möchte, ist die letzte. Sie soll lauten:

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

Ich weiß, wann diese Änderung einwandfrei funktioniert (ich habe den herunterladbaren Quellcode bei CTAN optimiert), aber ich möchte Sie um Hilfe bitten, da ich nicht weiß, wie ich diese Codezeile von außen (d. h. von einer neuen .tex-Datei aus) ändern kann.

Ich würde denken (da ich auf diese Weise eine weitere Codezeile der Quelle anpassen konnte), dass man in der Präambel eines neuen .tex-Dokuments Folgendes verwenden würde:

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

Oder kennt vielleicht jemand eine alternative Möglichkeit, dies zu verwenden \let ...?

Vielen Dank im Voraus.

Antwort1

Hier ist ein Minimalbeispiel:

\documentclass{article}
\usepackage{parnotes}

\begin{document}

\begin{autopn}
Text\parnote{parnote}

Text
\end{autopn}

\end{document}

welche Ausgänge

Bildbeschreibung hier eingeben

Mit der von Ihnen vorgeschlagenen Änderung würde es

Bildbeschreibung hier eingeben

das ist auf jeden Fall schlecht, da der Exponent zu hoch ist (abgesehen davon, dass er zu klein ist, aber das ist Geschmacksfrage).

Der „einfache“ Weg, mit dem ich das Beispiel erstellt habe, ist

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

Es gibt viele Beispiele für die \patchcmdVerwendung vonBitte unterrichten Sie die Verwendung von patchcmd und xpatch

Dies ist in diesem Fall allerdings der falsche Weg. Das Paket sieht nämlich \parnotemarkfmtgenau den Zweck vor, die Markierung im Text zu formatieren.

Die Definition durch das Paket lautet

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

(sollte hier übrigens \newcommandverwendet werden, hat aber für das vorliegende Thema keine Bedeutung). Wie Sie sehen, \textsuperscriptwird verwendet. Zur Information \PN@mark@setist standardmäßig dasselbe wie \arabic.

Wenn Sie die Größe des Exponenten verringern möchten, können Sie einfach die Definition von ändern \parnotemarkfmt. Wenn Sie einen kleineren Exponenten möchten, können Sie ein \textsmallsuperscriptMakro basierend auf dem definieren, was \textsuperscriptbewirkt:

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

Wir können also

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

@Es empfiehlt sich, vor dem „internen Makromarker“ ein Präfix zu verwenden .

Vollständiges Beispiel:

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

Bildbeschreibung hier eingeben

verwandte Informationen