指定带有列表周围标题的框

指定带有列表周围标题的框

我正在使用该minted包在我的文档中插入不同编程语言的代码列表。以下是 MWE:

\documentclass{article}

\usepackage{minted}
\usepackage{color}

\definecolor{bg}{rgb}{0.95,0.95,0.95}
\newminted{python}{autogobble, bgcolor=bg}
%... other minted environments for other languages

\begin{document}

\begin{listing}[htb]
  \begin{pythoncode}
    def myClass:
      pass
  \end{pythoncode}
  \caption{Some Python}
  \label{lst:python}
\end{listing}

\end{document}

现在,我想做的是为每个列表指定所使用的编程语言。我考虑在列表周围放一个框,并在标题中指定语言。我希望这个语言标签位于标题的右端。

是否有任何软件包可以帮助解决此问题?我该怎么做?

答案1

文档中minted针对bgcolor关键内容进行了说明:

列表的背景颜色。请注意,此选项有几个限制(如下所述);请参阅下面的“框架替代方案”以了解更强大的替代方案。

在“制定替代方案”部分中,您有:

如果您想要更可靠、更高级的背景颜色和框架选项,您应该考虑使用更高级的框架包,例如mdframedtcolorbox

下面你会发现两个带有tcolorbox标准minted(更准确地说fancyvrb:)可能性的框:你会看到标准解决方案的局限性,其中背景颜色框大于框架。代码:

\documentclass{article}

\usepackage[T1]{fontenc}
\usepackage{lmodern}

\usepackage{xcolor}
\definecolor{bg}{rgb}{0.95,0.95,0.95}

\usepackage[newfloat]{minted}
\newminted{python}{%
  autogobble                               ,
  bgcolor       = bg                       ,
  frame         = single                   ,
  framerule     = 1mm                      ,
  framesep      = 3mm                      ,
  label         = \textrm{\textbf{python}} ,
  labelposition = topline
}

\usepackage{tcolorbox}
\tcbuselibrary{minted}

\newtcblisting{tcbpythoncode}[1][python]{%
  colback         = yellow!5        ,
  colframe        = yellow!50!black ,
  listing only                      ,
  title           = #1              ,
  halign title    = right           ,
  fonttitle       = \bfseries       ,
  listing engine  = minted          ,
  minted language = python
}

\begin{document}

\begin{tcbpythoncode}
def myClass:
  pass
\end{tcbpythoncode}

\begin{listing}
\begin{pythoncode}
def myClass:
  pass
\end{pythoncode}
\end{listing}

\end{document}

在此处输入图片描述

相关内容