使用 minted 突出显示 Mako 模板

使用 minted 突出显示 Mako 模板

当尝试使用该minted包突出显示 Mako 模板语言中的一段源代码时:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{minted}
\usemintedstyle{borland}

\begin{document}

\begin{minted}{mako}
<%inherit file='base'/>

% for i in range(5):
  ${i}
% endfor
\end{minted}
\end{document}

我发现该file='base'片段是红色的——表示有错误。我怀疑这是由于底层 Pygments 库对 Mako 的支持不完整(代码本身 100% 有效)。我想知道的是如何重新定义错误片段以隐藏它。

答案1

这是.pygtex生成的文件:

\begin{Verbatim}[commandchars=\\\{\}]
\PYGborland{c+cp}{\PYGborlandZlt{}\PYGborlandZpc{}}\PYGborland{n+nb}{inherit} \PYGborland{err}{file=\PYGborlandZsq{}base\PYGborlandZsq{}}\PYGborland{c+cp}{/\PYGborlandZgt{}}

\PYGborland{c+cp}{\PYGborlandZpc{}} \PYGborland{k}{for} \PYGborland{n}{i} \PYGborland{o+ow}{in} \PYGborland{n+nb}{range}\PYGborland{p}{(}\PYGborland{l+m+mi}{5}\PYGborland{p}{):}
\PYGborland{x}{  }\PYGborland{c+cp}{\PYGborlandZdl{}\PYGborlandZob{}}\PYGborland{n}{i}\PYGborland{c+cp}{\PYGborlandZcb{}}
\PYGborland{c+cp}{\PYGborlandZpc{}}\PYGborland{k}{ endfor}
\end{Verbatim}

如果你想把标记的部分\PYGborland{err}处理inherit

\PYGborland@tok@err

等同于\PYGborland@tok@n+nb,这只有通过 才能获得\csname;通过etoolbox很容易。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{etoolbox}
\usepackage{minted}
\usemintedstyle{borland}

\csletcs{PYGborland@tok@err}{PYGborland@tok@n+nb}

\begin{document}

\begin{minted}{mako}
<%inherit file='base'/>

% for i in range(5):
  ${i}
% endfor
\end{minted}
\end{document}

在此处输入图片描述

相关内容