Shiki | Pygments |
---|---|
Install Node.js and run:
$ npm install shiki-latex
\usepackage{minted}
\renewcommand{\MintedPygmentize}{node_modules/.bin/shiki-minted}
Choose a theme with the \usemintedstyle{}
command.
You may refer to a built-in Shiki theme by name, for example:
\usemintedstyle{nord}
You may refer to a theme file that you download and put next to your LaTeX source (don’t put it under a folder because minted doesn’t support it); for example, to use the SynthWave '84 theme, download synthwave-color-theme.json
and add the following to your LaTeX source:
\usemintedstyle{synthwave-color-theme.json}
Note: Some themes may not look as good on a PDF as they do on a webpage. It’s part of the game: LaTeX renders things differently from a browser. It’s a hit-and-miss situation.
import { getHighlighter } from "shiki";
import { renderToLaTeX } from "shiki-latex";
(async () => {
const highlighter = await getHighlighter({ theme: "light_plus" });
const lines = highlighter.codeToThemedTokens(
`const name = "Leandro Facchinetti";`,
"ts"
);
console.log(renderToLaTeX(lines));
})();
The package comes with type definitions for TypeScript.
The renderToLaTeX()
function accepts a second argument with options that control the rendering, for example:
renderToLaTeX(lines, { defaultColor: "#FF0000" });
The available options are the following:
defaultColor: string
(default #000000
): The color to use when the theme doesn’t specify a color for a part of the highlighted program.
mathescape: boolean
(default false
): Enable LaTeX math mode escape ($___$
) in comments.