latex中文_[LaTeX中文使用]统一文本与数学模式下的逗号

latex中文_[LaTeX中文使用]统一文本与数学模式下的逗号

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

latex中⽂_[LaTeX中⽂使⽤]统⼀⽂本与数学模式下的逗号本⽂已加⼊专栏⽂章⽬录,归⼊「进阶使⽤」⽂章系列。引⼊LaTeX 有两种模式,⽂本模式(text mode)和数学模式(math mode)。逗号也有两个「符号」,西⽂的逗号(U+002C)和中⽂的逗号(U+FF0C)。两两组合,共有四种情况。使⽤ ctex ⽂档类,默认的输出是这样的看默认输出,似乎只有中西的差异,⽽没有⽂本-数学模式的差异。通过配置其他公式字体、使⽤ setCJKmathfont(xeCJK 宏包提供),可以让数学模式中的中西逗号使⽤其他字体,从⽽与相应的⽂本模式下的逗号「长得不像」。对纯西⽂的⽂档⽽⾔,使⽤合适的正⽂、数学字体,能在⽂本和数学模式下获得⽐较⼀致的逗号。西⽂排版中,对于⽂本和数学模式下的逗号「长得不像」,也有较⼤的宽容。⽬前的中⽂排版,对于「在⽂本和数学模式下的逗号应该长得⼀模⼀样」有⽐较强的需求。⼀种做法是,⿇烦作者,在⽂本模式中也使⽤「西⽂逗号 + 空格」的⽅式来替代中⽂句⼦中的逗号,以达到全篇逗号⼀致的效果。⽐较折衷的⽅案可以是,对公式内部的逗号(如分隔有序数组的逗号 和、进⾏列举的逗号 ),输⼊西⽂逗号,输出时使⽤(西⽂)公式字体;对于在⾏⽂中起到标点作⽤的逗号(见下例),输⼊中⽂逗号,输出时使⽤中⽂字体;另有⼀些不明确的情况,由作者和编辑共同商议决定,并在全⽂保持⼀致。第三种情况的例⼦,⽐如「 在, 时的值为 5」中的逗号。本⽂尝试「让数学模式下输⼊的西⽂逗号,与⽂本模式下输⼊的中⽂逗号在外观上保持⼀致」。三种⽅案⾸先是最优雅的⽅案,使⽤ unicode-math 宏包提供的 setmathfont 命令的 range 选项。为了凸显效果,特意为数学模式下的西⽂逗号使⽤了思源宋体的最⼤字重。range 选项以前出现过「实际影响范围超出指定的字符范围」 的问题,虽然现在已经修复,使⽤时仍需注意。第⼆种⽅案,是使⽤ LaTeX 的 NFSS 机制,让公式模式⾥的西⽂逗号使⽤中⽂字体。使⽤辅助命令(修改⾃这个 回答)可以输出当前字体在 NFSS 机制下的编码、字族、字体系列和字形信息,这些信息正是命令 DeclareSymbolFont 所需的。补例:获取当前中⽂字体信息第三种⽅案最为⾃由,是把数学模式下的逗号变成 active character,从⽽可以定义为宏。如果恰好使⽤了其他把逗号定义为宏的宏包(例如调整数学标点前后间距的宏包 mathpunctspace),就需要进⾏特殊的处理。⽅案讨论前两种⽅案,其实是使⽤中⽂字体替代(西⽂)公式字体,来排版数学模式下的西⽂逗号。这两种⽅案都没有使⽤「中⽂字体提供的中⽂逗号」,来排版数学模式下输⼊的西⽂逗号。它们之所以有效,是因为中⽂字体在设计时,通常会保持同⼀字体内的中西逗号「长得像」,即只在符号宽度⽅⾯有差别。后两种⽅案,尤其是第三种⽅案,因为改动相对底层,使⽤时务必提⾼警惕;最好是别⽤。本⽂介绍的⽅案,都是「让输⼊的西⽂逗号,在排版结果中长得像中⽂逗号」。也可以从另⼀个⽅向来尝试满⾜「逗号⼀致性」的需求,即「使⽤西⽂字体,排版输⼊的中⽂逗号」。搭配使⽤ xeCJK 宏包的 Mapping 选项和分区字体设置功能,似乎可以做出⼀个⽅案。稍微脱离现实⼀些,理想情况是,(⾄少)有⼀套「中⽂ - 西⽂ - 公式」字体,它们搭配使⽤⼗分和谐。相关源码,见项⽬ muzimuzhi/latex-examples ⾥的⽂件unicode-math-multiple-math-fonts.*nfss-declare-math-symbol.*add-math-active-character.*

发布者:admin,转转请注明出处:http://www.yc00.com/news/1689641513a273120.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信