
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:
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 \la
handelt 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 \la
jetzttutnimmt ein Argument an, \large
tut es aber nicht. Der Text ist in der Schriftart Charter, während der Text im Argument \la
in Brill ist (ich habe sie im Beispiel nur zur besseren Hervorhebung rot eingefärbt, entfernen Sie die Color=FF0000
Option).
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 xunicode
und xltxtra
im Allgemeinen nicht geladen werden sollten.
Abhängig von der fontspec
Ihnen zur Verfügung stehenden Version von müssen Sie möglicherweise die Reihenfolge der obligatorischen und optionalen Argumente in \setmainfont
und ä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, \la
nehmen 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 \la
nur die Schriftart ändern wollten N
oder ob Sie die Schriftart für das gesamte Dokument ändern wollten. In diesem Fall könnten Sie verwenden
\setmainfont{Brill Roman}