Caractere ativo apenas em modo texto

Caractere ativo apenas em modo texto

Tenho o seguinte código para substituir ', \textquotesingleporque prefiro esse símbolo quando digito um apóstrofo.

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

O problema é que quando eu quero escrever uma derivada de uma função ela não compila, tenho que digitar \text{'}, mas nem fica bom, deve ficar um pouco inclinado.

Então, eu queria saber se é possível criar 'um caractere ativo apenas no modo de texto e não no modo matemático, para que eu possa digitar facilmente \[ f'(x) \].

Responder1

Você precisa diferenciar entre o modo texto e matemático, mas também atualizar a macro interna que aguarda outra 'no modo matemático para cuidar do novo código da categoria.

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

insira a descrição da imagem aqui

informação relacionada