当以任何方式在文件minted
中使用时,都会丢失语法突出显示,如下所示(其中第一和第四段是铸造输出,第二和第三段是逐字输出):.dtx
l3doc
您会看到,要么一些令牌从一开始就被吞噬(逐字和铸造),要么显示了所有代码,但没有突出显示(逐字和铸造)。
问题:如何纠正该行为?
梅威瑟:
% \iffalse meta-comment
% License here
%<*driver>
\def\nameofplainTeX{plain}
\ifx\fmtname\nameofplainTeX\else
\expandafter\begingroup
\fi
\input l3docstrip.tex
\askforoverwritefalse
\preamble
\endpreamble
\postamble
\endpostamble
\generate{\file{test.sty}{\from{test.dtx}{pkg,cfg}}}
\ifx\fmtname\nameofplainTeX
\expandafter\endbatchfile
\else
\expandafter\endgroup
\fi
%</driver>
%
%<*driver|class>
\RequirePackage{expl3}
%</driver|class>
%
%<*driver>
\documentclass{l3doc}
\usepackage{minted}
\begin{document}
\DocInput{test.dtx}
\end{document}
%</driver>
% \fi
%\iffalse
%<*driver>
%\fi
\begin{minted}{latex}
\begin{testme}
\item{example} Mustermann
\end{testme}
\end{minted}
\begin{verbatim}
\begin{testme}
\item{example} Mustermann
\end{testme}
\end{verbatim}
%\iffalse
%</driver>
%\fi
% \begin{verbatim}
% \begin{testme}
% \item{example} Mustermann
% \end{testme}
% \end{verbatim}
% \begin{minted}{latex}
% \begin{testme}
% \item{example} Mustermann
% \end{testme}
% \end{minted}
% \endinput
这与使用 minted 的宏代码无关(请参阅l3doc 与 minted 结合)
答案1
该类l3doc
用于fancyvrb
增强 verbatim 环境。为了使所有 verbatim 环境都美观,它确实
\fvset{gobble=2}
\cs_gset_eq:NN \verbatim \Verbatim
\cs_gset_eq:NN \endverbatim \endVerbatim
问题在于,像minted
这样的软件包也会受到 的干扰,这些软件包也依赖于fancyvrb
。知道 的作用后l3doc
,很容易为情况 1 打补丁,因为只需\fvset{gobble=0}
在前言中设置 即可。然而,这会导致示例 3 和 4 打印百分号。因此,在逻辑fancyvrb
中使用环境时%
,必须明确设置\fvset{gobble=2}
。这将导致以下结果:
如您所见,在所有情况下都会打印代码,但只有在离开百分比前缀上下文时,语法突出显示才会起作用。
代码:
% \iffalse meta-comment
% License here
%<*driver>
\def\nameofplainTeX{plain}
\ifx\fmtname\nameofplainTeX\else
\expandafter\begingroup
\fi
\input l3docstrip.tex
\askforoverwritefalse
\preamble
\endpreamble
\postamble
\endpostamble
\generate{\file{test.sty}{\from{test.dtx}{pkg,cfg}}}
\ifx\fmtname\nameofplainTeX
\expandafter\endbatchfile
\else
\expandafter\endgroup
\fi
%</driver>
%
%<*driver|class>
\RequirePackage{expl3}
%</driver|class>
%
%<*driver>
\documentclass{l3doc}
\usepackage{minted}
\fvset{gobble=0}
\begin{document}
\DocInput{test.dtx}
\end{document}
%</driver>
% \fi
%\iffalse
%<*driver>
%\fi
\begin{minted}{latex}
\begin{testme}
\item{example} Mustermann
\end{testme}
\end{minted}
\begin{verbatim}
\begin{testme}
\item{example} Mustermann
\end{testme}
\end{verbatim}
%\iffalse
%</driver>
%\fi
% \fvset{gobble=2}
% \begin{verbatim}
% \begin{testme}
% \item{example} Mustermann
% \end{testme}
% \end{verbatim}
% \fvset{gobble=2}
% \begin{minted}{latex}
% \begin{testme}
% \item{example} Mustermann
% \end{testme}
% \end{minted}
% \endinput