僅在文字模式下啟動字符

僅在文字模式下啟動字符

我將以下程式碼替換'\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}

在此輸入影像描述

相關內容