\Huge
当我在包中使用和\tiny
命令时遇到了意外行为anyfontsize
。
下面是两段 LaTeX 代码,说明了这个问题。预期是\Huge
和\tiny
在使用 更改字体大小后将其重置为原来的大小\fontsize{<size>}{<line space>}\selectfont
,但它们似乎保留了最后设置的大小。当使用 加载类时[12pt]
,\huge
命令也会导致错误的大小。
第一种情况(\Huge
):
\documentclass[10pt]{article}
\usepackage{anyfontsize}
\begin{document}
{\Huge This is a Huge text.}
{\fontsize{30}{40}\selectfont This is a very Huge text.}
{\Huge This is a Huge text.} % This should be original Huge size, but it's too HUGE!
{\Large This is a large text.\par}
{\large This is a large text.\par}
{\Huge This is a Huge text again.} % This should be original Huge size, but it's too HUGE!
{\fontsize{40}{50}\selectfont This is a very HUGE text.}
{\Huge This is a Huge text again.} % This should be original Huge size, but it's even more HUGE!
\end{document}
第二种情况(\tiny
):
\documentclass[10pt]{article}
\usepackage{anyfontsize}
\begin{document}
{\tiny This is a tiny text.}
{\fontsize{2}{2}\selectfont This is a very tiny text.}
{\tiny This is a tiny text.} % This should be original tiny size, but it's too tiny!
\end{document}
当我查看anyfontsize
包内部时,它正在\externalfont
使用以下内容进行覆盖:
\def\anyfontsize@set#1 #2\hfuzz{%
\@tempdimb=\f@user@size\p@%
\edef\external@font{#1 at\the\@tempdimb}%
}%
但是,我找不到任何原因来解释为什么它会改变\Huge
和的行为\tiny
。我猜幕后一定发生了什么事情。
我想知道是什么导致了\Huge
和\tiny
命令的这种意外行为(或者它是预期的行为?)是否有更好的解决方案来设置字体大小,同时保持\Huge
和\tiny
命令的行为?
答案1
让我们看看anyfontsize.sty
% anyfontsize.sty -- allow font size substitutions
% by Péter Szabó <[email protected]> at Sat Feb 3 13:56:49 CET 2007
[...]
%** Overrides \externalfont by specifying the ` at <requested-fontsize>pt'
%** clause. The requested font size is in \f@user@size.
\def\anyfontsize@set#1 #2\hfuzz{%
\@tempdimb=\f@user@size\p@%
\edef\external@font{#1 at\the\@tempdimb}%
}%
%** Overrides definition in latex.ltx
%** See %%%% pts %%%% for the overridden part.
\gdef\tryif@simple#1-#2\tryif@simple{%
[...]
%%%% pts %%%%
\expandafter\anyfontsize@set\external@font\hfuzz
[...]
这基本上是一个 17 年前的黑客行为。如果我用 TeX Live 2012 测试您的示例,问题完全一样。
请注意,甚至在anyfontsize
发布之前,基础 LaTeX 发行版就已经fix-cm
旨在解决 Computer Modern 字体的相同问题。
不要使用anyfontsize
。如果您打算使用 Computer Modern 字体(或 T1 编码中的 European Modern),请加载
\RequirePackage{fix-cm}
之前\documentclass
。对于其他字体包,您不必担心大小。有一些非常专业的字体,例如数学模式下的书法大写字母的 RSFS,可能需要特殊处理,但手动更改字体定义通常非常简单。
我们ursfs.fd
发现
\DeclareFontFamily{U}{rsfs}{\skewchar\font127 }
\DeclareFontShape{U}{rsfs}{m}{n}{%
<5> <6> rsfs5
<7> rsfs7
<8> <9> <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> rsfs10
}{}
只需在文档中添加,
\DeclareFontFamily{U}{rsfs}{\skewchar\font127 }
\DeclareFontShape{U}{rsfs}{m}{n}{<-6> rsfs5 <6-8> rsfs7 <8-> rsfs10}{}
并且字体将以任意大小显示。