处理输入文件字符

处理输入文件字符

我想处理非英文混合文件。例如,请参见以下示例代码:

\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}

在此处输入图片描述

相关内容