处理 `\section` 中的下划线及类似内容

处理 `\section` 中的下划线及类似内容

下面的代码无法编译逻辑上

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}

在此处输入图片描述

相关内容