ClassicThesis e \lstlistoflistings

  • Creatore
    Topic
  • #28477
    lorenzo.pantieri
    Partecipante
      Up
      0
      Down
      ::


      Ciao a tutti, ClassicThesis non va d’accordo con il comando \lstlistoflistings. Il seguente
      `\documentclass{scrartcl}

      \usepackage[italian]{babel}
      \usepackage[nochapters]{classicthesis-ldpkg}
      \usepackage[nochapters]{classicthesis}

      \addto\captionsitalian{%
      \renewcommand{\lstlistingname}{Codice}}

      \addto\captionsitalian{%
      \renewcommand{\lstlistlistingname}{Elenco dei codici}}

      \begin{document}

      \phantomsection
      \refstepcounter{dummy}
      \addcontentsline{toc}{section}{\lstlistlistingname}
      \pdfbookmark[1]{\lstlistlistingname}{lol}
      \lstlistoflistings

      \begin{lstlisting}[float,caption=Un codice mobile.]
      for i:=maxint to 0 do
      begin
      { non far nulla }
      end;
      \end{lstlisting}
      \end{document}`
      funziona benone con le classi standard, ma con ClassicThesis ci sono due problemi:
      1. c’è un errore in compilazione (anche se non fatale);
      2. lo stile dell’elenco dei codici non è omogeneo con quello degli altri elenchi (ci sono i soliti puntini…).

      Come rimediare?

      Grazie mille,
      L.

    Visualizzazione 13 filoni di risposte
    • Autore
      Risposte
      • #28478
        Up
        0
        Down
        ::

        Ciao a tutti, ClassicThesis non va d’accordo con il comando \lstlistoflistings. Il seguente
        `\documentclass{scrartcl}

        \usepackage[italian]{babel}
        \usepackage[nochapters]{classicthesis-ldpkg}
        \usepackage[nochapters]{classicthesis}

        \addto\captionsitalian{%
        \renewcommand{\lstlistingname}{Codice}}

        \addto\captionsitalian{%
        \renewcommand{\lstlistlistingname}{Elenco dei codici}}

        \begin{document}

        \phantomsection
        \refstepcounter{dummy}
        \addcontentsline{toc}{section}{\lstlistlistingname}
        \pdfbookmark[1]{\lstlistlistingname}{lol}
        \lstlistoflistings

        \begin{lstlisting}[float,caption=Un codice mobile.]
        for i:=maxint to 0 do
        begin
        { non far nulla }
        end;
        \end{lstlisting}
        \end{document}`
        funziona benone con le classi standard, ma con ClassicThesis ci sono due problemi:
        1. c’è un errore in compilazione (anche se non fatale);
        2. lo stile dell’elenco dei codici non è omogeneo con quello degli altri elenchi (ci sono i soliti puntini…).

        Come rimediare?

        Non ho alcun errore in compilazione. Per quanto riguarda l’elenco, il problema è serio e ci dovrebbe pensare Miède. Il fatto è che il trucco che ti ho mostrato per la coabitazione con float qui non funziona: il pacchetto listings viene caricato da classicthesis-ldpkg, mentre tocloft arriva dopo ed è troppo tardi.

        Ho provato un paio di trucchi, ma ancora niente.

        Ciao
        Enrico

      • #28479
        lorenzo.pantieri
        Partecipante
          Up
          0
          Down
          ::

          Ho provato un paio di trucchi, ma ancora niente.

          Ci conto… 😉

          Grazie mille,
          L.

        • #28480
          lorenzo.pantieri
          Partecipante
            Up
            0
            Down
            ::


            Ops! Mi erano sfuggite queste due righe, presenti sotto forma di commento in ClassicThesis.tex (ma non nella documentazione pdf):

            % To Do:
            % * support a List of Listings that looks like the other lists

            Più chiaro di così…

            Ciao,
            L.

          • #28481
            Up
            0
            Down
            ::

            Ops! Mi erano sfuggite queste due righe, presenti sotto forma di commento in ClassicThesis.tex (ma non nella documentazione pdf):

            % To Do:
            % * support a List of Listings that looks like the other lists

            Più chiaro di così…

            Direi che André ha gettato la spugna un po’ troppo presto:
            `\newlistof{listings}{lol}{\lstlistlistingname}
            \renewcommand{\cftlistingspresnum}{\scshape\MakeTextLowercase}%
            \renewcommand{\cftlistingsfont}{\normalfont}%
            \renewcommand{\cftlistingspagefont}{\normalfont}%
            \renewcommand{\cftlistingsleader}{\hspace{1.5em}}%
            \renewcommand{\cftlistingsafterpnum}{\cftparfillskip}%
            \let\l@lstlisting\l@listings
            \let\lstlistoflistings\listoflistings`
            I valori che ho dato ai comandi di tocloft relativi a questo tipo di indice sono presi da ClassicThesis e non sono sicuro che facciano ciò che si intende. Ma l’idea è quella.

            Puoi usare \lstlistoflistings o \listoflistings a piacere per produrre l’indice.

            Visto che il trucco l’ho trovato? 🙂 Naturalmente va messo quando sono caricati sia listings che tocloft.

            Ciao
            Enrico

          • #28482
            lorenzo.pantieri
            Partecipante
              Up
              0
              Down
              ::

              Direi che André ha gettato la spugna un po’ troppo presto:
              `\newlistof{listings}{lol}{\lstlistlistingname}
              \renewcommand{\cftlistingspresnum}{\scshape\MakeTextLowercase}%
              \renewcommand{\cftlistingsfont}{\normalfont}%
              \renewcommand{\cftlistingspagefont}{\normalfont}%
              \renewcommand{\cftlistingsleader}{\hspace{1.5em}}%
              \renewcommand{\cftlistingsafterpnum}{\cftparfillskip}%
              \let\l@lstlisting\l@listings
              \let\lstlistoflistings\listoflistings`
              I valori che ho dato ai comandi di tocloft relativi a questo tipo di indice sono presi da ClassicThesis e non sono sicuro che facciano ciò che si intende. Ma l’idea è quella.

              Puoi usare \lstlistoflistings o \listoflistings a piacere per produrre l’indice.

              Visto che il trucco l’ho trovato? 🙂 Naturalmente va messo quando sono caricati sia listings che tocloft.

              Funziona egregiamente! 😉 Alè! 😀

              Grazie mille,
              Lorenzo

            • #28483
              Up
              0
              Down
              ::

              Direi che André ha gettato la spugna un po’ troppo presto:
              `\newlistof{listings}{lol}{\lstlistlistingname}
              \renewcommand{\cftlistingspresnum}{\scshape\MakeTextLowercase}%
              \renewcommand{\cftlistingsfont}{\normalfont}%
              \renewcommand{\cftlistingspagefont}{\normalfont}%
              \renewcommand{\cftlistingsleader}{\hspace{1.5em}}%
              \renewcommand{\cftlistingsafterpnum}{\cftparfillskip}%
              \let\l@lstlisting\l@listings
              \let\lstlistoflistings\listoflistings`
              I valori che ho dato ai comandi di tocloft relativi a questo tipo di indice sono presi da ClassicThesis e non sono sicuro che facciano ciò che si intende. Ma l’idea è quella.

              Puoi usare \lstlistoflistings o \listoflistings a piacere per produrre l’indice.

              Visto che il trucco l’ho trovato? 🙂 Naturalmente va messo quando sono caricati sia listings che tocloft.

              Funziona egregiamente! 😉 Alè! 😀

              In realtà si sprecano un paio di contatori, ma poco male. Si può evitarlo sostituendo la prima riga con
              `\begingroup
              \let\newcounter\@gobble\let\setcounter\@gobbletwo
              \globaldefs=\@ne \let\c@loldepth\@ne
              \newlistof{listings}{lol}{\lstlistlistingname}
              \endgroup`
              Il comando \newlistof{listings}{lol}{\lstlistlistingname} infatti definisce con \newcounter due contatori: \newcounter{listings}, \newcounter{loldepth}, poi dà \setcounter{listings}{0} e \setcounter{loldepth}{1}. In quel modo disabilito temporaneamente i comandi \newcounter e \setcounter. Con \globaldefs=1 mi assicuro che tutte le definizioni che vengono date dal comando \newlistof siano valide anche fuori dal gruppo in cui ho disabilitato quei due comandi. ❗ Alla fine del gruppo \globaldefs ritorna al valore precedente. ❗ Mi occorre solo dare il valore corretto a \c@loldepth che è l’analogo del contatore tocdepth, qui è del tutto inutile.

              Per avere i listati numerati globalmente (come mi pare sia lo stile per figure e tabelle), sai di sicuro come si fa:
              `\lstset{numberbychapter=false}`
              nel preambolo.

              Puoi comunicarlo a Miede, purché citi la paternità. 8) Immagino che tu abbia capito perché ci sono arrivato. 😉

              Ciao
              Enrico

            • #28484
              lorenzo.pantieri
              Partecipante
                Up
                0
                Down
                ::


                Caro Enrico,

                ti ringrazio di tutto. Ho solo una curiosità (non essenziale, in relazione all’oggetto della discussione). Il pacchetto tocloft e il pacchetto float definiscono entrambi lo stesso comando \newlistof. Anzi, verosimilmente è tocloft che riprende quel comando da float. Ho visto dalla do. di tocloft che non ci sono problemi di compatibiltà (il pacchetto float è citato più volte), ma (profano qual sono), mi viene spontaneo chuidermi come ciò sia possibile…

                Puoi comunicarlo a Miede, purché citi la paternità. 8)

                Lo farò senz’altro.

                Immagino che tu abbia capito perché ci sono arrivato. 😉

                Eh, sì… 😉

                Grazie mille,
                Lorenzo

              • #28485
                Up
                0
                Down
                ::

                Caro Enrico,

                ti ringrazio di tutto. Ho solo una curiosità (non essenziale, in relazione all’oggetto della discussione). Il pacchetto tocloft e il pacchetto float definiscono entrambi lo stesso comando \newlistof. Anzi, verosimilmente è tocloft che riprende quel comando da float. Ho visto dalla do. di tocloft che non ci sono problemi di compatibiltà (il pacchetto float è citato più volte), ma (profano qual sono), mi viene spontaneo chuidermi come ciò sia possibile…

                Non mi risulta. Il pacchetto float definisce il comando \listof che serve a comporre l’elenco dei nuovi ambienti che possono essere creati con \newfloat.

                Ti spiegai qualche giorno fa il trucco per usare le tecniche di tocloft al posto di quelle di float, infatti.

                Ciao
                Enrico

              • #28486
                lorenzo.pantieri
                Partecipante
                  Up
                  0
                  Down
                  ::

                  Non mi risulta. Il pacchetto float definisce il comando \listof che serve a comporre l’elenco dei nuovi ambienti che possono essere creati con \newfloat.

                  Ops! Il pacchetto float definisce i comandi \newfloat e \listof. Il pacchetto tocloft definisce il comando \newlistof. Ho fatto confusione… 😳

                  Grazie mille,
                  Lorenzo

                • #28487
                  lorenzo.pantieri
                  Partecipante
                    Up
                    0
                    Down
                    ::

                    Puoi comunicarlo a Miede, purché citi la paternità.

                    Fatto. Ecco la risposta di André:

                    Dear Lorenzo,
                    […]
                    ArsClassica looks fine, it’s a very good idea for an extension! 🙂

                    Many thanks for the input, I’ll put the Gregorio-solution on my stack and look into the issue some time later. I have also some new features on my mind, such as dynamic text block configuration for 10–12pt fonts (Palatino+Minion), an option for dotted ToC etc. I wish I could put more time into classicthesis and re-build it to make it more stable and to facilitate the configuration or to enable style integration (such as ArsClassica). Unfortunately, this is probably not gonna happen in the next couple years, as I am too busy with my job and the research… 🙁

                    Kind regards,
                    André

                    Ciao,
                    L.

                  • #28488
                    Up
                    0
                    Down
                    ::


                    Scusate se riapro l’argomento ma c’e’ qualcosa che non ho ben chiara. Ho provato a produrre il codice:

                    `
                    \documentclass{scrreprt}

                    \usepackage{classicthesis-ldpkg}
                    \usepackage[eulerchapternumbers,subfig,beramono,eulermath,pdfspacing,parts]{classicthesis}
                    \usepackage{listings}

                    \lstset{language=Matlab}

                    \newlistof{listings}{lol}{\lstlistlistingname}
                    \renewcommand{\cftlistingspresnum}{\scshape\MakeTextLowercase}%
                    \renewcommand{\cftlistingsfont}{\normalfont}%
                    \renewcommand{\cftlistingspagefont}{\normalfont}%
                    \renewcommand{\cftlistingsleader}{\hspace{1.5em}}%
                    \renewcommand{\cftlistingsafterpnum}{\cftparfillskip}%
                    \let\l@lstlisting\l@listings
                    \let\lstlistoflistings\listoflistings

                    \begin{document}

                    \lstlistoflistings
                    \newpage
                    ciao come stai?

                    \begin{lstlisting}
                    [signals, pc, v] = pca2(data);
                    \end{lstlisting}

                    \end{document}
                    `

                    Perchè volevo eliminare i puntini nell’elenco del codice e renderlo omogeneo allo stile classicThesis. Vengono stampate tre pagine:
                    la prima contiene una sola riga “lstlisting@@listings”;
                    la seconda contiene la lista dei codici ancora con i puntini;
                    la terza pagina il codice, ed e’ corretta.
                    Ottengo inoltre un errore che e’ riassunto dal seguente log:

                    `
                    (“C:\Program Files\MiKTeX 2.7\tex\latex\koma-script\scrtime.sty”
                    Package: scrtime 2006/03/30 v1.1o LaTeX2e KOMA-Script package
                    ))
                    (“C:\Program Files\MiKTeX 2.7\tex\latex\listings\lstlang1.sty”
                    File: lstlang1.sty 2004/09/05 1.3 listings language file
                    )
                    \c@listings=\count119
                    \cftbeforelistingsskip=\skip101
                    \cftlistingsindent=\skip102
                    \cftlistingsnumwidth=\skip103
                    \c@loldepth=\count120
                    \cftbeforeloltitleskip=\skip104
                    \cftafterloltitleskip=\skip105

                    ! LaTeX Error: Missing \begin{document}.

                    See the LaTeX manual or LaTeX Companion for explanation.
                    Type H for immediate help.

                    l.15 \let\l@l
                    stlisting\l@listings
                    You're in trouble here. Try typing to proceed.
                    If that doesn't work, type X
                    to quit.
                    `

                    Sapreste per piacere dirmi cosa ho sbagliato?

                    Grazie anticipatamente per l’aiuto e l’attenzione

                    Cloud

                  • #28489
                    Up
                    0
                    Down
                    ::

                    Scusate se riapro l’argomento ma c’e’ qualcosa che non ho ben chiara. Ho provato a produrre il codice:

                    `
                    \documentclass{scrreprt}

                    \usepackage{classicthesis-ldpkg}
                    \usepackage[eulerchapternumbers,subfig,beramono,eulermath,pdfspacing,parts]{classicthesis}
                    \usepackage{listings}

                    \lstset{language=Matlab}

                    \newlistof{listings}{lol}{\lstlistlistingname}
                    \renewcommand{\cftlistingspresnum}{\scshape\MakeTextLowercase}%
                    \renewcommand{\cftlistingsfont}{\normalfont}%
                    \renewcommand{\cftlistingspagefont}{\normalfont}%
                    \renewcommand{\cftlistingsleader}{\hspace{1.5em}}%
                    \renewcommand{\cftlistingsafterpnum}{\cftparfillskip}%
                    \makeatletter
                    \let\l@lstlisting\l@listings
                    \let\lstlistoflistings\listoflistings
                    \makeatother

                    \begin{document}

                    \lstlistoflistings
                    \newpage
                    ciao come stai?

                    \begin{lstlisting}
                    [signals, pc, v] = pca2(data);
                    \end{lstlisting}

                    \end{document}
                    `

                    Perchè volevo eliminare i puntini nell’elenco del codice e renderlo omogeneo allo stile classicThesis. Vengono stampate tre pagine:
                    la prima contiene una sola riga “lstlisting@@listings”;
                    la seconda contiene la lista dei codici ancora con i puntini;
                    la terza pagina il codice, ed e’ corretta.
                    Ottengo inoltre un errore che e’ riassunto dal seguente log:

                    `…`

                    Aggiungi quello che ho evidenziato in rosso.

                    Ciao
                    Enrico

                  • #28490
                    Up
                    0
                    Down
                    ::


                    Grazie per il suggerimento, funziona molto bene (devo svelarti pero’ che sono un po’ daltonico ed all’inizio non riuscivo a vedere da nessuna parte le due righe rosse attorno a quelle verdi 😀 )

                    Cloud

                  • #28491
                    Up
                    0
                    Down
                    ::

                    Grazie per il suggerimento, funziona molto bene (devo svelarti pero’ che sono un po’ daltonico ed all’inizio non riuscivo a vedere da nessuna parte le due righe rosse attorno a quelle verdi 😀 )

                    Chiedo scusa, allora. Siccome potrebbe succedere in futuro (spero comunque di ricordarmelo), ti consiglio di aprire il messaggio per rispondere e cercare il marcatore .

                    L’idea è che quando si devono definire o ridefinire comandi che contengono @ nel nome, occorre inserire il codice fra \makeatletter e \makeatother oppure scriverlo in un file .sty da caricare con \usepackage.

                    Ciao
                    Enrico

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

                Go to top