更改命令中的撇号字体

更改命令中的撇号字体

'我可以使用普遍更改撇号的字体

\def\myprime{{\usefont{T1}{ppl}{m}{n}\symbol{39}}}
\catcode`'=\active
\def'{\myprime}

但是,我真正想做的是只在命令内更改它。我尝试了以下代码,但它不起作用。有什么帮助吗?

平均能量损失

\documentclass[10pt]{beamer}

\def\myprime{{\usefont{T1}{ppl}{m}{n}\symbol{39}}}
\catcode`'=\active
\newcommand{\mycommand}[1]{{\def'{\myprime}\color{blue}#1}}

\begin{document}
\begin{frame}
He's\\
He\myprime s\\
\mycommand{He's}
\end{frame}
\end{document}

似乎有一些相关的问题,但我很难应用它们。

答案1

执行“搜索并替换”:

\documentclass[10pt]{beamer}

\newcommand{\pplapostrophe}{{\usefont{T1}{ppl}{m}{n}'}}

\ExplSyntaxOn
\NewDocumentCommand{\mycommand}{m}
 {
  \tl_set:Nn \l_tmpa_tl { #1 }
  \regex_replace_all:nnN { ' } { \c{pplapostrophe} } \l_tmpa_tl
  \tl_use:N \l_tmpa_tl
 }
\ExplSyntaxOff

\begin{document}
\begin{frame}

He's

He\pplapostrophe s

\mycommand{He's}

\end{frame}

\end{document}

该部分\c{pplapostrophe}l3regex的术语。因此,我们将用该命令\pplapostrophe替换所有出现的。'

在此处输入图片描述

答案2

\def在更改的字体中将活动设置'为撇号,但不要\catcode全局更改。然后,您可以随时在本地更改它,从而在需要时“唤醒”定义:

{\catcode`'=\active\global\def'{{\usefont{T1}{ppl}{m}{n}\symbol{39}}}
\def\myprime{\catcode`'=\active}
He's,
{\myprime she's,} % changed apostrophe awakened in this {group}
it's

这能解决你的问题吗?

相关内容