我想处理非英文混合文件。例如,请参见以下示例代码:
\documentclass{article}
\begin{document}
{\it It is a statement in English.}
\par
{\bf This non-English line requires swapping.}
\end{document}
现在假设 {\it } 声明中的文本不需要任何更改,而 {\bf } 声明中的文本只需要更改。这里我需要将中间/结尾的“e”、“i”和“ui”放在紧接的辅音之前。也就是说,{\bf } 中的语句应打印为“iThs non-Einglsh ilen eruiqers swaippng”。有什么办法可以实现吗?
答案1
您可以使用以下正则表达式工具expl3
:
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\swap}{m}
{
\dilip_swap:n { #1 }
}
\tl_new:N \l__dilip_swap_tl
\cs_new_protected:Nn \dilip_swap:n
{
\tl_set:Nn \l__dilip_swap_tl { #1 }
\regex_replace_all:nnN
{ ([bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]*)(e|i|ui) }
{ \2 \1 }
\l__dilip_swap_tl
\tl_use:N \l__dilip_swap_tl
}
\ExplSyntaxOff
\begin{document}
\textit{It is a statement in English.}
\textbf{\swap{This non-English line requires swapping.}}
\end{document}