La fuente vuelve a cambiar sin motivo aparente

La fuente vuelve a cambiar sin motivo aparente

Redactar una gramática aproximada en XeLaTeX y usar fontspec para cambiar la fuente predeterminada a Bitstream Charter en lugar de CM. Todo funciona bien para la primera página de salida, pero en la segunda página la fuente vuelve abruptamente a Computer Modern. No encuentro ningún motivo para ello. Mi preámbulo está configurado así:

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

El resultado de la segunda página se ve así: Visualización de salida

Y el código LaTeX real para esa región funciona así.

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

Respuesta1

Una distribución TeX actualizada tiene la fuente XCharter OpenType, por lo que puede usarla en lugar de \renewcommand{\rmdefault}{bch}la cual no le dará nada excepto caracteres ASCII.

Además, \lacomo usted definió, es solo un interruptor que le dice a XeLaTeX que use Brill a partir de ese momento.

Un documento correcto sería

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

Tenga en cuenta que \laahorahaceacepta un argumento, pero \largeno lo hace. El texto está en la fuente Charter, mientras que el texto en el argumento de \laestará en Brill (los coloreé en rojo solo para darle mayor énfasis en el ejemplo, elimine la Color=FF0000opción).

ingrese la descripción de la imagen aquí

Si no las tiene XCharterentre las fuentes de su sistema, puede utilizar una configuración más compleja:

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

Tenga en cuenta también que xunicodey xltxtrageneralmente no debe cargarse.

Dependiendo de la versión que fontspectenga disponible, es posible que deba cambiar el orden de los argumentos obligatorios y opcionales a \setmainfonty \newfontfamily:

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

En este caso es mejor si actualizas tu distribución TeX.

Respuesta2

en

\la{N}

No están {}haciendo nada, \lano aceptan argumentos, cambian la fuente para el resto del grupo actual. En este caso, ese es el \end{enumerate}Entonces, en ese punto la fuente (y cualquier otra declaración local) vuelve a los valores que tenían en \begin{enumerate}.

No está claro si \lasolo tenía la intención de cambiar la fuente No si quería cambiar la fuente del documento while, en cuyo caso podría usar

 \setmainfont{Brill Roman}

información relacionada