如何对 '\texttt{%>%}' 进行去标记化

如何对 '\texttt{%>%}' 进行去标记化

我有一个命令:

\newcommand{\help}[2]{
  \href{https://www.rdocumentation.org/packages/#1/functions/#2}{\texttt{?\detokenize{#2}}}
}

和另一个

\newcommand{\code}[1]{\texttt{\detokenize{#1}}}

他们不与

\help{magritrr}{%>%}

或者

\code{%>%}

答案1

正如@Symbol 1 在评论中所建议的那样,在吸收参数之前更改 catcode%是必不可少的。然后确保完成后将其改回原样,同样重要。

\documentclass{article}
\newcommand{\code}{\catcode`\%=12 \codeaux}
\newcommand\codeaux[1]{\texttt{\detokenize{#1}}\catcode`\%=14}
\begin{document}
\code{%>%}

Test% if these print or not
\end{document}

在此处输入图片描述

另一种方法是使用分组来否定退出时的 catcode 更改:

\documentclass{article}
\newcommand{\code}{\begingroup\catcode`\%=12 \codeaux}
\newcommand\codeaux[1]{\texttt{\detokenize{#1}}\endgroup}
\begin{document}
\code{%>%}

Test% if these print or not
\end{document}

相关内容