\lstlistoflistings e didascalie “fantasma”

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


      Chiedo scusa per il titolo criptico. Vorrei inserire una didascalia breve da scrivere nell’elenco del codici, ottenuto con il pacchetto listings. Sarebbe facile, naturalmente: basta usare
      `caption={[didascalia breve]Didascalia}`
      Solo, non voglio usare quella sintassi, ma solo:
      `caption={Didascalia}`
      La ragione? La solita! Il codice lo inserisco in un ambiente sidebyside, e non voglio che il lettore sia distratto dalla didascalia breve. Ho provato a riciclare un trucco che con il pacchetto float aveva funzionato:
      `\documentclass{scrartcl}
      \usepackage[italian]{babel}
      \usepackage[nochapters]{classicthesis-ldpkg}
      \usepackage[nochapters]{classicthesis}
      \usepackage[italian]{arsclassica}

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

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

      \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}

      \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}

      \begingroup
      \let\standardcaption\captionbelow
      \def\captionbelow{\standardcaption[Didascalia breve]}
      \begin{lstlisting}%

      for i:=maxint to 0 do
      begin
      { do nothing }
      end;
      \end{lstlisting}
      \endgroup

      \end{document}`
      Invano. C’è modo di rimediare?

      Grazie millle,
      L.

    Visualizzazione 1 filone di risposte
    • Autore
      Risposte
      • #28858
        DMW
          Up
          0
          Down
          ::


          L’unica cosa che mi è venuta in mente è questa:
          `\begin{document}

          \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}

          %\begingroup è inutile
          \makeatletter%modifica
          \lst@Key{caption}\relax{\lstKV@OptArg[{#1}]{#1}%
          {\def\lst@caption{##2}\def\lst@@caption{Dida breve}}%
          \let\lst@title\@empty}
          \makeatother
          \begin{lstlisting}%

          for i:=maxint to 0 do
          begin
          { do nothing }
          end;
          \end{lstlisting}
          %\endgroup è inutile

          \makeatletter %ripristino
          \lst@Key{caption}\relax{\lstKV@OptArg[{#1}]{#1}%
          {\def\lst@caption{##2}\def\lst@@caption{##1}}%
          \let\lst@title\@empty}
          \makeatother
          \begin{lstlisting}
          for i:=maxint to 0 do
          begin
          { non far nulla }
          end;
          \end{lstlisting}

          \end{document}`

          begingroup e endgroup sono inutili perché la modifica della chiave caption mediante \lst@Key è globale, almeno credo 😯

          In pratica ho modificato e poi ripristinato (leggi le parti in rosso).
          Fa’ un po’ di prove. Poi vediamo se l’esimio trova qualche soluzione migliore. 😀

          Poi ti consiglio di togliere quel \pdfbookmark[1]{\lstlistlistingname}{lol}: mi vengono due segnalibri.

          Ciao,

          Andrea

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


            La soluzione fornita da Andrea funziona alla perfezione! 😀

            Grazie mille,
            Lorenzo

        Visualizzazione 1 filone di risposte
        • Devi essere connesso per rispondere a questo topic.

        Go to top