设置字体
字体的坐标
- 字号(font size)
- 字体编码(font encoding)
- 字体族(font family)
- 字体形状(font shape)
- 字体系列(font series)
\(\LaTeX\)提供了带参数和命令和字体声明两类修改字体的命令,前者用于少量字体的更换,后者用于分组或环境中字体的整体更换。例如:
\textit{Italic font test}
{\bfseries Bold font test}
![1511360-20190625204428587-2023978142.png](https://i-blog.csdnimg.cn/blog_migrate/936dbce69616b11da96d19ca381f2fff.png)
预定义命令的字体族有3种:罗马字体族(roman family)、无衬线字体族(sans serif family)和打字机字体族(typewriter family)。其命令为:
![1511360-20190625204500201-1954635879.png](https://i-blog.csdnimg.cn/blog_migrate/342aa991445bdc5cee1a4354e5d2cceb.png)
预定义命令的字体形状有4种:直立形状(upright shape,也称为roman shape)、意大利形状(italic shape)、倾斜形状(slanted shape)、小型大写形状(small capitals shape)。其命令为:
![1511360-20190625204537597-503532700.png](https://i-blog.csdnimg.cn/blog_migrate/0f8449e1d0fb7fd03ecdc149410277e6.png)
预定义命令的字体系列有中等(medium)和加宽加粗(bold extended)两类:
![1511360-20190625204608213-1932871786.png](https://i-blog.csdnimg.cn/blog_migrate/21136451f03da903c482c10c82e563a2.png)
字体的这三种性质有如确定字体的三维坐标,同一维度内的性质不能重叠,但不同类的性质则可以叠加。三种性质的组合效果见表
![1511360-20190625204634189-1013866582.png](https://i-blog.csdnimg.cn/blog_migrate/70dffb0bd7299dd95614d34c4b4ebb7b.png)
除了上面列举的这些字体命令,还有\textnormal{文字}和\normalfont命令用来把字体设置为"普通"的格式。默认情况下,普通字体相当于\rmfamily\mdseries\upshape的效果。普通字体特别适用于在复杂的字体环境中恢复普通的字体,尤其是在宏定义这类不知道外部字体设置的情况下,如:
\sffamily
\textbf{ This is a paragraph of bold and \textit{ italic font, sometimes returning to \textnormal{ normal font} is necessary.}}
![1511360-20190625204654163-666043878.png](https://i-blog.csdnimg.cn/blog_migrate/620b5250a8efe371707d2eb9871e24a0.png)
使用斜体声明(\itshape、\slshape)时,最后一个倾斜的字母会超出右边界,使得后面的文字与它相距过紧,而用带参数的命令(\textit、\texts1)就可以自动修正这个距离,也可以手工使用/命令进行这种倾斜校正(italic correction),如:
{\itshape M}M
\textit{M}M
{\itshape M\/}M
![1511360-20190625204720762-1839316476.png](https://i-blog.csdnimg.cn/blog_migrate/ff6a82872ace6dd89e7ffc52ee2791a6.png)
这是我的结果,跟书上演示的不太一样,不过的确这两种写法是有差别,不过我根本不关心这个啊。
在很少的情况下,\textit自动加入的倾斜校正是不必要的,此时可以使用\nocorr命令禁止校正,如:
\textit{M}M
\textit{M\nocorr}M
![1511360-20190625204756025-770519381.png](https://i-blog.csdnimg.cn/blog_migrate/0765cb255002596505f2883fa2aeb7a8.png)
中文字体通常没有西文字体那样复杂的成套的变体,各个字体之间一般都是独立的,只有少数字体有不同重量的成套字体。因此,对于中文字体,一般只使用不同的字体族进行区分。xeCJK和CJK宏包机制下,中文字体的选择命令和西文字体是分离的,选择中文字体族使用\CJKfamily命令,如:
{\CJKfamily{zhhei}这是黑体}
{\CJKfamily{zhkai} 这是楷书}
![1511360-20190625204825235-1547295725.png](https://i-blog.csdnimg.cn/blog_migrate/2e01df6054b8466e36e95853dfe3720d.png)
中文的字体族,根据不同的系统和使用方式各有不同。在ctex宏包及文档类下有一些预定义,在默认情况下(winfonts 选项)针对Windows常用字体配置了的四种字体族:song(宋体)、hei(黑体)、kai(楷书)、fs(仿宋);如果使用了其他选项,则可能会有不同的字体,为了方便使用,ctex宏包提供了简化的命令:
{\heiti 黑体} \quad {\songti 宋体} \quad {\kaishu 楷书} \quad {\fangsong 仿宋}
![1511360-20190625204846504-1974358028.png](https://i-blog.csdnimg.cn/blog_migrate/31cd9428259c25e6a9f52dbc3e4a9a81.png)
NFSS为字体划分了编码、族、系列、形状、尺寸等多个正交属性,这些属性全各自可以用一个简短的符号来表示,如字体编码有0T1,T1,OML,OMS,0MX,U等;字体族有cmr,cmss,cmtt,cmm,cmsy,cmex等;字体系列有m,b,bx,sb,c等;字体形状有n,it,s1,sc等,由具体的字体可以有不同的定义,常用的标准定义可参见NFSS的标准文档、Adobe PostScript字体文档。\(\LaTeX\)提供了更原始的命令:
\fontencoding{编码}
\fontfamily{族}
\fontseries{系列}
\fontshape{形状}
\fontsize{大小}{基本行距} %(纯数字,单位是pt)
通过这些命令来使用这些基本属性,需要在后面加\selectfont命令使它们生效,如:
\fontencoding{OT1}\fontfamily{pzc}\fontseries{mb}\fontshape{it}\fontsize{14}{17}\selectfont
PostScript New Century Schoolbook
![1511360-20190625204909633-1523149034.png](https://i-blog.csdnimg.cn/blog_migrate/1e15a9cbf29ebcb96b8b77f6a02aa538.png)
也可以使用
\usefont{编码}{族}{系列}{形状}
一次性选择某个字体,如:
\usefont{T1}{pbk}{db}{n}
PostScript Bookman Demibold Normal
![1511360-20190625204931069-1701929464.png](https://i-blog.csdnimg.cn/blog_migrate/bfd9fdf279934ee5047113212250ecbc.png)
强调文字
\emph命令表示强调,用于把直立体改为意大利体,把意大利体改为直立体:
You \emph{should} use fonts carefully
\textit{You \emph{should} use fonts carefully}
![1511360-20190625204956535-1582331951.png](https://i-blog.csdnimg.cn/blog_migrate/66d11fd56b969f7accf209a59943dc51.png)
与其他字体命令一样,\emph也有一个声明形式\em。
\(\LaTeX\)命令\underline可以给文字或公式加下画线:
\underline{Emphasized} text and \underline{another}.
![1511360-20190625205020208-1883410916.png](https://i-blog.csdnimg.cn/blog_migrate/54a7628b68158d7daf8f4d9826928485.png)
不过\underline的一个很大的缺点是下画线的部分不能换行,如果仔细看上面的例子还会发现下画线与文字的距离不整齐。ulem宏包的\ulem命令解决了这些问题,使用并且把默认的\emph命令也改为使用下画线的方式:
\usepackage{ulem}
\uline{Emphasized}text and \uline{another}.
A \emph{very very very very very very very very very} long sentence.
![1511360-20190625205043941-1499465481.png](https://i-blog.csdnimg.cn/blog_migrate/3cc346b4e47bc929b6b39480284f8b3b.png)
如果不希望用下画线代替标准的\emph命令定义,可以给ulem宏包加normalem参数,或使用\normalem和\ULforem命令切换两种强调。
\usepackage[normalem]{ulem}
![1511360-20190625205113572-1614131204.png](https://i-blog.csdnimg.cn/blog_migrate/4cbe2bb23c0139b93c416b3d14fdba98.png)
除了下画线,ulem宏包也提供了其他一些修饰文字的命令:
\uuline{urgent} \qquad \uwave{boat} \qquad \sout{wrong} \qquad \xout{removed} \qquad \dashuline{dashing} \qquad \dotuline{dotty}
![1511360-20190625205137615-2001831464.png](https://i-blog.csdnimg.cn/blog_migrate/c11acf126a906748ca2ffbbf5676efbc.png)
CJKfntef宏包对汉字也提供了类似的功能
\usepackage{ctex}
\usepackage{CJKfntef}
\CJKunderdot{汉字,下加点}\\
\CJKunderline{汉字,下画线}\\
\CJKunderdblline{汉字,下画线}\\
\CJKunderwave{汉字,下画线}\\
\CJKsout{汉字,删除线}\\
\CJKxout{汉字,删除线}
![1511360-20190625205158868-560002555.png](https://i-blog.csdnimg.cn/blog_migrate/56f4861b5eb24a18e5e270da68d431a7.png)
此外,CJKfntef还提供了指定宽度,让汉字分散对齐的环境:
\begin{CJKfilltwosides}{5cm}
汉字,分散对齐
\end{CJKfilltwosides}
![1511360-20190625205221740-222942802.png](https://i-blog.csdnimg.cn/blog_migrate/4498903e8c88c104cb068c01972c2bfc.png)
使用CJKfntef宏包后\emph命令也被改为下画线的格式,同样可以用\normalem改回原来的意大利体定义。在ctex宏包及文档类中,可以使用fntef 选项调用CJKfntef,此时\emph的定义不会被改变为下画线格式。同时也可以使用\CTEXunderline等以\CTEX开头的命令代替以\CJK开头的命令,如:
\CTEXunderdot{汉字,加点}
![1511360-20190625205241565-948931493.png](https://i-blog.csdnimg.cn/blog_migrate/04934dc9222f469ea52a1d12603cf1d3.png)