我想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'},
因此,输出结果不是以下形式:
我能够实现这个目标:
因此,信息的通用编辑是有效的,再次感谢!