![初步演示](https://linux22.com/image/285207/%E5%88%9D%E6%AD%A5%E6%BC%94%E7%A4%BA.png)
有哪些 LaTeX 命令可以显示罗马/直立字符?
答案1
这回答了主题行中的问题。我不清楚正文中的问题是什么,所以我不确定这是否回答了这个问题。正如其他人指出的那样,直立罗马字体是默认的,所以你通常不需要做任何事情就可以得到它。然而,问题可能是如何回到它在使用其他命令更改字体后。如果是这样,这个答案应该会有所帮助。
初步演示
\documentclass{article}
\usepackage[T1]{fontenc}
\begin{document}
\verb|\normalfont| \normalfont produces text in the default family (usually roman), the default weight (normally medium) and the default shape (normally upright).
That is, it is typically equivalent to \verb|\rmfamily\mdseries\upshape| \rmfamily\mdseries\upshape which switches to roman, medium, upright.
If you switch to \verb|\sffamily\bfseries\itshape| \sffamily\bfseries\itshape to produce sans, bold, italic, then issuing \verb|\rmfamily| \rmfamily will result in roman, bold, italic, whereas issuing \verb|\normalfont| \normalfont will result in roman, medium, upright.
Similarly, starting with \verb|\ttfamily\bfseries\itshape| \ttfamily\bfseries\itshape for typewriter, bold, italic, issuing \verb|\upshape| \upshape will produce typewriter, bold, upright, whereas \verb|\normalfont| \normalfont will return all font dimensions to their defaults i.e.\ roman, medium, upright.
\end{document}
查看效果:
注意事项
请注意,这显示了诸如以下\upshape
命令\itshape
如何上下文相关\sffamily
。也就是说,它们的效果取决于发布时使用的字体。 、等\rmfamily
也是如此。\mdseries
它们每个都会改变当前字体的一个维度(前提是这是可能的,即,假设存在合适的字体,但情况并非总是如此)。
相比之下,\normalfont
重置全部字体属性恢复为默认值。因此,它可能会改变当前字体的所有属性 - 系列、粗细和形状。
解释
我使用了标准 LaTeX 命令并假设了标准字体配置。也就是说,我假设文档使用与article
、report
或相关的类book
。正如 Speravir 指出的那样,一些文档类设置了不同的默认值。例如,beamer
将默认系列设为 sans 而不是 serif (roman)。同样,包也可以通过这种方式更改默认系列。但事实上,不同的类和包可以以不同的方式配置事物并不是字体设置的特殊之处。
我希望链接到另一个答案,以更全面地解释这里发生的事情。不幸的是,我找不到。这个答案可能会有所帮助,尽管它更侧重于未来的发展。
国家林业科学研究院
上述代码的工作方式特定于 LaTeX2e。以前版本的 LaTeX 以不同的方式管理字体。在这里我忽略了这些。我还忽略了使用不同宏包(例如 ConTeXt)、不同引擎(例如 XeTeX/LuaTeX)和 TeX 的低级字体机制来管理字体的其他方法。
新的字体选择方案(不再很新)沿三维方向管理字体属性。
- 系列:衬线(罗马字体);无衬线;打字机字体是标准配置。
\rmfamily
等\textsf{}
。改变活动字体的尺寸。因此,如果您使用的是斜体、粗体罗马字体,\sffamily
则将切换到斜体、粗体无衬线字体(前提是此类字体可用)。\rmfamily
/\textrm{}
- 罗马即衬线字体\sffamily
/\textsf{}
-无\ttfamily
/\texttt{}
- ‘打字机’(可能是等宽的)
- 粗细:中等(
m
);粗体(bx
)为标准配置。等\mdseries
。\textbf{}
改变活动字体的尺寸。因此,如果您使用的是斜体、无粗体,\bfseries
则将切换到斜体、无粗体(前提是此类字体可用)。\mdseries
/\textmd{}
- 中等的\bfseries
/\textbf{}
- 加粗扩展(即加粗并且稍宽)
- 形状:直立 (
n
);斜体 (it
);倾斜 (sl
);小型大写字母 (sc
) 是标准配置。等\itshape
。\textsc{}
改变活动字体的尺寸。因此,如果您使用的是直立粗体打字机,slshape
则将切换到倾斜粗体打字机(前提是此类字体可用)。\upshape
/\textup{}
- 直立\itshape
/\textit{}
- 斜体\slshape
/\textsl{}
- 斜的(倾斜的)\scshape
/\textsc{}
- 小帽子
LaTeX 使用字体定义文件 ( .fd
) 来确定哪种字体对应哪种形状、系列等。通常这些文件不仅定义某个系列字体的映射,还定义字体替换的映射。例如,如果字体是粗体 ( b
) 而不是粗体扩展 ( bx
),那么如果要求使用粗体扩展系列中的字体,文件通常会告诉 LaTeX 用粗体系列中的字体替换。这使得能够使用诸如 之类的命令,\bfseries
它实际上请求粗体扩展而不是简单的粗体。同样,如果字体提供倾斜但没有斜体形状,通常会使用替换来\itshape
获得倾斜字体,而不是直立默认字体。对于提供斜体但没有倾斜形状的字体则相反。
\rmdefault
这些命令的实际效果取决于文档中使用的字体系列,即、\sfdefault
和的设置\ttdefault
。默认情况下,这些命令从 Computer Modern 中选择字体系列,但字体包通过重新定义来启用不同的字体。显然,提供的具体粗细和形状取决于使用的具体字体系列。因此,如果字体不提供小型大写字母,LaTeX 将替换为其他形状。它将首先尝试使用文件中的替换字体系列.fd
。如果这不起作用,它将恢复为默认值(例如直立)。应始终指定某些默认值 - TeX 绝不会因为使用 LaTeX 提供的标准字体选择命令而出错。当您希望使用粗体斜体时,它可能会使用直立中等字体。但是除非出现根本性问题,否则它应该找到某种东西来排版文本。
结果是\upshape
或\textup{}
改变仅有的形状,保持活动系列和重量不变(前提是该系列中存在该重量的直立形状)。相反,\normalfont
将所有三个维度重置为默认值 - 形状、重量、系列。[\normalfont
但是,不会影响尺寸字体。这就是它\normalsize
的用途。
限制
NFSS 有一些限制。例如,没有提供标准命令来访问:
- 其他重量,如轻或重;
- 其他宽度,如压缩或扩展(
\bfseries
启用粗体扩展,但如果您想要中等扩展或粗体压缩怎么办?); - 其他形状,如花体或特别有问题的斜体小型大写字母;
- 不同风格的人物,例如旧式人物对阵衬里;比例对阵表格;上位数字和下位数字等
其中一些限制比其他限制更大。虽然定义命令来访问轻量级字体很容易,但提供按预期行为的粗细和宽度的不同命令却比较棘手。同样,您可以提供一个命令来访问斜体小型大写字母,但确保按\textit{italic \textsc{small-caps}}
预期行为则比较棘手。由于这两个命令影响相同的字体尺寸,因此第二个形状声明将覆盖第一个,从而产生直立小型大写字母。
存在各种软件包来扩展 NFSS 并解决其中的一些限制,但这些软件包仅适用于配置为与它们一起使用的特定字体。解决方案通常依赖于以特定方式命名的字体。例如,fontaxes
和nfssext
/都是如此nfssext-cfr
。但是,这些软件包对字体命名做出了不同的假设,因此一个软件包提供的命令不适用于另一个软件包支持的字体。(特别是,nfssext-cfr
假设字体是根据 Karl Berry 的命名方案命名的,而fontaxes
假设字体是根据替代方案命名的。)