常规 LaTeX

常规 LaTeX

标准字体包会对文档中的字体进行全局更改。如果我只想对文本的一部分使用特定字体该怎么办?

  1. 我如何找到正确的字体名称?
  2. 我如何选择字体?
  3. 如何限制字体变化的范围?

针对不同类型的 TeX,有不同的答案(快速链接):

答案1

常规 LaTeX

查找字体名称

这实际上是最难的部分。当你加载常规字体包时helvet(将默认无衬线字体设置为 Helvetica 克隆),它会发出命令来使用内部名称设置字体(浆果名称),对普通用户是隐藏的。这些名称传统上对每个字体系列使用三个或四个字母的小写名称系统。通常这些名称记录在与字体相关的文档中。

以下是最常见字体及其代码的列表:

系列字体名称
先锋派
fvs Bitstream Vera Sans
pbk 布克曼
bch 宪章
ccr电脑混凝土
cmr 现代电脑
pcr 快递
加拉蒙德
字体: Helvetica
fi4 (zi4) 不幸
lmr 拉丁现代
lmss 拉丁现代无字体
lmtt 拉丁现代打字机
LinuxBiolinumT-OsF Linux Biolinum(旧版本软件包中称为“fxb”)
LinuxLibertineT-OsF Linux Libertine(旧版本软件包中称为“fxl”)
pnc新世纪教科书
帕拉蒂诺人
qag TeX Gyre Adventor
qbk TeX Gyre Bonum
qzc TeX Gyre 合唱团
qcr TeX 回旋光标
qhv TeX Gyre 英雄
qpl TeX 环流佩格拉
qcs TeX 回旋学院
qtm TeX 环流
ptm时报
安西亚尔
把乌托邦
pzc Zapf 大法官府

对于某些希腊字体,代码为:

Artemisia              artemisia 
Baskerville            gfsbaskerville 
Bodoni                 bodoni 
Complutum              complutum 
Didot                  udidot 
Neohellenic            neohellenic 
Porson                 porson 
Solomos                solomos 
Greek Times            txr 
Kerkis                 mak 
LX                     llcmss 
Default                lmr

对于其他内容,您可以查看 fontname.pdf 文件这里参见第 4 页。另请参阅问题LaTeX 字体系列的 Berry 命名方案列表搜索有效 \fontfamily 参数的最快方法? 关于这个话题。

如果您找不到字体的任何文档,作为最后的手段(或者在您知道自己在做什么之后的第一个手段),您可以打开.sty实际加载字体的文件并亲自查看内部字体系列名称(或者您可以使用 在其中搜索grep)。以下是两个示例:

来自helvet.sty:包末尾有这样一行:

\renewcommand{\sfdefault}{phv}

这会将默认的 sans 字体(\sfdefault)设置为该phv系列,phv字体的内部名称也是如此。

从 中PTSansCaption.sty,您将找到以下行:

\renewcommand{\sfdefault}{PTSansCaption-TLF}

这里,内部名称更接近其文件名:PTSansCaption-TLF

这两个示例都显示了更改默认无衬线字体的代码。如果字体包更改了罗马字体或单色字体,则分别查找以下命令

\renewcommand{\rmdefault}{...}
\renewcommand{\ttdefault}{...}

选择字体

要选择字体,请使用以下命令:

\fontfamily{<familyname>}\selectfont

将其包装在宏中通常很有用:

\newcommand*{\myfont}{\fontfamily{<familyname>}\selectfont}

限制选择范围

您始终可以通过将文本括在括号中来限制字体更改命令的范围:

{\fontfamily{<familyname>}\selectfont ...}

或者使用命令

{\myfont ...}

或者,如果您没有括号匹配编辑器,可以使命令的范围在文件中更加明显

\begingroup
  \myfont ...
\endgroup

如果你经常做这样的事,那么把它变成一个适当的环境会更有意义:

\newenvironment{myfont}{\fontfamily{<familyname>}\selectfont}{\par}

然后你可以像在任何其他环境中一样使用它:

\begin{myfont}
  Some text in the new font.
\end{myfont}

您还可以定义一个与标准字体更改命令相对应的命令(例如\textrm或 )\textsf,但使用您的特定字体:

\DeclareTextFontCommand{\textmyfont}{\myfont}

像标准命令一样使用它:

Text in the default font. \textmyfont{Text in the new font.} Again text in the default font.

与上面描述的简单版本相比,此命令的优点是自动斜体校正,参见为什么要使用 \DeclareTextFontCommand 而不是 \newcommand?


常见字体渲染

(除了ccr 计算混凝土)。

常用字体

答案2

XeLaTeX 和 LuaLaTeX

XeLaTeX 和 LuaLaTeX 的出现极大地简化了 LaTeX 用户的字体选择,因为系统上安装的任何字体都可以使用这些引擎使用包fontspec来加载字体。

XeLaTeX 和 LuaLaTeX 都默认采用 UTF-8 输入,因此你应该不是在使用它们时加载inputenc包,并且应该将源文件保存为 UTF-8。

因此,基本文档将如下所示:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{<any font on your system>}
\begin{document}
...
\end{document}

全局选择字体

对于整个文档,您可以使用以下命令设置罗马字体、无衬线字体和等宽字体:

\setmainfont[<font features>]{<name of font>} % sets the roman font
\setsansfont[<font features>]{<name of font>} % sets the sans font
\setmonofont[<font features>]{<name of font>} % sets the monospace font

本地选择字体

如果你想在文档的一小部分中使用字体,最好定义一个新的字体系列

\newfontfamily\myfont[<font features>]{<name of font>}

这将设置一个开关,\myfont该开关将字体更改为该字体。(也可以直接使用命令选择字体\fontspec,但通常应避免这样做,因为该\newfontfamily方法效率更高。)此开关的行为与\rmfamily或完全相同sffamily(除了它被调用\myfont并切换到分配给它的字体)。

字体功能

由于fontspec软件包提供了对 OpenType 字体的访问,因此它能够提供对这些字体附带的许多特殊功能的访问。可以使用任何字体选择命令的可选参数来选择这些功能。有关fontspec更多详细信息,请参阅文档。我将在这里概述几个常用的功能。

  • [Ligatures=TeX]该功能允许您使用常规的 TeX 连字(在 中默认情况下未启用)fontspec。特别是如果您习惯于输入 LaTeX 样式的引号或--和,---而不是直接输入实际字符,则应始终启用此选项。
  • [Numbers=OldStyle]此功能打开小写数字
  • [Scale=MatchLowercase]此功能用于缩放 sans 或 mono 字体,以匹配(在此示例中)罗马字体的小写字符。另一个选项是MatchUppercase;或者可以给出数字缩放值。

请参阅fontspec文档以获得可指定的丰富功能的完整描述。

如果您要设置单独的罗马字体、单色字体和无字体或创建新的字体系列,您通常希望为所有字体指定相同的字体功能。您可以使用以下命令执行此\defaultfontfeatures操作:

\defaultfontfeatures{Ligatures=TeX} % makes this a feature for all selected fonts

查找字体的名称

如果您使用系统字体,则可以使用系统中任何 GUI 应用程序中显示的字体名称。(在 Mac 上,这些字体通常位于 中/Library/Fonts;在 Windows 上,它们通常位于 中\Windows\Fonts;在 Linux 上,通常位于 中/usr/local/share/fonts。例如:

\setmainfont{Linux Libertine O}
\newfontfamily\myfont{Linux Libertine O}

在这里列出字体名称确实没有任何意义,但我会添加一些名称的示例:

  • Arial Rounded MT 粗体
  • DejaVu Sans Mono
  • Florencesans SC 黑色

这些名字不是字体的文件名。如果您有某种字体管理器 GUI(如 Mac 上的 Font Book),则名称会显示在那里。在 Windows 上,您可以在控制面板的“字体预览”部分找到名称。

请注意,当您使用 选择字体时,字体名称中通常出现的空格也必须存在fontspec

如果要列出支持某种语言的字体(因为字体通常只支持部分 Unicode 字符),可以使用该fc-list命令。例如,要查找支持中文的字体,首先找到语言代码中文,即,zh那么我们使用以下命令

fc-list :lang=zh

显示支持中文的字体列表。输出内容如下:

/usr/share/fonts/custom/STLITI.TTF: STLiti,华文隶书:style=Regular
/usr/share/fonts/custom/SourceHanSerifSC-Regular.otf: Source Han Serif SC,思源宋体:style=Regular
/usr/share/fonts/wqy-microhei/wqy-microhei.ttc: WenQuanYi Micro Hei Mono,文泉驛等寬微米黑,文泉驿等宽微米黑:style=Regular
/usr/share/fonts/custom/simhei.ttf: SimHei,黑体:style=Regular,Normal,obyčejné,Standard,Κανονικά,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
/usr/share/fonts/custom/SIMLI.TTF: LiSu,隶书:style=Regular
/usr/share/fonts/custom/STXINWEI.TTF: STXinwei,华文新魏:style=Regular
/usr/share/fonts/wqy-zenhei/wqy-zenhei.ttc: WenQuanYi Zen Hei Sharp,文泉驛點陣正黑,文泉驿点阵正黑:style=Regular
/usr/share/fonts/custom/simfang.ttf: FangSong,仿宋:style=Regular,Normal,obyčejné,Standard,Κανονικά,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
/usr/share/fonts/wqy-microhei/wqy-microhei.ttc: WenQuanYi Micro Hei,文泉驛微米黑,文泉驿微米黑:style=Regular
/usr/share/fonts/custom/FZYTK.TTF: FZYaoTi,方正姚体:style=Regular

字体名称位于字体位置之后,例如STLiti

限制选择范围

您始终可以通过将文本括在括号中来限制字体更改命令的范围:

{\myfont ...}

或者,如果您没有括号匹配编辑器,可以使命令的范围在文件中更加明显

\begingroup
  \myfont ...
\endgroup

如果你经常做这样的事,那么把它变成一个适当的环境会更有意义:

\newenvironment{myfont}{\myfont}{\par}

然后你可以像在任何其他环境中一样使用它:

\begin{myfont}
  Some text in the new font.
\end{myfont}

您还可以定义一个与标准字体更改命令相对应的命令(例如\textrm或 )\textsf,但使用您的特定字体:

\DeclareTextFontCommand{\textmyfont}{\myfont}

像标准命令一样使用它:

Text in the default font. \textmyfont{Text in the new font.} Again text in the default font.

与上面描述的简单版本相比,此命令的优点是自动斜体校正,参见为什么要使用 \DeclareTextFontCommand 而不是 \newcommand?

答案3

康特克斯 MkIV

在 ConTeXt MkIV 中,使用字体来显示小部分内容非常容易。对于较大的文本部分,我建议使用Simplefonts 模块或者编写打字稿,因为较大的部分可能包含改变样式的字体开关。

我如何找到正确的字体名称?

首先,您必须安装字体(如果尚未安装)。在 Unix 上,您可以将目录$HOME/.fonts 用于每个用户或/usr/local/share/fonts系统范围的安装。您必须将环境变量指向OSFONTDIR可以找到字体的目录:

export OSFONTDIR="/usr/local/share/fonts;$HOME/.fonts"

然后运行

mtxrun --script fonts --reload

重新生成字体数据库。现在您可以查询数据库。这将为您提供所有可用字体的列表:

mtxrun --script fonts --list --all

以下是该列表的前十行:

ams                   wncysc10              wncysc10.afm
amsbold               wncyb10               wncyb10.afm
amsmedium             wncysc10              wncysc10.afm
antpoltbold           antpoltbold           antpolt-bold.otf
antpoltbolditalic     antpoltbolditalic     antpolt-bolditalic.otf
antpoltcondbold       antpoltcondbold       antpoltcond-bold.otf
antpoltcondbolditalic antpoltcondbolditalic antpoltcond-bolditalic.otf
antpoltconditalic     antpoltconditalic     antpoltcond-italic.otf
antpoltcondregular    antpoltcondregular    antpoltcond-regular.otf
antpoltexpdbold       antpoltexpdbold       antpoltexpd-bold.otf

您将获得三列,第二列是规范化(全部小写、无特殊字符、无空格)名称,第三列是文件名(小写)。

您可以运行列表grep或使用内置机制来搜索特定字体:

mtxrun --script fonts --list --pattern=deli* --all

给出

delicious             deliciousbold         Delicious-Bold.otf
deliciousbold         deliciousbold         Delicious-Bold.otf
deliciousbolditalic   deliciousbolditalic   Delicious-BoldItalic.otf
deliciousheavy        deliciousheavy        Delicious-Heavy.otf
deliciousitalic       deliciousitalic       Delicious-Italic.otf
deliciousmedium       deliciousitalic       Delicious-Italic.otf
deliciousnormal       deliciousroman        Delicious-Roman.otf
deliciousregular      deliciousheavy        Delicious-Heavy.otf
deliciousroman        deliciousroman        Delicious-Roman.otf
delicioussmallcaps    delicioussmallcaps    Delicious-SmallCaps.otf

我如何选择字体?

由于我们只处理一种字体,没有粗体或斜体字体切换(但是,选定的字体当然可以是粗体或斜体),我们可以简单地使用\definefont

\definefont [delicious] [name:deliciousroman]

\delicious这定义了一个切换到给定字体的 宏。name:前缀用于引用字体列表中的规范化名称(第二列)。也可以使用前缀file:并使用文件名(第三列),而不使用路径。

如何限制字体变化的范围?

您可以使用括号、\start \stop\begingroup \endgroup任何其他分组机制。

Delicious-Roman这是一个使用该字体(OpenType 字体)的完整示例。

\definefont [delicious] [name:deliciousroman]

\starttext

\start
    \delicious
    \input knuth
\stop

\input knuth

\stoptext

输出:

结果

右侧框表示确实正在使用所请求的字体。更多信息可以在ConTeXt wiki - LuaTeX 中的字体字体章节

答案4

这是一个带有小工作代码的答案:

\documentclass{article}
\usepackage{fontspec}
\newfontfamily\myFont{Courier_New.ttf}
\usepackage[T1]{fontenc}
\begin{document}
Default \TeX\ font. {\myFont A unicode font.} Again default \TeX\ font.
\end{document}

这里,我使用了 Courier 新字体。要检查可用的字体,请转到目录:/usr/share/fonts/。从这里发出以下命令将为您提供可用字体的列表:find . -type f -name "*.ttf。您可以将这里的任何字体文件替换为Courier_New.ttf第 3 行中的。

以下是输出: 示例代码的输出

相关内容