带有代码框架的源代码列表?

带有代码框架的源代码列表?

我想让我的代码清单看起来更吸引人。我在所以,但还有一个问题:

我想要的不仅是列表底部有一条水平线,而且左侧和右侧也有一条水平线。因此我将 frame=b 改为 frame = blr。这样效果很好,但现在的问题是垂直线和标题框之间有一个小间隙。我该如何纠正这个问题?我想要一个带有标题的封闭框围绕着我的列表。

答案1

\documentclass{report}

\usepackage{xcolor}
\usepackage{listings}
\usepackage{caption}
\DeclareCaptionFont{white}{\color{white}}
\DeclareCaptionFormat{listing}{%
  \parbox{\textwidth}{\colorbox{gray}{\parbox{\textwidth}{#1#2#3}}\vskip-4pt}}
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white}
\lstset{frame=lrb,xleftmargin=\fboxsep,xrightmargin=-\fboxsep}

\begin{document}
\belowcaptionskip=-10pt
\begin{lstlisting}[label=some-code,caption=Some Code]
public void here() {
    goes().the().code()
}
\end{lstlisting}

\end{document}

在此处输入图片描述

答案2

虽然listings已经提供了用于框架列表的工具,但我认为tcolorbox对于这项任务来说,它更加灵活。特别是,可以为使用、和tcolorbox处理/创建的代码列表生成框架框。listingslistingsutf8minted

下一个代码显示了 OP 所需sexy列表的一个例子:

\documentclass{report}

\usepackage{listings}
\usepackage[most]{tcolorbox}
\usepackage{inconsolata}

\newtcblisting[auto counter]{sexylisting}[2][]{sharp corners, 
    fonttitle=\bfseries, colframe=gray, listing only, 
    listing options={basicstyle=\ttfamily,language=java}, 
    title=Listing \thetcbcounter: #2, #1}

\begin{document}
\begin{sexylisting}{Some Code}
public void here() {
    goes().the().code()
}
\end{sexylisting}

\begin{sexylisting}[colback=white]{Same code again}
public void here() {
    goes().the().code()
}
\end{sexylisting}
\end{document}

在此处输入图片描述

相关内容