¿Qué hace \rmfamily o cómo deshago una declaración como \em y \bfseries?

¿Qué hace \rmfamily o cómo deshago una declaración como \em y \bfseries?

El breve ejemplo siguiente muestra que \bfseriestiene su efecto, pero se superpone al \emefecto de . Si \rmfamilysimplemente significa "no añadir nada", eso también explica por qué básicamente no tiene ningún efecto. Sin embargo, tengo curiosidad por saber si hay una declaración \un-em/ \remove-previous-declarationso algo así.

\documentclass{article}
\usepackage{amsmath}
\begin{document}
Hello, \em my name \bfseries is Enrico. \rmfamily And now what?
\end{document}

Sé que puedo limitar el texto enfatizado usando el \emphcomando en lugar de la \emdeclaración, pero tengo curiosidad por saberlo.

Respuesta1

Puede utilizar \emresetpara cancelar el efecto de \emy normalfonto \mdseriespara cancelar el efecto de \bfseries.

\documentclass{article}
\begin{document}
Hello, \em my name \emreset\bfseries is Enrico. \normalfont And now what?
\end{document}

ingrese la descripción de la imagen aquí

O puede utilizarlo {}para limitar el alcance efectivo.

\documentclass{article}
\begin{document}
Hello, {\em my name} {\bfseries is Enrico.} And now what?
\end{document}

ingrese la descripción de la imagen aquí

O simplemente use TextFontCommand con parámetro.

\documentclass{article}
\begin{document}
Hello, \emph{my name} \textbf{is Enrico.} And now what?
\end{document}

ingrese la descripción de la imagen aquí

Respuesta2

La acción de \rmfamilyno es “no hacer nada”.

En el modelo NFSS, adoptado por LaTeX alrededor de 1994, las fuentes se caracterizan por cuatro atributos independientes:

  1. codificación
  2. familia
  3. forma
  4. serie

a lo que podríamos añadir el tamaño. Estos atributos son independientes entre sí. La codificación es un poco peculiar y no la abordaré.

Hay algunos comandos predefinidos que cambian un atributo a la vez:

  • \rmfamily, \sffamily,\ttfamily
  • \upshape, \itshape, \scshape,\slshape
  • \mdseries,\bfseries

Los paquetes de fuentes que admiten fuentes más ricas pueden definir otros comandos para formas y series.

También hay otra declaración "abstracta", a saber \em, que solía definirse como "si la fuente actual no está inclinada, hazlo \itshape, en caso contrario hazlo" \upshape. El significado se cambió recientemente para admitir una serie de comandos, en el sentido de poder especificar de manera diferente qué “énfasis dentro del énfasis” se realiza. No compliquemos las cosas, que tu ejemplo es fácil.

Suponiendo que comienzas con \normalfont, obtienes

Hola, <rmfamily/itshape/mdseries>mi nombre <rmfamily/itshape/bfseries>es Enrico. <rmfamily/itshape/bfseries>¿Y ahora qué?

El último \rmfamilycomando no hace nada, porque la familia ya estaba \rmfamily: nunca cambiaste de familia, ¿verdad?

No hay ningún comando que "deshaga el último cambio", porque esto no tiene sentido en el modelo NFSS: los comandos enumerados anteriormente nunca deben usarse en el documento, a menos que seandentro de un grupo. Por regla general de TeX, un grupo limita el alcance de una selección de fuente, por lo que cuando haces algo como

{\em text}

la elección de fuente realizada por \emdesaparece y la fuente vuelve a ser la vigente cuando se inició el grupo.

Generalmente, prefiero \itshape textsi quiero cursiva en una celda de alineación, porque \textit{text}haría que LaTeX girara más ruedas sin obtener ganancia.

¡Sí! Los comandos enumerados anteriormente tienen una contraparte de comando con argumento:

  • \textrm, \textsf,\texttt
  • \textup, \textit, \textsc,\textsl
  • \textmd,\textbf
  • \emph

El último es “abstracto” y la fuente que elige depende del contexto, al igual que \em. Tales comandosson preferiblespara cambiar la fuente en el texto corriente: use \emph{my name is Enrico}en lugar de {\em my ...}, porque \emphtambién se encarga de la corrección de cursiva que podría ser necesaria antes o después del cambio de fuente.

¿Qué haces si quieres que el énfasis interior se realice como negrita ascendente? Declaras en el preámbulo del documento algo como

\DeclareEmphSequence{\itshape,\upshape\bfseries,\itshape\bfseries}

Ejemplo.

\documentclass{article}

\DeclareEmphSequence{\itshape,\upshape\bfseries,\itshape\bfseries}

\begin{document}

Hello, \emph{my name \emph{is Enrico.}} And now what?

\emph{Hello, \emph{my name \emph{is Enrico.} And} now} what?

\end{document}

ingrese la descripción de la imagen aquí

En el segundo ejemplo (artificial), verá que los atributos se revierten uno por uno a medida que finalizan los distintos grupos anidados.

información relacionada