colorbox e verbatim

  • Questo topic ha 6 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 19 anni fa da neptune.
  • Creatore
    Topic
  • #16937
    Up
    0
    Down
    ::


    ciao,
    vorrei inserire del codice C dentro un colorbox (per avere lo sfondo grigio) ed identarlo. Infine centrare il box. Ho provato:
    `
    \begin {center}
    \colorbox {gray}{
    \begin{verbatim}
    codice {
    XXXXXX
    XXXXXXXXX
    }
    \end{verbatim}
    }
    \end {center}
    `
    Ovviamente non funziona: dentro ad un colorBox pare che non si possa inserire \verbatim.. A parte i pacchetti che sono gia’ stati consigliati sul forum, tanto per capire meglio come funge \colorbox. si può fare questa cosa qua sopra?? O devo passare da un’altra via?
    grazie

Visualizzazione 5 filoni di risposte
  • Autore
    Risposte
    • #16938
      Up
      0
      Down
      ::


      Aspettando l’opinione dei luminari, direi che il tuo codice non funziona perché un ambiente verbatim non può apparire come argomento di alcun comando. Nel tuo caso hai inserito un \begin{verbatim} come argomento di \colorbox. Quindi non direi che questo sia un problema di colorbox.
      Ti riporto la soluzione con il pacchetto listings: compilalo per vedere i risultati
      `\documentclass{article}
      \usepackage{color}
      \usepackage{listings}

      \begin{document}
      \begin{lstlisting} [language=C,
      backgroundcolor=\color{yellow},
      showstringspaces=false,
      basicstyle=\sffamily]
      #include

      int main(void)
      {
      printf(“Usa listings e non te ne pentirai! \n”);

      return 0;
      }
      \end{lstlisting}
      \end{document}`

      Ciao

      Daniele

    • #16939
      Up
      0
      Down
      ::


      Anche se ormai il problema mi sembra risolto vorrei comunque postare una soluzione che utilizza l’ambiente listing ma che utilizza un diverso modo di impostare l’ambiente.

      `
      \documentclass{article}
      \usepackage[italian]{babel}
      \usepackage[utf8]{inputenc}
      \usepackage[T1]{fontenc}
      \usepackage{listings}
      \usepackage{xcolor}
      \lstset{backgroundcolor=\color{gray}}
      \lstloadlanguages{C}

      \begin{document}

      \begin{lstlisting}
      #include

      int main(void){
      printf(“Listing: il migliore per i listati di codice \n”);
      return 0;
      }
      \end{lstlisting}
      \end{document}
      `

      Ciao Alberto

    • #16940
      Up
      0
      Down
      ::


      ciao e grazie, funziona alla perfezione; ma ho un piccolo problema; nel caso in cui il listing viene visualizzato alla fine della pagina, c’e’ la possibilità che una riga del listig venga spezzato nella pagina successiva (per solo una riga!). Si puo’ forzare il box del listing su una pagina, eludendo il margine basso predefinito di latex?
      Un’altra cosa: dentro al listing ho usato ” anzichè ‘apice apice’ (spero sia corretto)

    • #16941
      Up
      0
      Down
      ::


      Quello che chiedi sarebbe equivalente ad avere una pagina “più lunga” delle altre? Se questo è quello che vuoi fare, te lo sconsiglio nella maniera più assoluta (forse ho capito male). Procedi a togliere qualche riga bianca di troppo, o a ridimensionare i commenti del codice (se ne hai qualcuno). Non so se cambiando basicstyle in \small\sffamily, ottieni l’effetto di avere meno righe, o lo stesso numero di righe ma con meno spazio fra una riga e l’altra. Prova.

      Come nota (irrilevante se il tuo codice è più lungo di una pagina), tieni presente che gli ambienti di listings possono essere anche flottanti e a quel punto è LaTeX a decidere dove posizionare il listato, che si comporta come una vera e propria figura. Leggi la documentazione di listings che è fatta benissimo.

      Nessun problema per il carattere “.

      Ciao

      Daniele

    • #16942
      Up
      0
      Down
      ::


      il mio codice è banalissimo (6 righe) ma guarda caso l’ultima riga che contiene una parentesi graffa finisce ad inizio pagina. Cosi’ è bruttino..

    • #16943
      Up
      0
      Down
      ::


      Se l’ultima parentesi graffa è quella che chiude la funzione int main(void) puoi anche metterla sulla penultima riga, nell’esempio postato in parte a return 0;. Mettere il listing in un ambiente flottante non sarebbe molto buono anche perchè potrebbe capitare che ti si crei un bel po’ di spazio bianco se latex forza tutto a pagina nuova.

      Ciao Alberto

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

Go to top