2

Can you please help me modify the listing names as shown in the image attached. I currently have 4 different \lstdefinestyle and would like to then have 4 different listing names. I was trying to follow the solution given here to modify the listings names but I could not get the code to work properly.

Any help to get the listing names changed as shown in the image, is sincerely appreciated!

enter image description here

Here is my code:

\documentclass[a4paper, 10pt]{report}

\newcommand{\codeimg}{\includegraphics[scale=0.1]{example-image-a}}

\usepackage{calc}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\usepackage{pdfpages,graphicx}
\usepackage{mdframed}
\usepackage{listings}
\usepackage{filecontents}
\usepackage[numbered,framed]{matlab-prettifier}

\definecolor{light-gray}{gray}{0.92}
\definecolor{myblueiii}{RGB}{199,234,253}
\definecolor{mainColor}{RGB}{211, 47, 47} % some dark red
\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}
\definecolor{mybluei}{RGB}{0,173,239}
\definecolor{myblueiii}{RGB}{199,234,253}

%\renewcommand\lstlistingname{Code}
\lstset{
    language=Python,
    numbers=left,
    numbersep= 7mm,
    numberstyle=\color{Black},
    stepnumber=1,
    tabsize=3,
    breakatwhitespace=false,
    breaklines=true,
    captionpos=b,
    basicstyle=\color{Black}\ttfamily,
    commentstyle=\color{LimeGreen},
    keywordstyle=\color{BurntOrange}\bfseries,
    stringstyle=\color{WildStrawberry},
    keywords={var, func, extends},
    frame=leftline,
    framesep=0mm,
    xleftmargin=3mm,
    framesep=2mm,
    framerule=0mm,
    abovecaptionskip=5mm,
    aboveskip=\baselineskip,
    belowskip=\baselineskip
}

\usepackage{tcolorbox}
\tcbuselibrary{skins,breakable,listings}
\newtcblisting[use counter=lstlisting]{codeblock}[2][]{%
        enhanced,noparskip,breakable,colback=light-gray,colframe=DarkSlateGray,opacitybacktitle=.8,%
        fonttitle=\bfseries,before upper={\hspace*{-1em}\includegraphics[height=\baselineskip]{example-image-a}~#2},%
        title after break={\centering\footnotesize\itshape\strut\lstlistingname~\thelstlisting~--~continued},%
        listing only,listing options={xleftmargin=-1mm},after upper={\centering\strut\lstlistingname~\thelstlisting:~#2},
        frame hidden,arc=0pt,outer arc=0pt,boxrule=0pt,frame code={\draw[gray,line width=2mm] ([xshift=-0.5pt]frame.north west) -- ([xshift=-0.5pt]frame.south west);},#1}

\lstdefinestyle{mystyleresults}{
    backgroundcolor=\color{backcolour},
    commentstyle=\color{codegreen},
    keywordstyle=\color{black},
    numberstyle=\tiny\color{codegray},
    stringstyle=\color{black},
    basicstyle=\ttfamily\footnotesize,
    breakatwhitespace=false,
    breaklines=true,
    captionpos=b,
    keepspaces=true,
    numbers=none,
    numbersep=5pt,
    showspaces=false,
    showstringspaces=false,
    showtabs=false,
    backgroundcolor=\color{myblueiii},
    tabsize=6
}

\lstdefinestyle{mystylecode}{
    language=C,
    numbers=none,
    commentstyle=\color{LimeGreen},
    keywordstyle=\color{BurntOrange}\bfseries,
    keywords={real},
    backgroundcolor=\color{codegray!10}
}

\begin{filecontents}{result_1.txt}
=== Run information ===

Correlation coefficient                  0.5941
Mean absolute error                      2.2173
Root mean squared error                  3.7905
Relative absolute error                 76.7091 %
Root relative squared error             81.3406 %
Total Number of Instances              188

\end{filecontents}

\begin{filecontents}{result_2.txt}
% 9 attributes
% 188 instances

@relation FIT

@attribute NUMUORS real   % Number of unique operators
@attribute NUMUANDS real  % Number of unique operands
@attribute TOTOTORS real  % Total number of operators

\end{filecontents}

\begin{filecontents*}{sample.m}
% create a file for output
!touch testFile.txt
fid = fopen('testFile.text', 'w')
for i=1:10
  fprintf(fid,'%6.2f \n', i);
end
\end{filecontents*}


\begin{document}

\lstinputlisting[
style=mystylecode,
caption={Code Snippet.},
label = R1]{result_2.txt}

\lstinputlisting[
style=mystyleresults,
caption={Results from run 1.},
label = bilateral1GPA]{result_1.txt}

\begin{codeblock}{Les bases de GDScript}
var nombreDeGardes = 4 #déclaration d'une variable
nombreDeGardes = plusDeux(nombreDeGardes) #appel d'une fonction avec la variable nombreDeGardes passée en paramètre
\end{codeblock}

\lstinputlisting[style=Matlab-editor,caption=Sample code from Matlab]{sample.m}

\end{document} 
Joe
  • 9,080
  • 2
    You have multiple listings environments, but they all use the same counter lstlisting, so what do you expect? –  Feb 11 '17 at 23:34
  • @ChristianHupfer, how do you go about changing the counter then? Thanks. – Joe Feb 11 '17 at 23:35
  • No easy solution for this, in my point of view –  Feb 11 '17 at 23:42
  • The easiest way is to use \newtcbinputlistings instead of the \lstinputlistings and use tcolorbox features –  Feb 11 '17 at 23:49
  • But that can change the caption labels? – Joe Feb 12 '17 at 00:00
  • Yes, but I think you're using the wrong setup anyway. Why mixing \lstinputlisting and tcolorbox listings? Chose one style. The listings style is awkward, anyway. You should drop the \lstinputlistings, in my point of view. You should use a specific code block for python, for matlab etc, not one single codeblock environment –  Feb 12 '17 at 00:35
  • I have a solution for the codeblock environment concerning the counter value..., but no elegant one for the \lstinputlisting stuff –  Feb 12 '17 at 00:48
  • @ChristianHupfer, thank you for your time...I am not sure that I am following you when you mention, "You should use a specific code block for python, for matlab etc.". Am I not doing that when I use the \lstdefinestyle? Thanks. – Joe Feb 12 '17 at 00:58
  • No, you would have to give it to the tcolorbox listing to activate it (maybe just using an optional parameter for the environment and giving that to listing options). Anyway, to change the names you have to renew \lstlistingname. That's what prints this text. – TeXnician Feb 12 '17 at 07:55

1 Answers1

3

I've just introduced some new commands for inputting your data according to type. They switch between the styles and of course are fully based on tcolorbox. Hence you have to style them according to your needs, but the manual here is very good.

listings

\documentclass[a4paper, 10pt]{report}

\newcommand{\codeimg}{\includegraphics[scale=0.1]{example-image-a}}

\usepackage{calc}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\usepackage{pdfpages,graphicx}
\usepackage{listings}
\usepackage{filecontents}
\usepackage[numbered,framed]{matlab-prettifier}

\definecolor{light-gray}{gray}{0.92}
\definecolor{myblueiii}{RGB}{199,234,253}
\definecolor{mainColor}{RGB}{211, 47, 47} % some dark red
\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}
\definecolor{mybluei}{RGB}{0,173,239}
\definecolor{myblueiii}{RGB}{199,234,253}

%\renewcommand\lstlistingname{Code}
\lstset{
    language=Python,
    numbers=left,
    numbersep= 7mm,
    numberstyle=\color{Black},
    stepnumber=1,
    tabsize=3,
    breakatwhitespace=false,
    breaklines=true,
    captionpos=b,
    basicstyle=\color{Black}\ttfamily,
    commentstyle=\color{LimeGreen},
    keywordstyle=\color{BurntOrange}\bfseries,
    stringstyle=\color{WildStrawberry},
    keywords={var, func, extends},
    frame=leftline,
    framesep=0mm,
    xleftmargin=3mm,
    framesep=2mm,
    framerule=0mm,
    abovecaptionskip=5mm,
    aboveskip=\baselineskip,
    belowskip=\baselineskip
}

\usepackage{tcolorbox}
\newcounter{data}
\newcounter{result}
\newcounter{pythoncode}
\newcounter{matlab}
\tcbuselibrary{skins,breakable,listings}
\newtcblisting[use counter=pythoncode]{codeblock}[2][]{%
        enhanced,noparskip,breakable,colback=light-gray,colframe=DarkSlateGray,opacitybacktitle=.8,%
        fonttitle=\bfseries,before upper={\hspace*{-1em}\includegraphics[height=\baselineskip]{example-image-a}~#2},%
        title after break={\centering\footnotesize\itshape\strut Python Code~\thepythoncode~--~continued},%
        listing only,listing options={xleftmargin=-1mm,#1},after upper={\centering\strut Python Code~\thepythoncode:~#2},
        frame hidden,arc=0pt,outer arc=0pt,boxrule=0pt,frame code={\draw[gray,line width=2mm] ([xshift=-0.5pt]frame.north west) -- ([xshift=-0.5pt]frame.south west);},#1}
\newtcbinputlisting[use counter=data]{\inputdata}[3][]{listing options={style=mystylecode},%
    title after break={\centering\footnotesize\itshape\strut Data~\thedata~--~continued},%
     listing only,listing options={xleftmargin=-1mm,#1},after upper={\centering\strut Data~\thedata:~#2},%
     listing file={#3}}
\newtcbinputlisting[use counter=result]{\inputresult}[3][]{listing options={style=mystyleresults},%
    title after break={\centering\footnotesize\itshape\strut Result~\theresult~--~continued},%
     listing only,listing options={xleftmargin=-1mm,#1},after upper={\centering\strut Result~\theresult:~#2},%
     listing file={#3}}
\newtcbinputlisting[use counter=matlab]{\inputmatlab}[3][]{listing options={style=Matlab-editor},%
    title after break={\centering\footnotesize\itshape\strut Matlab Code~\thematlab~--~continued},%
     listing only,listing options={xleftmargin=-1mm,#1},after upper={\centering\strut Matlab Code~\thematlab:~#2},%
     listing file={#3}}

\lstdefinestyle{mystyleresults}{
    backgroundcolor=\color{backcolour},
    commentstyle=\color{codegreen},
    keywordstyle=\color{black},
    numberstyle=\tiny\color{codegray},
    stringstyle=\color{black},
    basicstyle=\ttfamily\footnotesize,
    breakatwhitespace=false,
    breaklines=true,
    captionpos=b,
    keepspaces=true,
    numbers=none,
    numbersep=5pt,
    showspaces=false,
    showstringspaces=false,
    showtabs=false,
    backgroundcolor=\color{myblueiii},
    tabsize=6
}

\lstdefinestyle{mystylecode}{
    language=C,
    numbers=none,
    commentstyle=\color{LimeGreen},
    keywordstyle=\color{BurntOrange}\bfseries,
    keywords={real},
    backgroundcolor=\color{codegray!10}
}

\begin{filecontents}{result1.txt}
=== Run information ===

Correlation coefficient                  0.5941
Mean absolute error                      2.2173
Root mean squared error                  3.7905
Relative absolute error                 76.7091 %
Root relative squared error             81.3406 %
Total Number of Instances              188

\end{filecontents}

\begin{filecontents}{result2.txt}
% 9 attributes
% 188 instances

@relation FIT

@attribute NUMUORS real   % Number of unique operators
@attribute NUMUANDS real  % Number of unique operands
@attribute TOTOTORS real  % Total number of operators

\end{filecontents}

\begin{filecontents*}{sample.m}
% create a file for output
!touch testFile.txt
fid = fopen('testFile.text', 'w')
for i=1:10
  fprintf(fid,'%6.2f \n', i);
end
\end{filecontents*}


\begin{document}

\inputdata{Code Snippet}{result2.txt}
\inputresult{Result from run 1}{result1.txt}

\begin{codeblock}{Les bases de GDScript}
var nombreDeGardes = 4 #déclaration d'une variable
nombreDeGardes = plusDeux(nombreDeGardes) #appel d'une fonction avec la variable nombreDeGardes passée en paramètre
\end{codeblock}

\inputmatlab{Sample matlab code}{sample.m}

\end{document} 
TeXnician
  • 33,589