如何指定每个命令 \lstinputlisting 的设置?

如何指定每个命令 \lstinputlisting 的设置?

我在我的文档中多次使用以下命令来包含 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
}

问题: 您能解释一下如何调用和修改文档中一个、两个或不同代码的设置吗?我的意思是,我想为文档中包含的不同代码自定义这些设置:

  1. \lstinputlisting[caption = listato 1]{Chap_1/Listings/code_1.m} --> 自定义设置 (??)
  2. \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

这背后的主要思想是将您的代码风格分类,以便可以在您的代码中以简洁的方式使用它们。

相关内容