我想将侧注文本的大小更改为\footnotesize
。为什么我不能像下面这样\sidenotetext
在\footnotesize
需要的地方重新定义 ?
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{sidenotes}
\makeatletter
\RenewDocumentCommand \sidenotetext { o o +m }
{
\IfNoValueOrEmptyTF{#1}
{
\@sidenotes@placemarginal{#2}{\textsuperscript{\thesidenote}{}~#3}
\refstepcounter{sidenote}
}
{\@sidenotes@placemarginal{#2}{\footnotesize\textsuperscript{#1}\footnotesize~#3}}
}
\makeatother
\begin{document}
Hello\sidenote{Hi}
\end{document}
答案1
您应该/可以提到您使用包中的原始定义,并尝试使用随包自动加载的包
sidenotes
功能来更改其中一个命令的定义。xparse
sidenotes
我\@sidenotes@placemarginal{#2}{\textsuperscript{\thesidenote}{}~#3}
用\@sidenotes@placemarginal{#2}{\textsuperscript{\thesidenote}{}~\footnotesize#3}
(\footnotesize
在之前添加#3
)替换了。
此外,感谢 Christian Hupfer,您需要用 括起定义,\makeatletter...\makeatother
因为代码@
以非文字方式使用符号(请参阅\makeatletter 和 \makeatother 起什么作用?)。
\documentclass{article}
\usepackage{sidenotes}
%% Loads the following packages
% marginnote
% caption
% xparse
% l3keys2e
% changepage
%%% From the sidenotes documentation
%% \sidenote
%% Uses \sidenotetext
%\NewDocumentCommand\sidenote { o o +m }
%{
%\sidenotemark[#1]
%\sidenotetext[#1][#2]{#3}
%\@sidenotes@multimarker
%}
%
%% \sidenotetext
%% Used in \sidenote
%\NewDocumentCommand \sidenotetext { o o +m }
%{
%\IfNoValueOrEmptyTF{#1}
%{
%\@sidenotes@placemarginal{#2}{\textsuperscript{\thesidenote}{}~#3}
%\refstepcounter{sidenote}
%}
%{\@sidenotes@placemarginal{#2}{\textsuperscript{#1}~#3}}
%}
% \sidenotetext
% Used in \sidenote
% Changed to meet the question of user J. Bratt (https://tex.stackexchange.com/questions/361622).
\makeatletter
\RenewDocumentCommand\sidenotetext{ o o +m }{%
\IfNoValueOrEmptyTF{#1}{%
\@sidenotes@placemarginal{#2}{\textsuperscript{\thesidenote}{}~\footnotesize#3}%
\refstepcounter{sidenote}%
}{%
\@sidenotes@placemarginal{#2}{\textsuperscript{#1}~#3}%
}%
}
\makeatother
\begin{document}
Hello\sidenote{Hi}
\end{document}
答案2
我稍微改变了一下逻辑查询,使用普通的\IfValueTF{#1}{}{}
。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{sidenotes}
\makeatletter
\RenewDocumentCommand\sidenotetext{oo+m}{%
\IfValueTF{#1}{%
\@sidenotes@placemarginal{#2}{\footnotesize\textsuperscript{#1}\footnotesize~#3}
}{%
\@sidenotes@placemarginal{#2}{\textsuperscript{\thesidenote}{}~#3}%
\refstepcounter{sidenote}%
}%
}
\makeatother
\begin{document}
Hello\sidenote[foo]{Hi}
Hello\sidenote{Hi again}
\end{document}