0

This question is building from the solution posted here for "Add callout on listing file".

With a modified \newtcbinputlisting, I get a compile error:

! Use of \tcb@@icolorbox doesn't match its definition. <argument> \def \reserved@a { \def \@currenvir {tikzpicture}\edef \@currenvli... l.74 Result from run 1}{result1.txt}

Can you tell me how to overcome this compile definition mismatch?

Here is the modified code:

\documentclass[a4paper, 10pt]{report}

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

\definecolor{myblueiii}{RGB}{199,234,253}

\usepackage{tcolorbox}
\newcounter{result}
\tcbuselibrary{skins,breakable,listings}

\newtcbinputlisting[use counter=result,list inside=result,number within=chapter,list type=result]{\inputresult}[3][]{%listing options={style=mystyleresults},%
    list text = {#2},
    enhanced,noparskip,breakable,colback=myblueiii,colbacktitle = myblueiii,
    title after break={\centering\footnotesize\itshape\bfseries\strut Result~\theresult~--~continued},%
    listing only,listing options={xleftmargin=-1mm,#1,style=mystyleresults},after upper={\centering\strut{\bfseries Result~\theresult:}~#2},%
    listing file={#3},#1}

\lstdefinestyle{mystyleresults}{
    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,
    tabsize=6
}

\begin{filecontents}{result1.txt}
=== Run information ===
Classifier Model
Bagging with 10 iterations and base learner

weka.classifiers.trees.J48 -C 0.25 -M 2
Cost Matrix
 0 1
 1 0
Time taken to build model: 0.01 seconds
=== Stratified cross-validation ===
=== Summary ===
Correctly Classified Instances         166               88.2979 %
Incorrectly Classified Instances        22               11.7021 %
Kappa statistic                          0.7173
\end{filecontents}

\begin{document}

\inputresult{%
  \begin{tikzpicture}[overlay,xshift=-5cm,yshift=3.75cm]%% Get (0,0) in the right place
    \node[draw, fill=red,opacity=0.3,rounded corners=2mm,anchor=west,minimum height=10mm,minimum width=21mm]{};
    \draw[line width=1.5pt,-latex](2.1,0)-- (3.5,0);
    \node[anchor=west,text width=16mm] at (3.5,0) {\textcolor{red}{\textsf{\footnotesize cost matrix change from}}};
    \node[anchor=west] at (5.5,0) {\textcolor{red}{\footnotesize$%
        \begin{matrix}
          \mathsf{0} & \mathsf{1}\\ \mathsf{1} & \mathsf{0}
        \end{matrix}$}};
    \draw[line width=1.5pt,-latex](6.5,0)-- +(1,0);
    \node[anchor=west] at (7.5,0) {\textcolor{red}{\footnotesize$%
        \begin{matrix}
          \mathsf{0} & \mathsf{10}\\ \mathsf{10} & \mathsf{0}
        \end{matrix}$}};
  \end{tikzpicture}%
  Result from run 1}{result1.txt}

\end{document} 
Joe
  • 9,080

1 Answers1

1

Apparently the new settings does not allow you to place the picture inside the caption. Instead you can place it directly after the listing box. That means changing the positioning of the picture. Since the option [overlay] is used the picture does not occupy any space. I have also added \lipsums to see the spacing before and after the listing.

\usepackage[nopar]{lipsum}

\begin{document}

\lipsum[1]
\inputresult{Result from run 1}{result1.txt}
\begin{tikzpicture}[overlay,xshift=-0.15cm,yshift=4.7cm]%% Get (0,0) in the right place
  \node[draw, fill=red,opacity=0.3,rounded corners=2mm,anchor=west,minimum height=10mm,minimum width=21mm]{};
  \draw[line width=1.5pt,-latex](2.1,0)-- (3.5,0);
  \node[anchor=west,text width=16mm] at (3.5,0) {\textcolor{red}{\textsf{\footnotesize cost matrix change from}}};
  \node[anchor=west] at (5.5,0) {\textcolor{red}{\footnotesize$%
      \begin{matrix}
        \mathsf{0} & \mathsf{1}\\ \mathsf{1} & \mathsf{0}
      \end{matrix}$}};
  \draw[line width=1.5pt,-latex](6.5,0)-- +(1,0);
  \node[anchor=west] at (7.5,0) {\textcolor{red}{\footnotesize$%
      \begin{matrix}
        \mathsf{0} & \mathsf{10}\\ \mathsf{10} & \mathsf{0}
      \end{matrix}$}};
\end{tikzpicture}%
\lipsum[2]

enter image description here

StefanH
  • 13,823