我正在尝试使用 来\renewcommand
更改整个正文中脚注的大小。我通过更改\footenotesize
为不同的命令来实现此\scriptsize
目的。稍后,我希望该命令\footnotesize
恢复其原始用途。但是,\renewcommand
再次使用 执行此操作会导致我的 .tex 文件停止编译,通常是在第一个\includegraphics
命令上。即使没有该\includegraphics
命令,.tex 文件也不会编译。我不明白发生了什么,但如果我删除第二个\renewcommand
,文档就会编译。
\documentclass{article}
\usepackage{graphicx} % Graphics package to include figures (need graphicx.sty)
\begin{document}
\renewcommand{\footnotesize}{\scriptsize}
Here is some text. And Here is some text with a footnote.\footnote{Here is the footnote text.}
\renewcommand{\footnotesize}{\footnotesize}
\begin{figure}
\caption{Probability of Leaving within One Year: 1999-2002}
\begin{center}
\includegraphics[width=4in]{combined-one-3060-vertical.eps}
\end{center}
\label{fig:leave1-baseline}
{\footnotesize
Notes: The top panel plots the average leave probability for one-year age bins for the 2002 sample, while the bottom panel separately plots these probabilities for the 2002 and 1999-2001 samples.
}
\end{figure}
\end{document}
答案1
您的代码不起作用,因为您使用的命令与新命令和旧命令相同
\renewcommand{\footnotesize}{\footnotesize}
正确的做法是,首先保存\footnotesize
\let\oldfootnotesize\footnotesize
当你想恢复其含义时,使用
\renewcommand{\footnotesize}{\oldfootnotesize}
因此,修改你的 MWE 为
\documentclass{article}
\usepackage[demo]{graphicx} % Graphics package to include figures (need graphicx.sty)
\begin{document}
\let\oldfootnotesize\footnotesize
\renewcommand{\footnotesize}{\scriptsize}
Here is some text. And Here is some text with a footnote.\footnote{Here is the footnote text.}
\renewcommand{\footnotesize}{\oldfootnotesize}
\begin{figure}
\caption{Probability of Leaving within One Year: 1999-2002}
\begin{center}
\includegraphics[width=4in]{combined-one-3060-vertical.eps}
\end{center}
\label{fig:leave1-baseline}
{\footnotesize
Notes: The top panel plots the average leave probability for one-year age bins for the 2002 sample, while the bottom panel separately plots these probabilities for the 2002 and 1999-2001 samples.
}
\end{figure}
\end{document}
作品。
答案2
当你执行类似以下操作时,你将创建一个循环引用,从而耗尽 TeX 的容量
\renewcommand{\footnotesize}{\footnotesize}
处理 TeX 中临时更改的典型方法是使用定位技术或者范围界定:
\begingroup
\renewcommand{\footnotesize}{\scriptsize}
% do stuff
\endgroup
\footnotesize
这将恢复after的原始含义\endgroup
。或者,您可以按以下方式使用中间变量:
\let\oldfootnotesize\footnotesize
\renewcommand{\footnotesize}{\scriptsize}
% do stuff
\let\footnotesize\oldfootnotesize
使用 会在调用时\let<csname1><csname2>
立即将 复制<csname2>
到 中。根据控制序列的类型,<csname1>
letltxmacro
提供了一个安全的替代方案。请参阅何时使用\LetLtxMacro
?
虽然上述内容有望回答这个问题,但不建议也不鼓励这样做。事实上,使用
\footnote{\scriptsize Here is the footnote text.}
即使没有并发症,也可能一样好。
答案3
我会用不同的方式来做到这一点,这样就无需重新定义那些相当棘手的\renewcommand
内核命令就可以工作。\footnotesize
脚注文本中使用的字体的选择由 做出\@footnotetext
,因此我们的首要任务是进行间接调用而不是直接调用:
\usepackage{etoolbox} % this goes among the other instructions of the same type
% the following code should be in the preamble
\makeatletter % we must add to commands with an @ in their name
\patchcmd{\@footnotetext}
{\footnotesize}
{\footnotefontsize}
{}{}
\newcommand{\footnotefontsize}{\footnotesize}
\makeatother
这段代码并没有真正改变字体大小;但现在你可以自由地说
\renewcommand{\footnotefontsize}{\scriptsize}
甚至(但愿不会)
\renewcommand{\footnotefontsize}{\Large}
或者可能
\renewcommand{\footnotefontsize}{\footnotesize}
完整示例
\documentclass{article}
\usepackage{etoolbox} % this goes among the other instructions of the same type
% the following code should be in the preamble
\makeatletter % we must add to commands with an @ in their name
\patchcmd{\@footnotetext}
{\footnotesize}
{\footnotefontsize}
{}{}
\newcommand{\footnotefontsize}{\footnotesize}
\makeatother
\begin{document}
a\footnote{First}
\renewcommand{\footnotefontsize}{\Large}
b\footnote{Second}
\renewcommand{\footnotefontsize}{\footnotesize}
c\footnote{Third}
\end{document}