Carácter activo solo en modo texto

Carácter activo solo en modo texto

Tengo el siguiente código para reemplazar 'porque \textquotesingleprefiero este símbolo cuando escribo un apóstrofe.

\makeatletter
\catcode`\'=\active
\def'{\textquotesingle}
\makeatother

El problema es que cuando quiero escribir un derivado de una función no se compila, tengo que escribir \text{'}, pero ni siquiera se ve bien, debería verse un poco inclinado.

Entonces me preguntaba si es posible crear 'un carácter activo solo en modo texto y no en modo matemático, para poder escribir fácilmente \[ f'(x) \].

Respuesta1

Debe diferenciar entre el modo texto y el modo matemático, pero también actualizar la macro interna que espera otra 'en modo matemático para encargarse del nuevo código de categoría.

\documentclass{article}

\makeatletter
\catcode`\'=\active
\protected\def'{\ifmmode\expandafter\active@math@prime\else\textquotesingle\fi}
\gdef\pr@m@s{%
  \ifx'\@let@token
    \expandafter\pr@@@s
  \else
    \ifx^\@let@token
      \expandafter\expandafter\expandafter\pr@@@t
    \else
      \egroup
    \fi
  \fi}
\makeatother

\begin{document}

It's $f'$ or $f''$

\end{document}

ingrese la descripción de la imagen aquí

información relacionada