下面是我想要编写的代码示例:
clear all; close all; clc;
X = Y = 0:0.1:1;
for i=1:length(X)
for j=1:length(Y)
Z(i, j) = X(i) + Y(j);
endfor
endfor
mesh(Y, X, Z)
问题是 lstlisting 的列表不带颜色,我希望我的代码能够与 Octave 上显示的完全一致(几乎与 Matlab 相同的环境)。我该怎么做?
答案1
我建议使用minted
和不是 lstlisting
因为代码更容易从 PDF 中复制并运行。从lstlisting
会产生许多代码运行前必须修复的错误。Minted 有多种样式,因此您可以选择最喜欢的样式来突出显示。Overleaf 有一个参考指南所有 minted 样式。此外,minted 还支持该octave
语言。
这里是代码:
\documentclass[a4paper]{article}
\usepackage{minted}
\usepackage{xcolor}
\usemintedstyle{manni}
\definecolor{LightGray}{rgb}{0.95,0.95,0.95}
\begin{document}
\begin{listing}[!htb]
\begin{minted}[
bgcolor=LightGray,
breaklines,
breaksymbolleft={},
breakindent={15pt}
]{octave}
clear all; close all; clc;
X = Y = 0:0.1:1;
for i=1:length(X)
for j=1:length(Y)
Z(i, j) = X(i) + Y(j);
endfor
endfor
mesh(Y, X, Z)
\end{minted}
% \inputminted[%
% firstline=,
% lastline=,
% bgcolor=LightGray,
% breaklines,
% breaksymbolleft={},
% breakindent={15pt}
% ]{octave}{Folder/file}
\caption{Code}
\label{listing:1}
\end{listing}
\end{document}
以下是从环境中复制的代码lstlisting
:
c l e a r a l l ; c l o s e a l l ; c l c ;
X = Y = 0 : 0 . 1 : 1 ;
for i =1: length (X)
for j =1: length (Y)
Z( i , j ) = X( i ) + Y( j ) ;
endfor
endfor
mesh(Y, X, Z)
minted
这是从环境中复制的代码:
clear all; close all; clc;
X = Y = 0:0.1:1;
for i=1:length(X)
for j=1:length(Y)
Z(i, j) = X(i) + Y(j);
endfor
endfor
mesh(Y, X, Z)
还存在一些lstlisting
未在此示例中显示的其他问题:
- 所有减号 (-) 都会变成连字符(稍长),必须替换
- 所有乘法符号 (*) 由于某种原因停止工作,必须更换
我曾经不得不从lstlisting
环境中复制并运行代码(我只有一个 PDF),并且必须修复 100 多个错误才能运行代码。几乎所有这些错误都可以通过使用minted
而不是 来避免lstlisting
。