当尝试使用该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}