- Questo topic ha 3 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 13 anni, 8 mesi fa da .
-
Topic
-
Salve a tutti,ho un nuovo problema.
Nella tesi che sto scrivendo devo inserire listati di codice in due linguaggi diversi (C e Fortran). Quello che volevo ottenere è che i codici nel testo abbiano tutti il loro caption, ma che al posto di “listato:….” fosse indicato “Listato C” o “Listato Fortran” a seconda dei casi, numerati separatamente.
L’altro obiettivo è stato anche quello di avere poi un elenco dei listati unico, che riportasse solo uno dei due (nello specifico, il C), in quanto i listati sono tutti raddoppiati: ne ho di due linguaggi perché devo fare gli stessi esempi e le stesse implementazioni sia in C che Fortran, e non voglio l’elenco doppio.Aiutato da qualcuno di voi ho ottenuto questo, che fin’ora ha sempre funzionato benissimo:
`\makeatletter
\patchcmd{\lst@MakeCaption}{{lol}{lstlisting}}{{lol}{\lstlistingtype}}{}{}
\patchcmd{\lst@MakeCaption}{{lol}{lstlisting}}{{lol}{\lstlistingtype}}{}{}\newcommand\lstlistofClistings{%
\cleardoublepage\phantomsection
\pdfbookmark{Elenco dei listati}{C}
\begingroup
\let\l@Flstlisting\@gobbletwo
\let\l@Clstlisting\l@lstlisting
\def\lstlistlistingname{Elenco dei listati}
\@ifundefined{@donefirst}{\@fileswfalse\global\let\@donefirst\@empty}{}
\lstlistoflistings
\endgroup
}
\newcommand\lstlistofFlistings{%
\cleardoublepage\phantomsection
\pdfbookmark{Listati Fortran}{F}
\begingroup
\let\l@Clstlisting\@gobbletwo
\let\l@Flstlisting\l@lstlisting
\def\lstlistlistingname{Listati Fortran}
\@ifundefined{@donefirst}{\@fileswfalse\global\let\@donefirst\@empty}{}
\lstlistoflistings
\endgroup
}\makeatother
%\def\lstlistingtype{lstlisting}
%\lstnewenvironment{Flstlisting}[1][]
%{\def\lstlistingtype{Flstlisting}\lstset{style=fortran,#1}\renewcommand{\lstlistingname}{Listato Fortran}}
%{}
%\lstnewenvironment{Clstlisting}[1][]
%{\def\lstlistingtype{Clstlisting}\lstset{style=c,#1}\renewcommand{\lstlistingname}{Listato C}}
%{}\newcounter{oldlstlisting}
\newcounter{Flstlisting}[chapter]
\newcounter{Clstlisting}[chapter]\lstnewenvironment{Flstlisting}[1][]{
\def\lstlistingtype{Flstlisting}
\setcounter{oldlstlisting}{\value{lstlisting}}
\setcounter{lstlisting}{\value{Flstlisting}}
\renewcommand\lstlistingname{Listato Fortran}
\lstset{style=fortran,#1}
} {
\stepcounter{Flstlisting}
\setcounter{lstlisting}{\value{oldlstlisting}}
}\lstnewenvironment{Clstlisting}[1][]{
\def\lstlistingtype{Clstlisting}
\setcounter{oldlstlisting}{\value{lstlisting}}
\setcounter{lstlisting}{\value{Clstlisting}}
\renewcommand\lstlistingname{Listato C}
\lstset{style=c,#1}
} {
\stepcounter{Clstlisting}
\setcounter{lstlisting}{\value{oldlstlisting}}
}\lstnewenvironment{Flstlisting*}[1][]{
\def\lstlistingtype{Flstlisting}
\renewcommand\lstlistingname{Listato Fortran}
\lstset{style=fortran,#1}
} {}\lstnewenvironment{Clstlisting*}[1][]{
\def\lstlistingtype{Clstlisting}
\renewcommand\lstlistingname{Listato C}
\lstset{style=c,#1}
} {}
`In questo modo ho avuto fin’ora due ambienti, Clstlisting e Flstlisting, e poi lstlistofClistings (o lstlistofFlistings) per mostrare l’indice.
Tutto è andato bene, fino a che, arrivato al capitolo 6 della tesi, ha smesso di funzionare. L’indice dei listati ne mostra un po’, fino a i primi 3 del capitolo successivo. I restanti non me li inserisce più in indice. Qualcuno ha qualche idea?? Io proprio no… Grazie!
- Devi essere connesso per rispondere a questo topic.