Didascalie ambienti listings e pacchetto float

  • Creatore
    Topic
  • #33920
    Venator85
    Partecipante
      Up
      0
      Down
      ::


      Ciao a tutti,
      ho da poco scoperto il pacchetto float per personalizzare le didascalie degli ambienti flottanti. Vorrei impostare le didascalie degli ambienti flottanti lstlistings con lo stile ‘ruled’ come da esempio, ma il risultato non è quello che mi aspetto (non ottengo errori di compilazione). Ho cercato un po’ in rete ma non ho trovato granché. Allego un documento di esempio:

      `\documentclass[a4paper]{article}
      \usepackage{listings}
      \usepackage{float}

      \floatstyle{ruled}
      \restylefloat{figure}
      \restylefloat{table}
      \restylefloat{lstlisting} % <<< non funziona! \begin{document} \begin{table} \begin{center} \begin{tabular}{c|c} aaa & bbb \\ \hline ccc & ddd \\ \end{tabular} \end{center} \caption{Didascalia tabella qui.} \end{table} \begin{lstlisting}[float=tbp, caption={Didascalia qui.}] int main() { // un po' di codice qui... } \end{lstlisting} \end{document}` Come posso fare? Ciao e grazie ;)

    Visualizzazione 3 filoni di risposte
    • Autore
      Risposte
      • #33921
        Up
        0
        Down
        ::

        Ciao a tutti,
        ho da poco scoperto il pacchetto float per personalizzare le didascalie degli ambienti flottanti. Vorrei impostare le didascalie degli ambienti flottanti lstlistings con lo stile ‘ruled’ come da esempio, ma il risultato non è quello che mi aspetto (non ottengo errori di compilazione). Ho cercato un po’ in rete ma non ho trovato granché. Allego un documento di esempio:

        `\documentclass[a4paper]{article}
        \usepackage{listings}
        \usepackage{float}

        \floatstyle{ruled}
        \restylefloat{figure}
        \restylefloat{table}
        \restylefloat{lstlisting} % <<< non funziona! \begin{document} \begin{table} \begin{center} \begin{tabular}{c|c} aaa & bbb \\ \hline ccc & ddd \\ \end{tabular} \end{center} \caption{Didascalia tabella qui.} \end{table} \begin{lstlisting}[float=tbp, caption={Didascalia qui.}] int main() { // un po' di codice qui... } \end{lstlisting} \end{document}` Come posso fare? Ciao e grazie ;)

        Temo proprio che listings usi il suo metodo per i float e quindi il pacchetto float non ci può fare niente, essendo basato su come funzionano figure e table.

        Ci sono molti modi per personalizzare listings: non dovrebbe essere impossibile ottenere una forma simile a quella dello stile ruled, ma lo si deve fare a mano con i comandi di listings.

        Ciao
        Enrico

      • #33922
        Venator85
        Partecipante
          Up
          0
          Down
          ::


          Uhm ok pazienza 🙂
          Grazie dell’aiuto

        • #33923
          Up
          0
          Down
          ::

          Uhm ok pazienza 🙂
          Grazie dell’aiuto

          Ecco qui, non era banalissimo:
          `\makeatletter
          \def\lst@makecaption#1#2{%
          \def\@fs@cfont{\bfseries}%
          \hrule\@height .8\p@\kern2\p@
          \floatc@ruled{#1}{#2}\par\kern\dp\strutbox\kern-1\p@}
          \makeatother`
          Ciao
          Enrico

        • #33924
          Venator85
          Partecipante
            Up
            0
            Down
            ::


            Grande! Aggiungendo un frame attorno al listing il risultato è perfetto!
            `\documentclass[a4paper]{article}
            \usepackage{listings}
            \usepackage{float}

            \makeatletter
            \def\lst@makecaption#1#2{%
            \def\@fs@cfont{\bfseries}%
            \hrule\@height .8\p@\kern2\p@
            \floatc@ruled{#1}{#2}\par\kern\dp\strutbox\kern-1\p@}
            \makeatother

            \lstset{frame=tb}

            \floatstyle{ruled}
            \restylefloat{figure}
            \restylefloat{table}
            \restylefloat{listings}

            \begin{document}

            \begin{table}
            \begin{center}
            \begin{tabular}{c|c}
            aaa & bbb \\ \hline
            ccc & ddd \\
            \end{tabular}
            \end{center}
            \caption{Didascalia tabella qui.}
            \end{table}

            \begin{lstlisting}[float=tbp, caption={Didascalia listing qui.}]
            int main()
            {
            // un po' di codice qui…
            }
            \end{lstlisting}

            \end{document}
            `
            Grazie mille! 😉

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

        Go to top