理由もなくフォントが元に戻る

理由もなくフォントが元に戻る

XeLaTeX で大まかな文法を書き、fontspec を使用してデフォルトのフォントを CM ではなく Bitstream Charter に変更します。出力の最初のページくらいは問題なく動作しますが、2 ページ目でフォントが突然 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}

2 ページ目の出力は次のようになります。 出力ビジュアル

そして、その領域の実際の 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 フォントで表示されますが、引数のテキストは\laBrill フォントで表示されます (例では強調するためだけに赤で表示しています。オプションは削除してくださいColor=FF0000)。

ここに画像の説明を入力してください

システム フォントの中にない場合はXCharter、より複雑な設定を使用できます。

\setmainfont{XCharter}[%
  Extension=.otf,
  UprightFont=*-Roman,
  ItalicFont=*-Italic,
  BoldFont=*-Bold,
  BoldItalicFont=*-BoldItalic,
]

また、通常はxunicodexltxtraをロードしないことにも注意してください。

利用可能なのバージョンに応じて、と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}

関連情報