仅在文本模式下活动字符

仅在文本模式下活动字符

我有以下代码来替换'\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}

在此处输入图片描述

相关内容