LaTeX源代码在专业书籍中列出

乳胶源代码清单应该如何在已知书籍中产生输出,例如Spring框架? 我已经尝试了与乳胶列表包,但无法生产的东西看起来像下面的那个好。 所以我主要对格式化指令感兴趣,以产生类似于下面的示例(来自Manning的Spring in Action 示例章节 ):

从曼宁的行动春天

编辑特别是TormodFjeldskår的帮助下面是制作所需外观的完整代码片段:

\usepackage{listings} \usepackage{courier} \lstset{ basicstyle=\footnotesize\ttfamily, % Standardschrift %numbers=left, % Ort der Zeilennummern numberstyle=\tiny, % Stil der Zeilennummern %stepnumber=2, % Abstand zwischen den Zeilennummern numbersep=5pt, % Abstand der Nummern zum Text tabsize=2, % Groesse von Tabs extendedchars=true, % breaklines=true, % Zeilen werden Umgebrochen keywordstyle=\color{red}, frame=b, % keywordstyle=[1]\textbf, % Stil der Keywords % keywordstyle=[2]\textbf, % % keywordstyle=[3]\textbf, % % keywordstyle=[4]\textbf, \sqrt{\sqrt{}} % stringstyle=\color{white}\ttfamily, % Farbe der String showspaces=false, % Leerzeichen anzeigen ? showtabs=false, % Tabs anzeigen ? xleftmargin=17pt, framexleftmargin=17pt, framexrightmargin=5pt, framexbottommargin=4pt, %backgroundcolor=\color{lightgray}, showstringspaces=false % Leerzeichen in Strings anzeigen ? } \lstloadlanguages{% Check Dokumentation for further languages ... %[Visual]Basic %Pascal %C %C++ %XML %HTML Java } %\DeclareCaptionFont{blue}{\color{blue}} %\captionsetup[lstlisting]{singlelinecheck=false, labelfont={blue}, textfont={blue}} \usepackage{caption} \DeclareCaptionFont{white}{\color{white}} \DeclareCaptionFormat{listing}{\colorbox[cmyk]{0.43, 0.35, 0.35,0.01}{\parbox{\textwidth}{\hspace{15pt}#1#2#3}}} \captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white, singlelinecheck=false, margin=0pt, font={bf,footnotesize}} 

在你的文档中使用它:

 \lstinputlisting[label=samplecode,caption=A sample]{sourceCode/HelloWorld.java} 

在我看来,你真正想要的是自定义字幕的外观。 这是使用caption包最容易完成的。 有关如何使用此软件包的说明,请参阅手册(PDF) 。 您可能需要创build自己的自定义字幕格式,如手册中的第4章所述。

编辑:testing与MikTex:

 \documentclass{report} \usepackage{color} \usepackage{xcolor} \usepackage{listings} \usepackage{caption} \DeclareCaptionFont{white}{\color{white}} \DeclareCaptionFormat{listing}{\colorbox{gray}{\parbox{\textwidth}{#1#2#3}}} \captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white} % This concludes the preamble \begin{document} \begin{lstlisting}[label=some-code,caption=Some Code] public void here() { goes().the().code() } \end{lstlisting} \end{document} 

结果:

预习

我很高兴的listings包:

清单示例

这里是我如何configuration它:

 \lstset{ language=C, basicstyle=\small\sffamily, numbers=left, numberstyle=\tiny, frame=tb, columns=fullflexible, showstringspaces=false } 

我这样使用它:

 \begin{lstlisting}[caption=Caption example., label=a_label, float=t] // Insert the code here \end{lstlisting} 

而且,无论你做什么,请configuration列表包使用固定宽度的字体(如在你的例子中,你会发现在文档中的选项)。 默认设置使用网格上的比例字体排版,这是恕我直言,难以置信的丑陋和难以理解,从其他图片可以看出。 我个人非常恼火,当我必须阅读一些比例字体的代码排版。

尝试使用此设置固定宽度的字体:

 \lstset{basicstyle=\ttfamily} 

尝试在listings包。 以下是我前一段时间使用Java着色列表的示例:

 \usepackage{listings} [...] \lstset{language=Java,captionpos=b,tabsize=3,frame=lines,keywordstyle=\color{blue},commentstyle=\color{darkgreen},stringstyle=\color{red},numbers=left,numberstyle=\tiny,numbersep=5pt,breaklines=true,showstringspaces=false,basicstyle=\footnotesize,emph={label}} [...] \begin{lstlisting} public void here() { goes().the().code() } [...] \end{lstlisting} 

你可能想要自定义。 列表包有几个参考。 只是谷歌他们。

我想知道为什么没有人提到Minted软件包。 它比LaTeX列表软件包有更好的语法突出显示。 它使用Pygments 。

 $ pip install Pygments 

LaTeX示例:

 \documentclass{article} \usepackage[utf8]{inputenc} \usepackage[english]{babel} \usepackage{minted} \begin{document} \begin{minted}{python} import numpy as np def incmatrix(genl1,genl2): m = len(genl1) n = len(genl2) M = None #to become the incidence matrix VT = np.zeros((n*m,1), int) #dummy variable #compute the bitwise xor matrix M1 = bitxormatrix(genl1) M2 = np.triu(bitxormatrix(genl2),1) for i in range(m-1): for j in range(i+1, m): [r,c] = np.where(M2 == M1[i,j]) for k in range(len(r)): VT[(i)*n + r[k]] = 1; VT[(i)*n + c[k]] = 1; VT[(j)*n + r[k]] = 1; VT[(j)*n + c[k]] = 1; if M is None: M = np.copy(VT) else: M = np.concatenate((M, VT), 1) VT = np.zeros((n*m,1), int) return M \end{minted} \end{document} 

其结果是:

在这里输入图像说明

您需要使用pdflatex命令的标志-shell-escape

欲了解更多信息: https : //www.sharelatex.com/learn/Code_Highlighting_with_minted

看看algorithms包,特别是algorithm环境。

还有其他一些你可以做的事情,例如select新的字体:

 \documentclass[10pt,a4paper]{article} % ... lots of packages eg babel, microtype, fontenc, inputenc &c. \usepackage{color} % Leave this out if you care about B/W printing, obviously. \usepackage{upquote} % Turns curly quotes in verbatim text into straight quotes. % People who have to copy/paste code from the PDF output % will love you for this. Or perhaps more accurately: % They will not hate you/hate you less. \usepackage{beramono} % Or some other package that provides a fixed width font. qv % http://www.tug.dk/FontCatalogue/typewriterfonts.html \usepackage{listings} \lstset { % A rudimentary config that shows off some features. language=Java, basicstyle=\ttfamily, % Without beramono, we'd get cmtt, the teletype font. commentstyle=\textit, % cmtt doesn't do italics. It might do slanted text though. \keywordstyle= % Nor does cmtt do bold text. \color{blue}\bfseries, \tabsize=4 % Or whatever you use in your editor, I suppose. } \begin{document} \begin{lstlisting} public final int ourAnswer() { return 42; /* Our final answer */ } \end{lstlisting} \end{document} 

对于我使用的R代码

 \usepackage{listings} \lstset{ language=R, basicstyle=\scriptsize\ttfamily, commentstyle=\ttfamily\color{gray}, numbers=left, numberstyle=\ttfamily\color{gray}\footnotesize, stepnumber=1, numbersep=5pt, backgroundcolor=\color{white}, showspaces=false, showstringspaces=false, showtabs=false, frame=single, tabsize=2, captionpos=b, breaklines=true, breakatwhitespace=false, title=\lstname, escapeinside={}, keywordstyle={}, morekeywords={} } 

看起来和这个完全一样

在这里输入图像说明