在 minted 中为语言添加关键字

在 minted 中为语言添加关键字

我使用 minted 来突出显示一些 javascript 代码。

我用

\documentclass{article}

\usepackage{minted}

\begin{document}

\begin{minted}{js}
const mySchema = new Schema({
  name: String,
  is_true: Boolean,
  age: Number,
  object_ids: [ObjectId],
});
\end{minted}

\end{document}

生产

在此处输入图片描述

问题是它突出显示了字符串、布尔值和数字,但没有突出显示 ObjectId。

如何在 minted 中将 ObjectId 作为关键字添加到 javascript 中?

答案1

关于minted,答案是:你必须为 pygmentize 的 JavaScript 词法分析器编写一个扩展,或者修改该词法分析器的副本。请参阅问题的答案如何添加自定义 C++ 关键字以供 Minted 识别?了解详情。

如果你不一定要使用minted,请使用 包listings。以下是定义 JavaScript 突出显示的示例(改编自这个答案针对这个问题列表中支持的语言选项。您可以轻松定义自己的关键字类别及其格式。

在此处输入图片描述

\documentclass{article}
\usepackage{listings}
\usepackage{color}
\definecolor{lightgray}{rgb}{.9,.9,.9}
\definecolor{darkgray}{rgb}{.4,.4,.4}
\definecolor{purple}{rgb}{0.65, 0.12, 0.82}

\lstdefinelanguage{js}{
  keywords={const, typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break},
  keywordstyle=\color{blue}\bfseries,
  keywords=[2]{boolean, string, number, objectid},
  keywordstyle=[2]\color{green}\bfseries,
  identifierstyle=\color{black},
  sensitive=false,
  comment=[l]{//},
  morecomment=[s]{/*}{*/},
  commentstyle=\color{purple}\ttfamily,
  stringstyle=\color{red}\ttfamily,
  morestring=[b]',
  morestring=[b]"
}

\lstset{
   language=js,
   extendedchars=true,
   basicstyle=\footnotesize\ttfamily,
   showstringspaces=false,
   showspaces=false,
   tabsize=2,
   breaklines=true,
   showtabs=false
}

\begin{document}

\begin{lstlisting}
const mySchema = new Schema({
  name: String,
  is_true: Boolean,
  age: Number,
  object_ids: [ObjectId],
});
\end{lstlisting}

\end{document}

答案2

由于我只需要突出显示一个单词,并且找不到任何快速解决方案(并且不想重写整个突出显示),所以我想出了这个(令人羞愧的)肮脏的解决方法:

首先,确定突出显示所需的 RGB 颜色。您可以通过颜色选择器(例如 Web 浏览器的内置颜色选择器)获取它,或者使用此值作为基础在文件中找到准确的 rgb 值<yourMintedStyle>.pygstlye(编译项目后,您可以在文件夹中找到它)_minted

然后在 latex 文档中定义此颜色,并在 minted 环境中通过转义字符为所需的单词着色。以下是tracgolang 样式的最小示例:

\documentclass{article}
\usepackage{minted}
\usepackage{xcolor}

\begin{document}
\usemintedstyle{trac}
\definecolor{mblue}{rgb}{0.27,0.33,0.53}

\begin{minted}[escapeinside=||]{go}
type SomeType struct {
    Foo        uint64
    Standard   FooBar
    Tweaked    |\textcolor{mblue}{FooBar}|
}
\end{minted}
\end{document}

输出

相关内容