![在研究文章中显示(源)代码](https://linux22.com/image/264233/%E5%9C%A8%E7%A0%94%E7%A9%B6%E6%96%87%E7%AB%A0%E4%B8%AD%E6%98%BE%E7%A4%BA%EF%BC%88%E6%BA%90%EF%BC%89%E4%BB%A3%E7%A0%81.png)
我迫切需要在文章中并排显示两段代码以供比较。显示代码时,我有几个要求
- 应该适当缩进
- 输出应该语法高亮
- 应尽可能自动地处理长行代码(即,必要时换行)
- 代码应该很容易从输出 pdf 中复制
- 代码可以任意长,即跨越多页,因此最好能够自动处理此类事情
我简要地研究了两种选择,Verbatim 和 listing 以及 minipage。它们工作得还不错!但输出结果实在太差了。这两种设置哪个好,至少能产生好看的输出。对于自动化部分,我仍然可以编写 Python 脚本来实现这一点。如果你们当中有人知道可以完美呈现代码的研究文章示例,请与我分享,我将不胜感激。请记住,我并不经常使用 Latex。
答案1
以下是包使用的示例listings
(针对 Octave 的 m 文件):
\usepackage{listings}
\lstset{basicstyle=\small,breaklines=true,language=Octave,
extendedchars=true,aboveskip=1em,belowcaptionskip=5pt,
prebreak = \hbox{%
\normalfont\small\hfill\green{\ensuremath{\hookleftarrow}}},
postbreak = \hbox to 0pt{%
\hss\normalfont\small\green{\ensuremath{\hookrightarrow}}\hspace{1ex}},
commentstyle=\color{blue},showspaces=false,
showstringspaces=false,stringstyle=\bfseries\color[rgb]{0.6,0,1},
numbers=left,numberstyle=\tiny,stepnumber=2,
keywordstyle=\bfseries\color[rgb]{0,0.1,0.5},
frameround=tttt,frame=trBL,tabsize=4,backgroundcolor=\color[rgb]{.9,.9,1}}
\lstloadlanguages{Octave}
\def\lstlistingname{Listing}
\def\lstref#1{(look~listing~\ref{#1})}
\begin{document}
\lstinputlisting[caption={Caption for listing},label=alabel]{file.m}
阅读文档listings
:您可以调整颜色、行号、列表周围的框以及许多其他内容。