我正在尝试重新定义 footnotesize 命令,使其以不同于文档其余部分的 Computer Modern 字体显示。具体来说是 字体libertine
。但是我发现这很棘手。有人能帮我吗?
以下是未改变的\footnotesize
代码:
\makeatletter
\renewcommand\footnotesize{%
\@setfontsize\footnotesize\@ixpt{11}%
\abovedisplayskip 8\p@ \@plus2\p@ \@minus4\p@
\abovedisplayshortskip \z@ \@plus\p@
\belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
\def\@listi{\leftmargin\leftmargini
\topsep 4\p@ \@plus2\p@ \@minus2\p@
\parsep 2\p@ \@plus\p@ \@minus\p@
\itemsep \parsep}%
\belowdisplayskip \abovedisplayskip
}
\makeatother
答案1
您可以找出 LaTeX 认为 Libertine 字体的名称:
\documentclass{article}
\usepackage{libertine}
\begin{document}
\rmdefault
\end{document}
编译此测试后,你会发现内部名称是
LinuxLibertineT-TLF
好的,现在我们可以修补\footnotesize
:
\documentclass{article}
\usepackage{etoolbox}
\apptocmd{\footnotesize}
{\fontfamily{LinuxLibertineT-TLF}\selectfont} % choose Libertine before typesetting
{}{}
\setlength{\textheight}{1cm} % just to make a smaller picture
\begin{document}
This is some text in the default
font\footnote{This is a footnote in Linux Libertine}
\end{document}
请注意,不仅脚注会以 Libertine 排版,而且声明范围内的所有内容也会以 Libertine 排版\footnotesize
。
另一方面,现在您看到了输出,您很可能会返回并删除该\apptocmd
指令。;-)
答案2
之后,您必须加载libertine
并恢复以前的字体,然后只需将包提供的\libertine
1 个\footnotesize
命令修补到命令中即可。我选择使用\g@addto@macro
而不是完全重新定义,\footnotesize
以便修补(理论上)不依赖于所使用的类或字体大小。
\documentclass{article}
\usepackage[a6paper]{geometry} % Just for the example
\let\saverm\rmdefault % \
\let\savesf\sfdefault % | Save the current font
\let\savett\ttdefault % /
\usepackage{libertine} % Load libertine
\let\rmdefault\saverm % \
\let\sfdefault\savesf % | Restore the font
\let\ttdefault\savett % /
\usepackage[nopar]{lipsum} % For dummy text
\makeatletter
\g@addto@macro\footnotesize\libertine % <--- Patching \libertine in
\makeatother
\begin{document}
\lipsum[2]\footnote{\lipsum[4]}
\end{document}
1对于想要将其与其他字体一起使用的人来说:并非所有软件包都定义了更改字体的命令libertine
,因此可能不适用那很容易,但肯定可行。