Includere Programmi con scritte in grassetto e corsivo

  • Creatore
    Topic
  • #713
    admin
    Amministratore del forum
      Up
      0
      Down
      ::


      Salve sono un povero tesista costretto a scrivere la tesi in Latex 😯 .

      Dovrei includere dei programmi e si consiglia l’uso di verbatim ma alcune parti di questi programmi le devo mettere in grassetto e corsivo.

      Pur utilizzando i pacchetti standard come posso fare?

    Visualizzazione 22 filoni di risposte
    • Autore
      Risposte
      • #714
        Up
        0
        Down
        ::


        Ciao,
        ci sono varie possibilità, poi bisogna scegliere in base ai tuoi reali bisogni:

        usare il pacchetto alltt che funziona più o meno come verbatim a parte il fatto che puoi usare la macro di LaTeX “\” (e se non sboglio le parentesi) che mantengono il loro usuale significato.
        Te lo sconsiglio a meno che tu non debba fare cose particolarmente semplici perché se devi listare del codice di programmazione complesso (e sopratutto che contenga \) ci sono i caratteri speciali che vanno a influire con il pachetto e diventa annoiante evitare i pasticci.

        usare fancyvrb che è un pachetto stupendo e altamente personalizzabile. lo consiglio a tutte le persone che vogliono ottenere effetti particolari con l’ambiente verbatim. la guida poi è chiara e completa.

        moreverb che è un estensione del pacchetto verbatim ma che non conosco e quindi non ti so dire pregi e difetti.

        altrimenti esitono una serie di pacchetti pensati per scrivere codice, che però non ho quasi mai usato. in genere riconoscono parole chiave da mettere in grassetto automaticamente (e spesso gestire i rientri) per quelli che sono i miei ricordi però spesso sono un po’ noiosi da personalizzare, ovvero prendono un po’ di tempo per imparare ad usarli. per i nomi credo listing e lgrind ma basta una veloce ricerca su ctan.

        facci sapere (magari provando questi pachetti) e intanto speriamo che qualche utente dia informazioni più precise.
        ciao

      • #715
        Up
        0
        Down
        ::


        ciao,
        ho appena visto che nella mia distribuzione linux (mandrake 9.0) c’è un apparente comodissimo programmino di 30kb che potrebbe fare al caso tuo: si chiama C++2latex e la descrizione dice:

        C++2LaTeX takes as input a C or C++ source file and outputs a LaTeX file that is a beautified listing (optionally the output can contain the ‘documentstyle’ header and so on).

        facci sapere come è andata
        ciao
        f

      • #716
        Up
        0
        Down
        ::


        Ho fatto una prova con c++2latex convertendo un programma complicatissimo, pieno di commenti e lunghissimo.
        il risultato è strabiliante, le parole chiave come int, in return etc vengono messe in grassetto, i commenti in corsi e il resto in caretteri normali.
        il tutto con un banalissimo c++2latex nomefile.cpp, si ottiene il file .tex, sia aggiunge begin{document} e compagina bella ed è tutto pronto.
        il codice non so se è pasticicato, ma il risultato è ottimo… anzi, vi dirò, il programma viene scritto talmente bene che non sembra più un programma vero e proprio (sono abituato al monospace, che volete…), sembra qualcosa d’altro.

        qualcuno sa se esiste qualche cosa di analogo sotto winodoz?

        ciao
        f

      • #717
        Up
        0
        Down
        ::

        qualcuno sa se esiste qualche cosa di analogo sotto winodoz?

        Come ben sai, Linux è un sistema open-source… puoi sempre tentare di prendere il codice e ri-compilarlo con un compilatore per Winzozz :D… Questo però credo te lo possa chiarire meglio ev.
        Ciao.

      • #718
        ev
        Partecipante
          Up
          0
          Down
          ::

          qualcuno sa se esiste qualche cosa di analogo sotto winodoz?

          Come ben sai, Linux è un sistema open-source… puoi sempre tentare di prendere il codice e ri-compilarlo con un compilatore per Winzozz :D… Questo però credo te lo possa chiarire meglio ev.

          Mai svegliare il can che dorme :mrgreen: Comunque, eccomi qui: per C++2LaTeX esistono i sorgenti nel classico tarball gzippato ed anche uno schifoso rpm, ma per quanto ne so non c’è l’eseguibile per Win??; se vi garba date un’occhiata alla home page del progetto. Da qualche parte dovrei ancora avere un’installazione di Cygwin… quasi quasi provo a compilarlo per Win?? e poi qualcuno lo testerà. Vi farò sapere.

        • #719
          Up
          0
          Down
          ::

          Mai svegliare il can che dorme :mrgreen: Comunque, eccomi qui: per C++2LaTeX esistono i sorgenti nel classico tarball gzippato ed anche uno schifoso rpm, ma per quanto ne so non c’è l’eseguibile per Win??; se vi garba date un’occhiata alla home page del progetto. Da qualche parte dovrei ancora avere un’installazione di Cygwin… quasi quasi provo a compilarlo per Win?? e poi qualcuno lo testerà. Vi farò sapere.

          E io lo sapevo, ecco perché ho fatto il tuo nome… 😉

        • #720
          Up
          0
          Down
          ::

          usare il pacchetto alltt che funziona più o meno come verbatim a parte il fatto che puoi usare la macro di LaTeX “\” (e se non sboglio le parentesi) che mantengono il loro usuale significato.
          Te lo sconsiglio a meno che tu non debba fare cose particolarmente semplici perché se devi listare del codice di programmazione complesso (e sopratutto che contenga \) ci sono i caratteri speciali che vanno a influire con il pachetto e diventa annoiante evitare i pasticci.

          usare fancyvrb che è un pachetto stupendo e altamente personalizzabile. lo consiglio a tutte le persone che vogliono ottenere effetti particolari con l’ambiente verbatim. la guida poi è chiara e completa.

          moreverb che è un estensione del pacchetto verbatim ma che non conosco e quindi non ti so dire pregi e difetti.

          altrimenti esitono una serie di pacchetti pensati per scrivere codice, che però non ho quasi mai usato. in genere riconoscono parole chiave da mettere in grassetto automaticamente (e spesso gestire i rientri) per quelli che sono i miei ricordi però spesso sono un po’ noiosi da personalizzare, ovvero prendono un po’ di tempo per imparare ad usarli. per i nomi credo listing e lgrind ma basta una veloce ricerca su ctan.

          Io consiglierei di utilizzare sempre listings perché (per quanto ho visto in giro) è il pacchetto che permette maggiore personalizzazione della formattazione del codice e non è difficile da usare in quanto corredato da un ottimo manuale. Per ulteriori informazioni, invito chi fosse interessato a leggere qua, qua e qua.

        • #721
          Up
          0
          Down
          ::


          qualcuno ha trovato questo c++2latex per windows? mi servirebbe veramente tantissimo…

        • #722
          Up
          0
          Down
          ::


          Io sto utilizzando listings per i comandi Matlab e per ora sembra funzionare … non ho ancora appreso tutte le potenzialità del pacchetto ma già da subito il risultato è buono. Inoltre è possibile selezionare numerosi linguaggi di programmazione!

        • #723
          Up
          0
          Down
          ::


          Ho provato cpp2latex ed è meravgilioso, a parte che a volte mi trovo nel pdf le righe troppo lunghe che escono dal foglio. Alcune volte riesce a capire e va a capo, altre invece no (specie quando ci sono array con argomenti lunghi bla[blablabla…].

          E poi l’opzione sintax highlighting con -h non mi funziona.

          PS: sto usando l’rpm, non sono riuscito a compilarlo quell’altro.

          Ciao!

        • #724
          Up
          0
          Down
          ::


          Ciao

          da tempo tenevo sott’occhio questo topic. Ho scaricato Cpp2latex e me lo sono riscritto in MS Visual C++, per aggiungerci alcune parole riservate e per poterlo personalizzare a mio piacimento. La mia versione e’ ancora un po’ grezza ma funziona come l’originale. In realta’ ero partito da un semplice programmino che strippa via i commenti dai listati C e poi mi sono allargato 😆
          Grazie ai vostri suggerimenti pero’ ho provato lo strabiliante pacchetto listings 😯 e devo dire che listings fa tutto quello che serve e molto di piu’.

          Il mio consiglio e’ decisamente listings.

        • #725
          Up
          0
          Down
          ::


          Ciao!
          é da un po’ che sto cercando come inserire del codice in un documento latex, ho provato verbatim… e poi ho scoperto listing, che va benissimo, posso personalizzare la grandezza del carattere e soprattutto riconosce le ligne di commento del codice e le mette in grigio (ho scenlo io il colore grigio)!

          però ho un piccolo problema…prima di inserire il listing devo fare un \newpage, altrimenti mi provoca una lunga lista di errori!

          Qualcuno sa il perché?

        • #726
          Up
          0
          Down
          ::

          Ciao!
          é da un po’ che sto cercando come inserire del codice in un documento latex, ho provato verbatim… e poi ho scoperto listing, che va benissimo, posso personalizzare la grandezza del carattere e soprattutto riconosce le ligne di commento del codice e le mette in grigio (ho scenlo io il colore grigio)!

          però ho un piccolo problema…prima di inserire il listing devo fare un \newpage, altrimenti mi provoca una lunga lista di errori!

          Qualcuno sa il perché?

          Stai parlando di listing o di listings?

          Esempio minimo, per favore.

          Ciao
          Enrico

        • #727
          Up
          0
          Down
          ::


          Ciao!

          Per inserire il codice faccio così:

          \newpage
          \vspace{0.8 cm}
          \hline
          \lstinputlisting{code.c}
          \vspace{0.5 cm}

          Prima faccio un \lset generale:

          \lstset{language={C},numbers=none, basicstyle=\ttfamily \small, commentstyle=\color{grey},frame={tb}, showstringspaces=false}

          se tolgo il \newpage prima dell’inserimento del codice fa quasi una 30ina di errori, ma che probabilmente deraivano tutti da una cosa sola perché se tolgo l’inserimento del codice tutto va bene.

          il risultato dovrebbe essere più o meno:
          ______________________________
          listing 1: mioCode________________
          main{
          ….}

          ______________________________

        • #728
          Up
          0
          Down
          ::

          Ciao!

          Per inserire il codice faccio così:

          \newpage
          \vspace{0.8 cm}
          \hline
          \lstinputlisting{code.c}
          \vspace{0.5 cm}

          Prima faccio un \lset generale:

          \lstset{language={C},numbers=none, basicstyle=\ttfamily \small, commentstyle=\color{grey},frame={tb}, showstringspaces=false}

          se tolgo il \newpage prima dell’inserimento del codice fa quasi una 30ina di errori, ma che probabilmente deraivano tutti da una cosa sola perché se tolgo l’inserimento del codice tutto va bene.

          il risultato dovrebbe essere più o meno:
          ______________________________
          listing 1: mioCode________________
          main{
          ….}

          ______________________________

          Non puoi usare \hline fuori dagli ambienti tabular. Suppongo che quel formato si possa ottenere tramite comandi specifici di listings.

          Ciao
          Enrico

        • #729
          Up
          0
          Down
          ::


          si, difatti da l’errore ma funziona comunque…

          lo uso solo perché non riesco a trovare un formato che lo faccia…e il problema é che devo fare così…qualcuno conosce il formato adeguato?

        • #730
          Up
          0
          Down
          ::

          si, difatti da l’errore ma funziona comunque…

          lo uso solo perché non riesco a trovare un formato che lo faccia…e il problema é che devo fare così…qualcuno conosce il formato adeguato?

          Puoi provare a scrivere \medskip\hrule\nobreak invece di \hline:
          `testo prima

          \bigskip\hrule\nobreak
          \lstinputlisting{code.c}
          \medskip

          testo dopo`
          Ti consiglio di aggiungere
          `abovecaptionskip=0pt,belowcaptionskip=\medskipamount`
          alle preferenze impostate con \lstset.

          Naturalmente sarà meglio definire un comando apposito:
          `\newcommand{\mylstinputlisting}[2][]{%
          \bigskip\hrule\nobreak
          \lstinputlisting[#1]{#2}
          \medskip}`
          e, già che ci sei, anche un ambiente:
          `\lstnewenvironment{mylstlisting}[1][]
          {\bigskip\hrule\nobreak\lstset{#1}}
          {\medskip}`
          Attento che, per motivi dipendenti da come agisce listings, è possibile che il primo filetto venga staccato dalla didascalia. Se dovesse succedere, puoi correggere scrivendo \pagebreak prima del codice. Meglio \pagebreak di \newpage, che tronca la pagina, il primo invece la riempie.

          Ciao
          Enrico

        • #731
          Up
          0
          Down
          ::


          Ciao! grazie mille per la risposta!

          effettivamente funziona bene.

          Solo che non capisco bene perché…

          solo se avete tempo e voglia di spiegarlo…se no lo uso e basta =p

          il comando \nobreak a cosa serve?

          cos’é un ambiente? come lo uso?

        • #732
          Up
          0
          Down
          ::

          Ciao! grazie mille per la risposta!

          effettivamente funziona bene.

          Solo che non capisco bene perché…

          solo se avete tempo e voglia di spiegarlo…se no lo uso e basta =p

          Il comando \hrule, dato in modo verticale (cioè tra un capoverso e un altro) produce un filetto orizzontale largo quanto la giustezza corrente. Non lo troverai nel manuale di LaTeX, fa parte dei trucchi del mestiere. 🙂

          il comando \nobreak a cosa serve?

          Dovrebbe servire, in questo caso, a fare in modo che TeX non veda un buon posto dove cambiare pagina subito dopo il filetto. Potrebbe non funzionare, dipende da come listings gestisce la composizione; sarebbe troppo lungo andare a vedere tutto ciò che fa; perciò lasciamo \nobreak e speriamo che faccia il suo compito. Se non dovesse andare, la soluzione che ti ho proposto ti permette di correggere facilmente (quando il documento è in forma definitiva per quanto riguarda il testo, sia chiaro) eventuali cambi pagina scorretti.

          cos’é un ambiente? come lo uso?

          Scusa? Usi LaTeX e non sai che cos’è un ambiente? Mai scritto \begin{enumerate} o roba del genere?

          Con la seconda definizione puoi scrivere il tuo codice direttamente nel documento LaTeX:
          `\begin{mylstlisting}
          main { …
          }

          \end{mylstlisting}`
          La definizione data assicura che il risultato sia lo stesso che ottieni con il comando \mylstinputlisting.

          Ciao
          Enrico

        • #733
          Up
          0
          Down
          ::


          aah! si so cos’é un ambiente 😛 bastava dirlo, non mi é venuto in mente…

          comunque sono principiante in LaTeX, quindi spero di essere scusata..

          adesso é tutto chiaro!

          Grazie mille per tutte le spiegazioni Enrico!

        • #734
          Up
          0
          Down
          ::


          Ciao! ritorno sul problema….

          ho un testo LaTex :

          `\chapter{Code de l'exemple Complet C}
          \label{ch:CodeDeLExempleYS}

          \pagebreak
          \section{Exemple complet C – main.c}
          \mylstinputlisting[]{code/ExCompletC/main.c}

          \pagebreak
          \section{Exemple complet C – callbacks.h}
          \mylstinputlisting[]{code/ExCompletC/callbacks.h}`

          Il primo \pagebreak sono obbligata a metterlo se no da 125 errori!! e questo solo perché il primo file del capitolo é su sue pagine…se metto un codice che sta sulla prima pagina tutto funziona..

          Strano perché tutti i file che metto dopo li taglia correttamente, senza dare errori….

          Per me é un po’ un problema perché devo mettere dei codici C in annesso al mio documento. E facendo in questo modo ho il titolo del capitolo da solo su una prima pagina e i codici iniziano solo dopo…

          Sarebbe meglio se riuscissi a togliere l’errore e far iniziare il primo codice sulla pagina del capitolo….

          Avete un’idea????

          p.s. mylstinputlisting vedi questo topic “egreg9”, Sab Nov 22, 2008 6:39 pm

        • #735
          Up
          0
          Down
          ::

          Ciao! ritorno sul problema….

          ho un testo LaTex :

          `\chapter{Code de l'exemple Complet C}
          \label{ch:CodeDeLExempleYS}

          \pagebreak
          \section{Exemple complet C – main.c}
          \mylstinputlisting[]{code/ExCompletC/main.c}

          \pagebreak
          \section{Exemple complet C – callbacks.h}
          \mylstinputlisting[]{code/ExCompletC/callbacks.h}`

          Il primo \pagebreak sono obbligata a metterlo se no da 125 errori!! e questo solo perché il primo file del capitolo é su sue pagine…se metto un codice che sta sulla prima pagina tutto funziona..

          Strano perché tutti i file che metto dopo li taglia correttamente, senza dare errori….

          Per me é un po’ un problema perché devo mettere dei codici C in annesso al mio documento. E facendo in questo modo ho il titolo del capitolo da solo su una prima pagina e i codici iniziano solo dopo…

          Sarebbe meglio se riuscissi a togliere l’errore e far iniziare il primo codice sulla pagina del capitolo….

          Avete un’idea????

          p.s. mylstinputlisting vedi questo topic “egreg9”, Sab Nov 22, 2008 6:39 pm

          Se provo senza \pagebreak non ottengo alcun errore, con un file di codice che non sta in una pagina. Magari se provi a riportare almeno uno di quei 125 errori…

          Ciao
          Enrico

        • #736
          Up
          0
          Down
          ::


          Il primo é

          `Incomplete \ifffalse; all text was ignored after line 39.

          \fi
          1.39 glade_xml_signal_autoconnect(xml);`

          Il secondo é identico
          con l’aggiunta di:
          `
          Runaway text?
          \newlabel{ch\global \let `
          il terzo é :
          `!Forbidded control sequence found while scanning of \write.

          }`

          après il fait des :
          Missing …

          La linea 39 dell’errore é la linea dove taglia il file main.c.

          Ma non ci capisco un tubo degli errori di LateX…..

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

      Go to top