Активный символ только в текстовом режиме

Активный символ только в текстовом режиме

Мне нужно заменить следующий код 'на \textquotesingle, так как я предпочитаю этот символ при вводе апострофа.

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

Проблема в том, что когда я хочу написать производную от функции, она не компилируется, мне приходится набирать \text{'}, но это даже выглядит не очень хорошо, должно выглядеть немного наклонно.

Поэтому мне стало интересно, возможно ли сделать 'активным символ только в текстовом режиме, но не в математическом, чтобы я мог легко набирать текст \[ f'(x) \].

решение1

Вам необходимо различать текстовый и математический режимы, а также обновить внутренний макрос, который ожидает другого макроса 'в математическом режиме, чтобы обработать новый код категории.

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

введите описание изображения здесь

Связанный контент