Minted:以内联模式为变量着色

Minted:以内联模式为变量着色

是否可以指定如何使用 为变量着色mintinline?我的意思是,例如,将\mintinline{python}{myClass}和 颜色myClass用作类变量或函数。如果我按原样使用该命令,默认情况下我只会得到黑色,但字符串会正确着色,就像 一样\mintinline{python}{'a string'}

答案1

我认为这是不可能的。首先,您的标记必须向 Pygments 传达myClass类对象名称的信息。也许在向 Pygments 注册专用词法分析器时,它会将输入中的每个单词简单地标记为类名。同时,您可以进行一些逆向工程并生成例如:

\documentclass{article}

\usepackage{minted}

\makeatletter
\newcommand\highlightaspyclass[1]{%
  \minted@generate@PYGdef{default}%
  {\minted@PYGdef@default\PYG{n+nc}{#1}}%
}%
\makeatother

\begin{document}

This is highlighted \highlightaspyclass{myClass}.
\end{document}

基本上为此我从一些开始

\begin{minted}{python}
class myClass:
    pass
\end{minted}

在文档中,运行 latex 并查看 pygmentize 输出标记,结果发现\PYG{n+nc}{myClass}它将先验地成为 Python 类对象的标记,我可以将其抽象为一种通用\highlightaspyclass命令。

然后深入研究 minted 源代码,幸运的是可以完成上述操作。“default”代表通过定义的“style”变量\usemintedstyle,因此如果使用自定义变量,请更新上述内容。(3.4 Using different stylesminted 文档中的部分)。

您需要对每种其他类型的令牌重复上述初步程序,并创建相关的自定义宏。

请注意,诸如与在章节标题或类似内容中使用的兼容性之类的内容可能会丢失,并且可能需要清理特殊字符,\mintedinline而这不会在我们的自定义黑客命令中完成。

您必须使用 shell-escape 运行上述程序,就像通​​常使用 minted 一样。

铸造示例

编辑:您还必须手动设置字体,例如使用等宽字体系列,我在这里没有这样做。

相关内容