单独的 Minted 变量与表达式中的变量颜色不同

单独的 Minted 变量与表达式中的变量颜色不同

我们正在使用 minted 来写论文。

当变量/函数名称单独出现在内联表达式中时,它们会被着色,但当它们是算术表达式的一部分时则不会。例如,下面的n2*n

在此处输入图片描述

有什么方法可以使这种一致性?

编辑:上图的代码是:

在序言中:

\usepackage{minted}

在文档中:

0, \mintinline{haskell}{n}, \mintinline{haskell}{2*n} etc.
in the \mintinline{haskell}{Integer} time domain,
without any side effects.

答案1

问题似乎是NamePython 代码中某些 Pygments 样式文件中的 token 类没有附加样式(在这种情况下是默认样式)。但是,附加了样式Name.Function,这使得 LaTeX 样式类[n+nf]确实有颜色,但[n]没有。

Pygments 的 LaTeX 格式化程序会\PYGXXXX@tok@YY为样式文件中定义的所有标记类创建类似的命令,其中XXXX是使用的样式方案名称和YY标记样式类的简称。为了快速修复Name标记缺少的样式,我们可以在使用该样式的文档前言中添加命令别名Name.Function

\makeatletter
\def\PYGdefault@tok@n{\PYGdefault@tok@nf}
\makeatother

请注意,这将在标记位于 的参数列表的最后的Name.Function所有情况下使用 样式,因此如果其他标记在某些代码片段中以不同的顺序使用,仍然可能存在不一致。不过,快速检查显示只有和用于变量名称。n\PYGnXnnf

还要注意,default如果使用其他样式方案,这些命令名称的部分必须进行调整。


附加完整最小样本:

\documentclass{article}
\usepackage{minted}

\makeatletter
\def\PYGdefault@tok@n{\PYGdefault@tok@nf}
\makeatother

\begin{document}
\mintinline{haskell}{n}

\mintinline{haskell}{2*n}

\mintinline{haskell}{f (n*(n+1))}
\end{document}

输出:

在此处输入图片描述

相关内容