字体无缘无故变回原样

字体无缘无故变回原样

在 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}

相关内容