我有一个命令:
\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}