Adicionar palavra-chave ao idioma cunhado

Adicionar palavra-chave ao idioma cunhado

Eu uso o minted para destacar algum código javascript.

eu uso

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

insira a descrição da imagem aqui

O problema é que ele destaca String, Boolean e Number, mas não ObjectId.

Como posso adicionar ObjectId como palavra-chave ao javascript cunhado?

Responder1

Em relação a minted, a resposta é: você deve escrever uma extensão para o lexer JavaScript de pygmentize ou modificar uma cópia do lexer. Veja as respostas para a perguntaComo adicionar palavras-chave C++ personalizadas para serem reconhecidas pelo Minted?para detalhes.

Se você não é obrigado a usar minted, use o pacote listings. Aqui está um exemplo para definir o destaque do JavaScript (adaptado deesta respostapara a perguntaopção de idioma suportada nas listagens. Você pode definir facilmente suas próprias classes de palavras-chave e sua formatação.

insira a descrição da imagem aqui

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

Responder2

Como eu só precisava destacar uma palavra e não consegui encontrar nenhuma solução rápida (e não queria reescrever todo o destaque), criei esta solução alternativa (vergonhosamente) suja:

Em primeiro lugar, identifique a cor RGB necessária para o realce. Você pode obtê-lo através de um seletor de cores (por exemplo, os embutidos em navegadores da web) ou usar esse valor como base para encontrar o valor rgb exato no <yourMintedStyle>.pygstlyearquivo (você pode encontrá-lo na _mintedpasta depois de compilar seu projeto.

Em seguida, defina essa cor em seu documento látex e pinte a palavra desejada através de caracteres de escape no ambiente cunhado. Aqui está um exemplo mínimo do tracestilo 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}

Saída

informação relacionada