我在我的文档中多次使用以下命令来包含 matlab 代码:\lstinputlisting[caption = listato 1]{Chap_1/Listings/code.m}
我已经在我的 overleaf 文档 (my_document_stile.tex) 中的单独文件中定义了此命令的设置:
% MATLAB as default
\lstset{%
float=hbp,%
language=Matlab,%
style=Matlab-editor, %richiede il pacchetto matlab-prettifier (inserito da G.Donnarumma)
basicstyle=\ttfamily\small,%
identifierstyle=\color{colIdentifier}, %
keywordstyle=\color{colKeys},%
stringstyle=\color{colString},%
commentstyle=\color{colComments},%
columns=[l]fixed,% flexible,%
% keepspaces=true,% sposta la linea di separazione delle sezioni
%tabsize=2,%
frame=single,% single,lines, none
extendedchars=true,%
showspaces=false,%
showstringspaces=false,%
escapechar = ", %inserito da G.Donnarumma
mlshowsectionrules = true, %inserito da G.Donnarumma
numbers=left,% left, none %visualizza num. identificat. linea codice
numberstyle=\tiny,%
breaklines=true,%
lineskip=-2pt,%
backgroundcolor=\color{mylightgray}, %
breakautoindent=true,%
numberbychapter=true,%
captionpos=t,%
belowcaptionskip=0.2\baselineskip%\medskipamount%
}
\lstset{%
morekeywords={cell,interp3,interpn,fnplt,fneval%
,odeset,ode113,ode15s,ode23s,ode23t,ode23tb,cell2mat,%
convvel,convang,convforce,convlength,deg2rad,atmoscoesa,atmosisa,atmosnonstd,%
datcomimport,importdata,fieldnames,assignin%
,fnval,csaps,fmincon%
,classdef,properties,methods%
}
}
\lstset{%
emph={myfun,myfunction2x1,f_prandtl_a_b,%
DSVAircraft,myAC,costLongEquilibriumStaticStickFixed,myNonLinearConstraint,dummyNonLinearConstraint,%
eqLongDynamicStickFixed,calc_CD0_k_Tmax,MassStickFree,cla,eps,},%
emphstyle={%
\color{red!80!black}%
\ttfamily\bfseries%
}
}
\lstset{%qui c'è interp1
emph=[1]{interp1,pi,norm,sin,cos,disp,ode45,cd,set,get,gca,gradient,length,tan,gamma,sqrt,diag,acos,atan,asin,imag,real,subplot,sound,zeros,interp2,meshgrid,input,sprintf,xlabel,ylabel,plot,print, legend,grid,figure,hold},emphstyle=[1]\color{black}, %some words to emphasise
}
问题: 您能解释一下如何调用和修改文档中一个、两个或不同代码的设置吗?我的意思是,我想为文档中包含的不同代码自定义这些设置:
- \lstinputlisting[caption = listato 1]{Chap_1/Listings/code_1.m} --> 自定义设置 (??)
- \lstinputlisting[caption = listato 1]{Chap_1/Listings/code_2.m} --> 自定义设置 (??)
答案1
您需要定义一种涵盖所有这些通用用法的样式,使用
\lstdefinestyle{<generic style>}{%
<key-value list>
}
然后,您可以以类似的方式定义自定义样式,并使用通用样式作为其中的一部分:
\lstdefinestyle{<custom style A>}{%
style=<generic style>,
<key-value list>
}
\lstdefinestyle{<custom style B>}{%
style=<generic style>,
<key-value list>
}
% ... more custom styles
这将允许你使用
\lstinputlisting[style=<custom style A>, caption = <captionA>]{<codeA>}
\lstinputlisting[style=<custom style B>, caption = <captionB>]{<codeB>}
% ... more listings
这背后的主要思想是将您的代码风格分类,以便可以在您的代码中以简洁的方式使用它们。