我有一个多语言文档,并使用 babel 在标准平均欧洲脚本和其他脚本之间切换:
\documentclass[english]{minimal}
\usepackage{fontspec}
\usepackage{babel}
\parindent0pt
\babelfont{rm}{Alegreya-Regular.ttf}
\babelfont{sf}{BarlowCondensed-Regular.ttf}
\newfontfamily\sfwide[WordSpace=2.0]{BarlowCondensed-Regular.ttf}
\babelprovide{chinese}
\babelfont[chinese]{rm}{NotoSerifSC-Regular.otf}
\babelfont[chinese]{sf}{NotoSansSC-Regular.otf}
\begin{document}
\rmfamily
Test Test \foreignlanguage{chinese}{中文字} Test Test
\sffamily
Test Test \foreignlanguage{chinese}{中文字} Test Test
\sfwide
Test Test \foreignlanguage{chinese}{中文字} Test Test
\end{document}
由于没有\sfwide
提供此语言的版本,因此未打印最后的中文片段。假设我有很多不同的脚本系统(阿拉伯语、希伯来语、亚美尼亚语、古希腊语等)和很多字体系列,所以我需要一个通用的创建 babelfont fallbacks 的方法,理想情况下是这样的
\babelalias{sfwide}{sf}
这会导致 babel在字体系列上下文中出现时切换到chinese
/ 。sf
\foreignlanguage{chinese}{...}
sfwide
问题我需要如何定义\babelalias#1#2
?
或者:有没有办法分辨出fontspec
它\sfwide
是的“子” \sffamily
?
评论
示例中用到的字体可以从google下载: 阿莱格雷亚, 巴洛, 诺托 简体中文
因为它有区别:我使用的是 texlive2019 的早期版本(latex.ltx fmtversion 2018-12-01),不,我无法更新。如果在较新版本的 LuaLaTeX 或 babel 中可以做到这一点,我将需要一个补丁。
答案1
我不确定我是否理解了这个问题,但\babelfont
可以创建字体系列,以便将 LaTeX 字体方案扩展到非拉丁文字的需求。在这里我使用了不同的颜色,但您可以根据自己最方便的方式定义字体。
\documentclass[english]{minimal}
\usepackage{fontspec}
\usepackage{babel}
\parindent0pt
\babelfont{rm}{FreeSerif}
\babelfont{sf}{FreeSans}
\babelfont{sfwide}{CMU Bright Bold Extended}
\babelprovide{chinese}
\babelfont[chinese]{rm}[Color=2255cc]{IPAMincho}
\babelfont[chinese]{sf}[Color=55cc22]{IPAMincho}
\babelfont[chinese]{sfwide}[Color=cc5522]{IPAMincho}
\begin{document}
\rmfamily
Test Test \foreignlanguage{chinese}{中文字} Test Test
\sffamily
Test Test \foreignlanguage{chinese}{中文字} Test Test
\sfwidefamily
Test Test \foreignlanguage{chinese}{中文字} Test Test
\end{document}