在 l3doc 文档中使用 minted

在 l3doc 文档中使用 minted

当以任何方式在文件minted中使用时,都会丢失语法突出显示,如下所示(其中第一和第四段是铸造输出,第二和第三段是逐字输出):.dtxl3doc

缺少突出显示

您会看到,要么一些令牌从一开始就被吞噬(逐字和铸造),要么显示了所有代码,但没有突出显示(逐字和铸造)。

问题:如何纠正该行为?

梅威瑟:

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

相关内容