
Ich verwende Minted, um JavaScript-Code hervorzuheben.
ich benutze
\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}
produzieren
Das Problem besteht darin, dass Zeichenfolgen, Boolesche Werte und Zahlen hervorgehoben werden, nicht jedoch die Objekt-ID.
Wie kann ich in Minted ObjectId als Schlüsselwort zu Javascript hinzufügen?
Antwort1
Die Antwort zu minted
lautet: Sie müssen eine Erweiterung für den JavaScript-Lexer von pygmentize schreiben oder eine Kopie des Lexers ändern. Siehe die Antworten auf die FrageWie füge ich benutzerdefinierte C++-Schlüsselwörter hinzu, die von Minted erkannt werden sollen?für Details.
Wenn Sie nicht an die Verwendung gebunden sind minted
, verwenden Sie das Paket listings
. Hier ist ein Beispiel für die Definition von JavaScript-Hervorhebungen (angepasst vondiese Antwortzur FrageSprachoption in Auflistungen unterstützt. Sie können ganz einfach Ihre eigenen Schlüsselwortklassen und deren Formatierung definieren.
\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}
Antwort2
Da ich nur die Hervorhebung für ein Wort brauchte und keine schnelle Lösung finden konnte (und nicht die gesamte Hervorhebung neu schreiben wollte), habe ich mir diesen (beschämend) schmutzigen Workaround ausgedacht:
Identifizieren Sie zunächst die RGB-Farbe, die für die Hervorhebung benötigt wird. Sie können sie über einen Farbwähler erhalten (z. B. die integrierten in Webbrowsern) oder diesen Wert als Grundlage verwenden, um den genauen RGB-Wert in der <yourMintedStyle>.pygstlye
Datei zu finden (Sie finden ihn im _minted
Ordner, sobald Sie Ihr Projekt kompiliert haben).
Definieren Sie diese Farbe dann in Ihrem Latex-Dokument und färben Sie das gewünschte Wort durch Escape-Zeichen in der Minted-Umgebung ein. Hier ist ein Minimalbeispiel für den trac
Stil für 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}