'
我可以使用普遍更改撇号的字体
\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
这能解决你的问题吗?