Agregar palabra clave al idioma en minted

Agregar palabra clave al idioma en minted

Utilizo minted para resaltar algún código javascript.

yo suelo

\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}

para producir

ingrese la descripción de la imagen aquí

El problema es que resalta Cadena, Booleano y Número, pero no ObjectId.

¿Cómo puedo agregar ObjectId como palabra clave a javascript en minted?

Respuesta1

Con respecto a minted, la respuesta es: Tienes que escribir una extensión al lexer JavaScript de pygmentize o modificar una copia del lexer. Ver las respuestas a la pregunta.¿Cómo agregar palabras clave C++ personalizadas para que Minted las reconozca?para detalles.

Si no está obligado a utilizarlo minted, utilice el paquete listings. A continuación se muestra un ejemplo para definir el resaltado de JavaScript (adaptado deesta respuestaa la preguntaOpción de idioma admitida en los listados.. Puede definir fácilmente sus propias clases de palabras clave y su formato.

ingrese la descripción de la imagen aquí

\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}

Respuesta2

Como solo necesitaba resaltar una palabra y no pude encontrar ninguna solución rápida (y no quería reescribir todo el resaltado), se me ocurrió esta (vergonzosamente) sucia solución:

En primer lugar, identifique el color RGB necesario para resaltar. Puede obtenerlo a través de un selector de color (por ejemplo, los integrados en los navegadores web) o usar este valor como base para encontrar el valor rgb exacto en el <yourMintedStyle>.pygstlyearchivo (puede encontrarlo en la _mintedcarpeta una vez que compile su proyecto.

Luego defina este color en su documento de látex y coloree la palabra deseada mediante caracteres de escape en el entorno acuñado. Aquí hay un ejemplo mínimo del tracestilo de 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}

Producción

información relacionada