替换分隔符(列表)之间的文本

替换分隔符(列表)之间的文本

我想lstlistings通过 格式化包内的代码\lstdefinestyle。目标是用 替换正则表达式之后'C:\直到正则表达式.eps'的文本PATH

我怎样才能意识到这一点?

该解决方案应该尽可能通用,即两者之间的文本不是恒定的。

答案1

在...的帮助下进一步的研究和这个后续帖子,我找到了以下解决方案:

在main.tex中添加如下代码:

\definecolor{mylilas}{RGB}{170,55,241}

\makeatletter

\let\orig@lst@DelimOpen=\lst@DelimOpen
\def\lst@DelimOpen#1#2#3#4#5#6\@empty{%
    \orig@lst@DelimOpen{#1}{#2}{#3}{#4}{#5}{#6}\@empty
    \@delim@open@hook
}
\let\orig@lst@DelimClose=\lst@DelimClose
\def\lst@DelimClose{%
    \@delim@close@hook
    \orig@lst@DelimClose
}

\def\@delim@open@hook{%
    \def\@temp{\formatPATH}%
    \ifx\lst@currstyle\@temp
        \formatPATH@start
    \fi
}
\def\@delim@close@hook{%
    \def\@temp{\formatPATH}%
    \ifx\lst@currstyle\@temp
        \aftergroup\formatPATH@end
    \fi
}

\def\formatPATH{}
\def\formatPATH@start{{\color{mylilas} \textquotesingle C:\textbackslash... }{\bfseries\color{black} YOUR\_PATH}\setbox0\vbox\bgroup}
\def\formatPATH@end{\egroup{\color{mylilas} \textquotesingle}}

\makeatother

并在应应用此格式的列表中(例如\lstdefinestyle):

moredelim=[is][\formatPATH]{'C:\\}{.eps'},

因此,输出结果不是以下形式:

在此处输入图片描述

我能够实现这个目标:

在此处输入图片描述

因此,信息的通用编辑是有效的,再次感谢!

相关内容