Schriftart wird ohne ersichtlichen Grund zurückgeändert

Schriftart wird ohne ersichtlichen Grund zurückgeändert

Ich schreibe eine grobe Grammatik in XeLaTeX und ändere mithilfe von fontspec die Standardschriftart von CM auf Bitstream Charter. Auf der ersten Seite der Ausgabe funktioniert alles einwandfrei, aber auf der zweiten Seite ändert sich die Schriftart plötzlich zurück zu Computer Modern. Ich kann keinen Grund dafür finden. Meine Präambel ist folgendermaßen aufgebaut:

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

Die Ausgabe auf der zweiten Seite sieht folgendermaßen aus: Visuelle Ausgabe

Und der eigentliche LaTeX-Code für diese Region läuft wie folgt ab.

\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.

Antwort1

Eine aktuelle TeX-Distribution verfügt über die OpenType-Schriftart XCharter, Sie können diese also stattdessen verwenden, \renewcommand{\rmdefault}{bch}erhalten jedoch nichts außer ASCII-Zeichen.

Darüber hinaus \lahandelt es sich, wie Sie definiert haben, lediglich um einen Schalter, der XeLaTeX anweist, von diesem Punkt an Brill zu verwenden.

Ein korrektes Dokument wäre

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

Beachten Sie, dass \lajetzttutnimmt ein Argument an, \largetut es aber nicht. Der Text ist in der Schriftart Charter, während der Text im Argument \lain Brill ist (ich habe sie im Beispiel nur zur besseren Hervorhebung rot eingefärbt, entfernen Sie die Color=FF0000Option).

Bildbeschreibung hier eingeben

Wenn Ihre Systemschriftarten nicht über diese verfügen XCharter, können Sie ein komplexeres Setup verwenden:

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

Beachten Sie auch, dass xunicodeund xltxtraim Allgemeinen nicht geladen werden sollten.

Abhängig von der fontspecIhnen zur Verfügung stehenden Version von müssen Sie möglicherweise die Reihenfolge der obligatorischen und optionalen Argumente in \setmainfontund ändern \newfontfamily:

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

In diesem Fall ist es besser, wenn Sie Ihre TeX-Distribution aktualisieren.

Antwort2

In

\la{N}

die {}tun nichts, \lanehmen kein Argument an, sie wechseln die Schriftart für den Rest der aktuellen Gruppe. In diesem Fall ist das die. \end{enumerate}An diesem Punkt wird die Schriftart (und alle anderen lokalen Deklarationen) auf die Werte zurückgesetzt, die sie bei hatten \begin{enumerate}.

Es ist nicht klar, ob Sie \lanur die Schriftart ändern wollten Noder ob Sie die Schriftart für das gesamte Dokument ändern wollten. In diesem Fall könnten Sie verwenden

 \setmainfont{Brill Roman}

verwandte Informationen