この記事は以下のサブ質問です: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}