下面的代码无法编译逻辑上:
Verbatim-like command '\test' illegal in argument...
有没有办法“修复”这个问题?如果没有,我至少可以使用一个m
参数,然后用例如替换所有下划线::
,例如,如果用户输入了\section{\test{txt::example}}
?
\documentclass[12pt]{article}
\usepackage{color}
\NewDocumentCommand{\test}{v}{%
\textcolor{red}{\fbox{\texttt{#1}}}%
}
\begin{document}
\section{\test{txt_example}}
The smallest \test{txt_example} in the world.
\end{document}
答案1
进行正则表达式替换。
\documentclass[12pt]{article}
\usepackage{xcolor}
\ExplSyntaxOn
\NewDocumentCommand{\test}{m}
{
\formattest { \projetmbc_test:n { #1 } }
}
\tl_new:N \l__projetmbc_test_tl
\cs_new_protected:Nn \projetmbc_test:n
{
\tl_set:Nn \l__projetmbc_test_tl { #1 }
\regex_replace_all:nnN { _ } { \c{textunderscore} } \l__projetmbc_test_tl
\tl_use:N \l__projetmbc_test_tl
}
\ExplSyntaxOff
\NewDocumentCommand{\formattest}{m}{%
\textcolor{red!90!blue}{\fbox{\ttfamily #1}}%
}
\begin{document}
\section{\test{txt_example}}
The smallest \test{txt_example} in the world.
\end{document}