我想让我的代码清单看起来更吸引人。我在所以,但还有一个问题:
我想要的不仅是列表底部有一条水平线,而且左侧和右侧也有一条水平线。因此我将 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
处理/创建的代码列表生成框架框。listings
listingsutf8
minted
下一个代码显示了 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}