LaTeX教学2.5 字体

作者: 无锤乙醇 | 来源:发表于2019-02-01 22:04 被阅读6次

    2.5 字体

    在论文中我们使用最多的是一个字体的四种性质:字族(font family), 字体形状(font shape), 字体系列(font series)[1], 和字体大小(size)

    . LaTeX提供了带参数命令字体声明两种修改字体的命令, 前者用于少量字体的更换, 后者用于分组或环境中字体的整体更换例如:

    字体示例.png

    2.5.1 字体的性质

    字族

    预设的字族有三种:罗马字族(roman family), 无衬线字族(sans serif family)和打字机字族(typewriter family), 其中无衬线字族也叫等线字族, 打字机字族也叫等宽字族, 其命令和显示效果为:

    字族示例.png
    字体形状

    字体预设的形状有4种:直立形状(upright shape, 也称roman shape), 意大利形状(italic shape), 倾斜形状(slanted shape), 小型大写形状(small capitals shape), 其对应的命令及显示为:

    字形示例.png

    在论文中正文模式使用直立字形. 要注意倾斜形状和意大利形状的区别, 倾斜形状只是直接对符号进行倾斜而产生的, 而我们常说的斜体往往指的是意大利形状, 它更类似于手写体. 因为数学公式中的字体一般使用意大利形状, 因而与数学混排时倾斜形状不会与公式中的字母混淆; 在标题, 参考文献中也有使用倾斜形状的, 一般会根据所使用的模板不同而不同. 但是, 并不是所有的字族都有这么多种形状, 除了LaTeX默认的Computer Modern和Latin Modern, 大多数字体都只有意大利与倾斜两种形状中的一种, 很多字体也缺少小型大写字母符号. 另一方面, 一些其他字体也会提供更多其他的形状, 比如Venturis Adf字体就提供意大利的小型大写和空心等形状, 具体的命令可以查看对应字体的pdf文档, 其路径是C:\texlive\2018\texmf-dist\doc\fonts\(TeXlive), MikTeX也可以到类似的路径下寻找pdf文档.

    字体系列

    预设命令中字体系列有中等(medium)和加宽加粗(bold extened)两类:

    字体系列示例.png

    论文正文默认使用中等字体系列, 两个命令表示的意义对不同套的字体可能有所区别, 如命令\textbf\bfseries对默认的字体选择加宽加粗字体系列, 但对一些字体则是选择加粗(bold)或半粗(demi-bold)字体系列.

    上面介绍字体的三种性质, 同一种性质之间不能叠加, 但不同类的性质可以叠加, 三种性质的组合效果见下表

    总表格.png
    字体大小

    在LaTeX中修改字体大小有两种方法, 一种是用系统内的字体大小, 另一种是在文类中添加可选参数, 这里我们只介绍如何用命令修改字体大小. 字体修改命令只有声明式的命令, 即对命令后的文字起效, 下面给出各个字体下各个命令的点数:

    字体尺寸命令 10pt(默认选项) 11pt 12pt
    \tiny 5pt 6pt 6pt
    \scriptsize 7pt 8pt 8pt
    \footnotesize 8pt 9pt 10pt
    \small 9pt 10pt 10.95pt
    \normalsize 10pt 10.95pt 12pt
    \large 12pt 12pt 14.4pt
    \Large 14.4pt 14.4pt 17.28pt
    \LARGE 17.28pt 17.28pt 20.74pt
    \huge 20.74pt 20.74pt 24.88pt
    \Huge 24.88pt 24.88pt 24.88pt

    当使用默认的10pt时, 所有字体尺寸命令与排版效果如下表:

    字体-大小.png

    对于整段文字都需要调整字体的, 可以使用一对花括号将要改变字体的内容括起来, 或者使用环境形式的更改方案, 如

    \begin{large}
    ...
    \end{large}
    
    中文字体

    对于中文字体, 大多数并没有所谓的粗体和意大利体, 但是在中文论文的写作过程中经常会需要用它们来做强调, 为此, ctex宏包重定义了\rmfamily, 使其对中文也起作用, 另外还定义了一些组合字体, 可以让中文也使用粗体\bfseries和意大利体\itshape, 默认的中文字族是rm, 其正常字体是宋体, 粗体是黑体, 意大利体是楷体, 对应的无衬线字族是微软雅黑, 打字机字族是仿宋, 故上面我们看到在抄录命令中中文变成了仿宋体就是这个原因, 我们用下面的示例来进行综合的说明:

    \documentclass{article}
    \usepackage[UTF8]{ctex}
    \begin{document}
    \textrm{正常的中文字体}, \textsf{无衬线中文字体}, \texttt{打字机中文字体}, \textbf{中文粗体}, \textit{意大利中文字体}
    \end{document} 
    
    ctex字体示例.png

    而且ctex还针对中文用户设计了特别的字号, 类似MS-Word中的初号, 小四等等, 其命令为\zihao{数值}, 其中的数值有16个可选项, 部分对应关系如下表:

    字号 初号 小初 一号 小一 二号 小二 三号 小三 四号
    代码 0 -0 1 -1 2 -2 3 -3 4

    以上字体大小与使用文类中的字体大小无关, 其点数都是固定不变的.
    注意:在上文中提及的字族, 形状和系列的命令都是使用对应性质的命令, 而不是对应性质的名称, 如加宽加粗的命令是\textbf, 而加宽加粗系列的名称是bx

    2.5.2 字体设置

    说完了LaTeX中的字体的性质, 再说说怎么更换字体.

    英文字体

    对于英文字体可以使用fontspec宏包, 使用声明命令\fontspec[<性质>]{<字体>}, 其中字体可以是字体名或字体文件名, 例如:MS-Word中默认的西文字体是Times New Roman, 字体名叫"Times New Roman", 而字体文件名叫"times.ttf", 注意, 当使用字体名时, LaTeX会自动调用字体对应的其他字形和系列, 而使用文件名使用更换字体的时候需要同时在[性质]中指定其对应的形状和系列, 否则无法使用其对应的形状和系列. 即如果想要完整使用Times New Roman字体的话, 以下命令二选一

    \fontspec[BoldFont=timesbd.ttf, ItalicFont=timesi.ttf, BoldItalicFont=timesbi.ttf]{times.ttf}
    \fontspec{Times New Roman}
    

    或者可以指定其他字体作为times.ttf的粗宽体和意大利体, 只需在[性质]中添加想使用的字体即可. 需要注意的是这种修改方式只可以改变当前文档中的罗马体, 即当我们使用\textsf, \texttt命令的时候, 仍是调用原来的无衬线字体和等宽字体, 如果需要全局进行这种字体的修改的话, 推荐使用下面的格式:

    \setmainfont[<性质>]{<字体名>}     %设置正文罗马字体
    \setsansfont[<性质>]{<字体名>}     %设置正文无衬线字体
    \setmonofont[<性质>]{<字体名>}     %设置正文等宽字体
    

    上述命令中的性质的说明与命令\fontspec中的性质相同, 这些命令推荐用在导言区来修改全文的字体, 而且系统会尽量找到这些字体对应的粗宽体和意大利体, 尽量使得命令\textbf和命令\textit, 同时可以使用新的字族命令:

    \newfontfamily<命令>[<性质>]{<字体名>}
    

    这个命令中<命令>是用户自定义的用来调用该字体的一个命令, <字体名>依旧可以是字体名称或者字体文件名, 然后用定义的声明命令来调用该字体, 看下例:
    调用新字族命令来改变一段文字的字体.

    \documentclass{article}
    \begin{document}
        \newfontfamily\myfont{Lucida Handwriting}
        \myfont This is my font.
    \end{document} 
    
    字体更换.png
    中文字体

    对于CJK(China, Janpan, Korea)文字, \fontspec命令对其不起作用, 类比英文的字体更换方法, 我们可以使用xeCJK宏包中的命令, 但是我们无需主动调用这个宏包, 因为ctex文类以及ctex宏包都自动调用了这个宏包. 我们可以用下面的命令来改变全局CJK文字的罗马体, 无衬线体还有等宽体.

    \setCJKmainfont[<性质>]{<字体名>}     %设置正文罗马字体
    \setCJKsansfont[<性质>]{<字体名>}     %设置正文无衬线字体
    \setCJKmonofont[<性质>]{<字体名>}     %设置正文等宽字体
    

    还有另一种调用字体的方法, 即定义新字族, 只是命令与英文命令有些区别:

    \setCJKfamilyfont{<自定义字族>}[<性质>]{<字体名>}
    

    并且用声明命令\CJKfamily{<自定义字族>}来调用该命令, 看下例.

    \documentclass{article}
    \usepackage[UTF8]{ctex}
    \begin{document}
        \setCJKfamilyfont{myCJKfont}{华文行楷} 
        \CJKfamily{myCJKfont} 华文行楷
    \end{document} 
    
    CJK字体更换.png

    同样这种方法只对CJK文字起作用, 不会改变英文的字体, xeCJK宏包又为我们提供了三个命令, 扩充了字体更换功能:

    \CJKfamily{<自定义字族>}     %只改变CJK文字字体
    \CJKfamily+{<自定义字族>}    %改变CJK和非CJK文字
    \CJKfamily-{<自定义字族>}    %只改变非CJK文字
    

    同样, 对于中文字体, ctex宏包也给了我们更多的方便, 使用\songti, \heiti, \fangsong, \kaishu, \youyuan, \lishu来分别输出宋体, 黑体, 仿宋, 楷书, 幼圆, 隶书, 上述命令都是声明形式的, 但是不能在导言区使用. 中文字体宏包ctex将章节中的字体设为黑体, 如果想更改章节名中的字体, 可以使用上述字体命令, 如果要改变全文中某个层次的中文字体, 可以参考中文标题宏包ctexcap.


    1. 通常指字体的重量(weight, 即粗细)和宽度(width)

    相关文章

      网友评论

        本文标题:LaTeX教学2.5 字体

        本文链接:https://www.haomeiwen.com/subject/dghjsqtx.html