使用 minted 或 listings 编写代码时如何设置样式

使用 minted 或 listings 编写代码时如何设置样式

我有一些在 Python 高亮代码中使用样式的样式参考: 在此处输入图片描述

或者

在此处输入图片描述


你能用 minted 或 listings 实现这种风格吗?顺便说一下,语言是 Python。

请举例说明如何使用

答案1

listings使用包的解决方案草图

正如评论中所建议的,使用该listings包,您可以使用escapeinside退出逐字排版上下文的选项来调用输出带圆圈数字的宏。

\circled的灵感来自于这个答案但需要添加一些内容才能使圆圈具有固定大小。背景和文本颜色也可以作为参数传递。

对于列表中某些行后面的带圆圈的注释,escapeinside = {<@}{@>}设置为转义列表。在这些分隔符内,我们可以使用\lstnote{...}宏在圆圈内添加固定数量的间距和数字。

对于带圆圈的行号,\circledstyle我们定义了另一个宏。我们listings通过添加选项来使用此样式排版行号numberstyle = \circledstyle

完整示例文档:

\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{tikz}

\newcommand\circled[3]{%
    \tikz[baseline=(char.base)]{
        \node[shape=circle, fill=#1, inner sep=0pt, text width=8pt, align=center]
            (char) {\textcolor{#2}{\sffamily\bfseries\scriptsize #3}};
    }%
}

\newcommand\lstnote[1]{%
    \kern 1.5em%
    \circled{purple}{pink!50!white}{#1}%
}

\newcommand\circledstyle[1]{%
    \circled{gray}{white}{#1}%
}

\lstset{
    basicstyle = \ttfamily,
    language = [LaTeX]TeX,
    texcsstyle = *\color{blue},
    escapeinside = {<@}{@>},
    backgroundcolor = \color{lightgray!30!white},
    framexleftmargin = 3em,
    framerule = 0pt,
    frame = tb,
    numbers = left,
    numberstyle = \circledstyle
}

\begin{document}
\begin{lstlisting}
\documentclass{article} <@ \lstnote{1} @>
\usepackage{xcolor}  <@ \lstnote{2} @>

\begin{document}
\textcolor{blue}{Hello world!} <@ \lstnote{3} @>

New paragraph.

And another one.
\end{document}
\end{lstlisting}
\end{document}

在此处输入图片描述

相关内容