Problema con indice dei listati

  • Creatore
    Topic
  • #81852
    Up
    0
    Down
    ::


    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!

Visualizzazione 2 filoni di risposte
  • Autore
    Risposte
    • #81853
      Up
      0
      Down
      ::


      Ok, scusate…

      Improvvisamente il problema è sparito.
      Non so come mai, non ho fatto assolutamente niente…

      Sarà colpa della mia distribuzione, avrà qualche problema.

      Grazie comunque!

    • #81854
      Up
      0
      Down
      ::

      canemacchina” post=81123Ok, scusate…

      Improvvisamente il problema è sparito.
      Non so come mai, non ho fatto assolutamente niente…

      Sarà colpa della mia distribuzione, avrà qualche problema.

      Più probabile un errore durante la compilazione che ha corrotto uno dei file ausiliari. In questi casi è sempre buona regola eliminarli in modo che LaTeX ne generi di nuovi. Se il problema persiste, andare in cerca della causa.

      Ciao
      Enrico

    • #81855
      Up
      0
      Down
      ::


      La cosa assurda è proprio quella!

      Normalmente io (come ho fatto in questo caso) ogni volta che improvvisamente e senza motivo trovo un errore, per prima cosa pulisco tutto (lanciando un cliean) e poi ricompilo tutto. Questa volta invece non è servito a nulla, e per quello pensavo che il problema fosse un’altro. E la cosa è andata avanti per un paio di giorni, poi d’improvviso ha smesso…

      Bah…

Visualizzazione 2 filoni di risposte
  • Devi essere connesso per rispondere a questo topic.

Go to top