• 04 设置字体


    设置字体

    字体的坐标

    • 字号(font size)
    • 字体编码(font encoding)
    • 字体族(font family)
    • 字体形状(font shape)
    • 字体系列(font series)

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

    	extit{Italic font test}
    	
    {fseries Bold font test}
    

    预定义命令的字体族有3种:罗马字体族(roman family)、无衬线字体族(sans serif family)和打字机字体族(typewriter family)。其命令为:

    预定义命令的字体形状有4种:直立形状(upright shape,也称为roman shape)、意大利形状(italic shape)、倾斜形状(slanted shape)、小型大写形状(small capitals shape)。其命令为:

    预定义命令的字体系列有中等(medium)和加宽加粗(bold extended)两类:

    字体的这三种性质有如确定字体的三维坐标,同一维度内的性质不能重叠,但不同类的性质则可以叠加。三种性质的组合效果见表

    除了上面列举的这些字体命令,还有 extnormal{文字}和 ormalfont命令用来把字体设置为"普通"的格式。默认情况下,普通字体相当于 mfamilymdseriesupshape的效果。普通字体特别适用于在复杂的字体环境中恢复普通的字体,尤其是在宏定义这类不知道外部字体设置的情况下,如:

    sffamily
    	extbf{ This is a paragraph of bold and 	extit{ italic font, sometimes returning to 	extnormal{ normal font} is necessary.}}
    

    使用斜体声明(itshape、slshape)时,最后一个倾斜的字母会超出右边界,使得后面的文字与它相距过紧,而用带参数的命令( extit、 exts1)就可以自动修正这个距离,也可以手工使用/命令进行这种倾斜校正(italic correction),如:

    {itshape M}M
    	
    	extit{M}M
    	
    {itshape M/}M
    

    这是我的结果,跟书上演示的不太一样,不过的确这两种写法是有差别,不过我根本不关心这个啊。

    在很少的情况下, extit自动加入的倾斜校正是不必要的,此时可以使用 ocorr命令禁止校正,如:

    	extit{M}M
    	
    	extit{M
    ocorr}M
    

    中文字体通常没有西文字体那样复杂的成套的变体,各个字体之间一般都是独立的,只有少数字体有不同重量的成套字体。因此,对于中文字体,一般只使用不同的字体族进行区分。xeCJK和CJK宏包机制下,中文字体的选择命令和西文字体是分离的,选择中文字体族使用CJKfamily命令,如:

    {CJKfamily{zhhei}这是黑体}
    	
    {CJKfamily{zhkai} 这是楷书}
    

    中文的字体族,根据不同的系统和使用方式各有不同。在ctex宏包及文档类下有一些预定义,在默认情况下(winfonts 选项)针对Windows常用字体配置了的四种字体族:song(宋体)、hei(黑体)、kai(楷书)、fs(仿宋);如果使用了其他选项,则可能会有不同的字体,为了方便使用,ctex宏包提供了简化的命令:

    {heiti 黑体} quad {songti 宋体} quad {kaishu 楷书} quad {fangsong 仿宋}
    

    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
    

    也可以使用

    usefont{编码}{族}{系列}{形状}
    

    一次性选择某个字体,如:

    usefont{T1}{pbk}{db}{n}
    PostScript Bookman Demibold Normal
    

    强调文字

    emph命令表示强调,用于把直立体改为意大利体,把意大利体改为直立体:

    You emph{should} use fonts carefully
    	
    	extit{You emph{should} use fonts carefully}
    

    与其他字体命令一样,emph也有一个声明形式em。

    (LaTeX​)命令underline可以给文字或公式加下画线:

    underline{Emphasized} text and underline{another}.
    

    不过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.
    

    如果不希望用下画线代替标准的emph命令定义,可以给ulem宏包加normalem参数,或使用 ormalem和ULforem命令切换两种强调。

    usepackage[normalem]{ulem}
    

    除了下画线,ulem宏包也提供了其他一些修饰文字的命令:

    uuline{urgent} qquad uwave{boat} qquad sout{wrong} qquad xout{removed} qquad dashuline{dashing} qquad dotuline{dotty}
    

    CJKfntef宏包对汉字也提供了类似的功能

    usepackage{ctex}
    usepackage{CJKfntef}
    CJKunderdot{汉字,下加点}\
    CJKunderline{汉字,下画线}\
    CJKunderdblline{汉字,下画线}\
    CJKunderwave{汉字,下画线}\
    CJKsout{汉字,删除线}\
    CJKxout{汉字,删除线}
    

    此外,CJKfntef还提供了指定宽度,让汉字分散对齐的环境:

    egin{CJKfilltwosides}{5cm}
    	汉字,分散对齐
    end{CJKfilltwosides}
    

    使用CJKfntef宏包后emph命令也被改为下画线的格式,同样可以用 ormalem改回原来的意大利体定义。在ctex宏包及文档类中,可以使用fntef 选项调用CJKfntef,此时emph的定义不会被改变为下画线格式。同时也可以使用CTEXunderline等以CTEX开头的命令代替以CJK开头的命令,如:

    CTEXunderdot{汉字,加点}
    
  • 相关阅读:
    python 生成白画布,黑画布和指定颜色画布(纯白色图片或黑色图片或纯色图片)(python generate white, black or pure color canva)
    tomcat启动出现乱码
    nicstat命令安装与使用
    sar命令详解【转】
    使用 virtualBox 让虚拟机连接外网
    跟面试官侃半小时MySQL事务,说完原子性、一致性、持久性的实现【转】
    jmeter的HTML Link Parser链路解析器的使用方法
    Jmeter导入badboy的jmx文件后,使用后置处理器的正则表达式提取器提取URL论坛板块ID失败
    Jforum中文版本不能发帖的问题
    部署JForum 2.1.9安装时遇到的问题:报错数据库问题
  • 原文地址:https://www.cnblogs.com/LastKnight/p/11086568.html
Copyright © 2020-2023  润新知