我使用 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 环境中通过转义字符为所需的单词着色。以下是trac
golang 样式的最小示例:
\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}