latex怎么改字体大小_LaTeX入门(四)——文字

latex怎么改字体大小_LaTeX入门(四)——文字

2023年7月18日发(作者:)

latex怎么改字体⼤⼩_LaTeX⼊门(四)——⽂字上⼀篇⽂章讲了LaTeX的主要框架。从这篇⽂章起,我们就开始从各个⾓度去细致地研究LaTeX写作了。说到字体,就不得不说⼀些关于字体的常识。字体就像是我们做⾐服时的布料,⽆论我们设计的⾐服长什么样⼦,都是得靠特定的布料才能纺成。字体族字体族,就相当于布料的⼚家,布料有瑞蚨祥的,有谦祥益的;字体族,也有Times New Roman的,Helvetica的。⽽每⼀个字体族,都有其对应的许多字体形状,就相当于⼀个布料⼚家⽣产的布料,会有许多种类。⼤多数字体族提供的字体形状有常规体,意⼤利斜体。⽽布料⼚家对于每⼀种布料有时候还会提供粗的与细的两个品种,⼀个字体族对于每⼀个字体形状,有时候也有两个系列:粗体与正常体。在 Windows 中可以在设置->字体中查看电脑中安装的字体名称及其预览,在macOS中可以在其他->字体册中查看电脑中安装的字体名称(PostScript 名称)及其预览。在LaTeX中,我们的裁缝说,他织⾐服要三种布料,不管你在设计图纸中⽤没⽤到,这三种布料会被他⾃动⽤在合适的地⽅。如果你不提供给他,那么他就默认使⽤⾃⼰定的三种布料种类。LaTeX要求我们定义三种字体族,分别为主字体族(正⽂字体族),⽆衬线字体族,打字机字体族。如果我们不提供给他,那么他会使⽤TeX默认的字体族(很丑,很丑)。这三种字体族,会在特定的环境中默认使⽤。⽐如说,在正⽂环境内,即begin{document}和end{document}之间,⼀般默认都是正⽂字体族;在begin{verbatim}和end{verbatim}之间,⼀般默认都是打字机字体族。这⾥⼩⼩地科普⼀下,什么叫⽆衬线字体呢?维基百科中这样说: ⽆衬线体⽆衬线体(英语:sans-serif)指没有衬线的字体,与衬线字体相反,完全抛弃装饰衬线,只剩下主⼲,造型简明有⼒,更具现代感,起源也很晚。适⽤于标题、⼴告,瞬间的识别性⾼。

在汉字等东亚字体中称“⿊体”(或“⽅体”),与有衬线的“⽩体”相对。并配了这样的图:相信⼤家看了图⽚,就能很清楚地知道衬线字体和⽆衬线字体的区别了。同时,⼤家可以回忆⼀下,我们看过的横幅、海报,基本都⽤的是⽆衬线字体,看的PPT,⼤部分也都⽤的是⽆衬线字体。因为⽆衬线字体醒⽬,更能让⼈在远⽅看得清。⽽打字机字体,则主要⽤于代码的排版。我们如何设置这些字体族呢? ⾸先,现在导⾔区(对,就是documentclass{}和begin{document}之间的部分)使⽤宏包fontspec, 即usepackage{fontspec}然后分别可以⽤setmainfont{fontName}, setsansfont{fontName}, setmonofont{fontName}来设置主字体族,⽆衬线字体族和打字机字体族。其中fontName就是上⽂提到的字体名称,需要去操作系统特定的地⽅去找的(具体参见上⽂),不是什么“雅⿊”,“宋体”,是类似于"simsun", "Times new roman"这类的⽽如果⾃⼰还想单独设置字体族对应的字体形状,可以仿照下⾯的例⼦:setmainfont[BoldFont=boldFontName, ItalicFont=italicFontName]{mainFontName}来设置。然后,在正⽂中,我们有如下⼏个命令:textrm{}和rmfamily, textsf{}和sffamily, texttt{}和ttfamily, 可以让我们分别主动调⽤主字体族,⽆衬线字体族和打字机字体族。 注意到每⼀组命令都有两个,⼀个是带参数的,⼀个是不带参数的。带参数的命令是把参数变成对应的字体族,不带参数的命令是把该命令所在的作⽤域内的⽂字变成对应的字体族。⽐如说,我在LaTeX的正⽂区内输⼊如下指令(导⾔区等省略):{ttfamily This is ttfamily and textsf{this is textsf} and} this is the main font.那么排版出来的结果是类似地,我们可以使⽤textup{}和upshape, textit{}和itshape来分别主动调⽤当前字体族的直⽴体与意⼤利斜体,⽤textmd{}和mdseries,textbf{}和bfseries来分别调⽤当前字体形状的正常体与粗体。那么,如果我们还想⽤第四种字体,该怎么办呢?我们可以在导⾔区⽤命令newfontfamilynewfontname{fontName}来定义⼀个新字体,其中newfontname就是你想⽤来使⽤新定义的字体的指令,fontName就是新字体的名字。接下来,就可以在正⽂中使⽤{newfontname This iswritten in new font}来调⽤新字体。中⽂字体值得指出的是,上⾯fontspec对字体的设置,只适⽤于英⽂字体。也就是说,你⽤fontspec,只能设置⽂本⾥英⽂的字体。对于⽂本中中⽂字体的设置,请看下⾯:如果要在⽂本中输⼊中⽂,⾸先需要使⽤⽂档类(记不得的同学请看上⼀篇⽂章)ctexart,或者ctexrep之类的,也就是把对应的英⽂⽂档类缩写,前⾯加ctex.然后不需要再新引⼊宏包,直接使⽤命令setCJKmainfont{fontName}, setCJKsansfont{fontName}, setCJKmonofont{fontName}来分别设置正⽂的主中⽂字体族,⽆衬线中⽂字体族和打字机中⽂字体族。同时,我们也可以⽤setCJKfamilyfont{newFontName}{fontName}来定义新中⽂字体,然后再正⽂中⽤CJKfamily{newFontName}来使⽤新中⽂字体。同样地,如果想单独设定某个字体族的字体形状,也可以模仿setCJKmainfont[BoldFont=boldFontName, ItalicFont=italicFontName]{mainFontName}来设置。顺便说⼀句,CJK的意思是Chinese, Japanese和Korean,代表中⽇韩三国⽂字。此外,需要特别提出的是,对于macOS⽤户,如果使⽤ctex这类的⽂档类,如果⾃⼰不设置主中⽂字体、⽆衬线中⽂字体和打字机中⽂字体,就会报错,因为这个⽂档类默认是针对Windows的字体配置的。字号上述的是字体的设置,接下来讲⼀下字号的设置这⾥强调⼀点,LaTeX中的字号与Word中的字号在某些细微之处是不⼀样滴,请不要相同字号下⽤Word和LaTeX作⽐较。LaTeX提供了⼗个⼗分⽅便的命令:tiny, scriptsize, footnotesize, small, normalsize, large, Large, LARGE, huge, Huge这⼗个命令可以⽅便地改变其所在的作⽤域内的字体⼤⼩和⾏距(关于⾏距我会在下⼀篇⽂章提及)。此外,我们也可以⽤fontsize{}{}selectfont来设置字号(最后的selectfont的含义不需要理解,反正记住只要改字号,在之后⼀定要加上selectfont才能⽣效)。前者写字号的绝对⼤⼩,如10pt, 20pt. 后者写的是⾏距,⼀般是字号乘1.2,具体讨论可看下⼀篇⽂章。对于中⽂,我们可以⽤zihao{-3}来表⽰⼩三号字体。其余的可以类似推得。空格对于英⽂⽂本来说,单词间的空格是有效的,但仅限于⼀个空格。⽐如说,我在正⽂内输⼊Hello world!, 输出的Hello和world!之间会有⼀个空格。但是,如果我在正⽂内输⼊Hello world!, 输出的Hello和world!之间的空格依然只有⼀个。 这个时候,我们可以⽤指令 , 也就是反斜杠加空格,来实现空格。⽐如说,我想输出的Hello和world!之间有五个空格,那么我在正⽂内可以写Hello world!。对于指令来说,其后的空格将会被省略。⽐如说,Hello LaTeX world!,输出的时候LaTeX和world!之间将没有空格。为了解决这种情况,我们依然可以使⽤指令 , 即Hello LaTeX world!。对于中⽂⽂本来说,中⽂汉字之间的空格默认被省略,你好和你 好输出的效果是⼀样的。为了解决这⼀问题,我们可以类似地⽤你 好来解决。对于中英⽂混排⽂本来说,默认会在中⽂和英⽂之间加⼀个空格,⽽这也是论⽂写作的规范。也就是你的paper交了吗输出的时候"的"、"paper"、"交" 之间各有⼀个空格。如果你不喜欢这样,可以在导⾔区内加⼊CJKsetecglue{}这个命令(⼤括号内什么都不⽤写)。如果要对空格更精细地控制,请看下⾯⼀段。上述的 只是空格的⼀种,它产⽣的空格的宽度约为三分之⼀个字母"M"的宽度。 LaTeX中还有许多其他产⽣空格的⽅法。如果记⼀个"M"的宽度为m, ,产⽣1/6个m的宽度,;产⽣2/7个m的宽度,quad产⽣⼀个m的宽度,qquad产⽣两个m的宽度。特殊⽂字有时候,我们也会遇到输⼊特殊⽂字的地⽅。⽐如说在2016年数模美赛中,就要输⼊Erdős这个名字。虽然XeLaTeX可以识别Unicode编码,但我还是建议⼤家⽤LaTeX的指令来加上字母上标。⽐如说这个ő,可以⽤H{o}来表⽰。⽽对于德语等语⾔的变⾳符号ö等,也可以⽤类似于"{o} 的指令来表⽰。汉语拼⾳四声为:阴平={a}, 阳平'{a}, 上声v{a}, 去声`{a} (这个左引号是英⽂模式下数字键1左边的那个)。此外,如果要使⽤Unicode编码,则可以⽤u后加对应的数字来实现,如u22ef这样。 如果要⽤ASCII码来表⽰的话,则⽤char后加对应的数字来实现,如char92这样。对于LaTeX的控制性字符,⽐如说, &, ~, ^, _, #, %, {, }, 除了以外,其他都可以在原有字符前⾯加上来实现转义输出,如&就会输出&. ⽽对于反斜杠,我个⼈建议⽤char92来实现。 ⽽~和^我建议⽤~{}和^{}来实现。最后的最后我可介绍⼀下ASCII和Unicode编码。我们知道,电脑中对数据的存储只能⽤⼆进制,也就是0和1来进⾏。那么我们就需要将⽂字与⼆进制数⼀⼀映射。由于计算机最初在使⽤拉丁字母的国家出现,所以,他们想,只要把字母表和⼏个常见的符号⼆进制化就⾏了,就产⽣了ASCII码。这张表⾥,每个字母及符号都有对应的⼆进制数表⽰。ASCII码对于西欧的语⾔,修修补补,增加⼏个字母就可以解决。但是嘞,他们发现,世界上还有中⽂、⽇⽂、谚⽂、⼦喃这样的⽂字,这种⽂字不是⽤字母表来构成单词,或者说,这些⽂字的字母表成千上万。这可咋办呢。于是,Unicode应运⽽⽣。它包含了世界上⼏乎所有的⽂字,每个⽂字都有对应的Unicode编码表⽰。以上就是ASCII码和Unicode码。最后由于本⼈能⼒有限,⽂章必有疏漏之处,敬请⽅家不吝斧正。

发布者:admin,转转请注明出处:http://www.yc00.com/web/1689641207a273080.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信