Добавить ключевое слово к языку в 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}

производить

введите описание изображения здесь

Проблема в том, что он выделяет String, Boolean и Number, но не ObjectId.

Как добавить ObjectId в качестве ключевого слова в javascript в minted?

решение1

Что касается minted, ответ таков: Вам нужно написать расширение для JavaScript лексера pygmentize или изменить копию лексера. Смотрите ответы на вопросКак добавить пользовательские ключевые слова 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, необходимый для подсветки. Вы можете получить его через палитру цветов (например, встроенную в веб-браузеры) или использовать это значение в качестве основы для поиска точного значения 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}

Выход

Связанный контент