在 XeLaTeX 中编写粗略的语法,并使用 fontspec 将默认字体更改为 Bitstream Charter 而不是 CM。输出的第一页左右一切正常,但在第二页,字体突然变回 Computer Modern。我找不到任何原因。我的序言设置如下:
\usepackage[left=0.5in,right=0.5in,top=1in,bottom=1in]{geometry}
\renewcommand{\rmdefault}{bch}
\usepackage{fontspec}
\newfontfamily\la{Brill Roman}
\usepackage{xunicode}
\usepackage{xltxtra}
\usepackage{array}
\usepackage{multirow}
\renewcommand{\p}{\textipa}
第二页的输出如下所示:
该区域的实际 LaTeX 代码运行如下。
\item \la{V} $\to$ any of the vowels or diphthongs.
\item \la{C2} $\to$ optional; restricted to nasals, fricatives, and \la{/l/}.
\end{enumerate}
\item \la{N} -- syllabic nasal. May be any of the nasals.
\end{enumerate}
\large{\textbf{Stress}}
Stress is always on the penultimate syllable.
答案1
最新的 TeX 发行版具有 XCharter OpenType 字体,因此您可以使用它来代替,但\renewcommand{\rmdefault}{bch}
它不会给您提供除 ASCII 字符之外的任何其他内容。
此外,\la
正如您所定义的,它只是一个开关,告诉 XeLaTeX 从那时起使用 Brill。
正确的文档应该是
\documentclass{article}
\usepackage[left=0.5in,right=0.5in,top=1in,bottom=1in]{geometry}
\usepackage{fontspec}
\setmainfont{XCharter}
\newfontfamily\lafont{Brill Roman}[Color=FF0000]
\DeclareTextFontCommand{\la}{\lafont}
\usepackage{array}
\usepackage{multirow}
\newcommand{\p}{\textipa}
\begin{document}
\begin{enumerate}
\item \la{V} $\to$ any of the vowels or diphthongs.
\item \la{C2} $\to$ optional; restricted to nasals, fricatives, and \la{/l/}.
\item \la{N} -- syllabic nasal. May be any of the nasals.
\end{enumerate}
{\large\textbf{Stress}\par}
Stress is always on the penultimate syllable.
\end{document}
注意\la
现在做接受一个论点,但\large
没有。文本采用 Charter 字体,而论点中的文本\la
将采用 Brill 字体(我将它们涂成红色只是为了在示例中更加突出,删除该Color=FF0000
选项)。
如果您的系统字体中没有XCharter
,您可以使用更复杂的设置:
\setmainfont{XCharter}[%
Extension=.otf,
UprightFont=*-Roman,
ItalicFont=*-Italic,
BoldFont=*-Bold,
BoldItalicFont=*-BoldItalic,
]
还要注意,通常不应加载xunicode
和。xltxtra
根据您可用的版本fontspec
,您可能需要将强制参数和可选参数的顺序切换为\setmainfont
和\newfontfamily
:
\newfontfamily\lafont[Color=FF0000]{Brill Roman}
\setmainfont[%
Extension=.otf,
UprightFont=*-Roman,
ItalicFont=*-Italic,
BoldFont=*-Bold,
BoldItalicFont=*-BoldItalic,
]{XCharter}
在这种情况下,最好更新您的 TeX 发行版。
答案2
在
\la{N}
{}
不执行任何操作,不\la
接受参数,它会为当前组的其余部分切换字体。在本例中,即因此\end{enumerate}
此时字体(和任何其他本地声明)将恢复为它们在 时的值\begin{enumerate}
。
目前尚不清楚您是否只想\la
更改字体N
,或者是否想更改整个文档的字体,在这种情况下您可以使用
\setmainfont{Brill Roman}