一旦在“宏代码”环境中添加了颜色,为什么“宏代码”环境的颜色会发生变化?

一旦在“宏代码”环境中添加了颜色,为什么“宏代码”环境的颜色会发生变化?

我正在翻译一些 LaTeX 文档,目的是通过颜色区分文档的各个部分,以便于阅读。例如,我想将需要解释的宏命令指定为蓝色,同时将包代码指定为棕色。但是,在下面的代码片段(作为 MWE 的 xparse.dtx 的一小部分)中,为什么一部分是蓝色,另一部分是棕色,即使这些代码都在一个“宏代码”环境中?查看代码,显然 <*2ekernel> 和 </2ekernel> 影响了颜色,但我不确定为什么。

% \iffalse meta-comment
\RequirePackage{expl3}[2018-04-12]
%<*driver>
\documentclass[full]{l3doc}
\usepackage{xcolor}
\definecolor{spot}{HTML}{003399}
\definecolor{code}{HTML}{a25e26}
\let\OriginalMF\MacroFont
\def\MacroFont{\color{spot}\OriginalMF}
\pretocmd{\macrocode}{\def\MacroFont{\color{code}\OriginalMF}}{}{}
\AtBeginEnvironment{macrocode}{\def\MacroFont{\color{code}\OriginalMF}}
\AtEndEnvironment{macrocode}{\def\MacroFont{\color{spot}\OriginalMF}}
\begin{document}
  \DocInput{\jobname.dtx}
\end{document}
%</driver>
% \fi
% \section{\pkg{xparse} implementation}
%
%    \begin{macrocode}
%<*2ekernel|package>
%<@@=cmd>
%<*2ekernel>
\def\@parse@version#1/#2/#3#4#5\@nil{%
  \@parse@version@dash#1-#2-#3#4\@nil}
\def\@parse@version@dash#1-#2-#3#4#5\@nil{%
  \if\relax#2\relax\else#1\fi#2#3#4 }
%</2ekernel>
\ExplSyntaxOn
\ExplSyntaxOff
%</2ekernel|package>
%<*package>
\ProvidesExplPackage{xparse}{2023-10-10}{}
  {L3 Experimental document command parser}
%    \end{macrocode}

在此处输入图片描述

相关内容