Inserire comandi di R in LaTeX

  • Creatore
    Topic
  • #108001
    Mic
      Up
      0
      Down
      ::


      Ciao a tutti,

      sto scrivendo un documento in cui ho bisogno di inserire dei comandi di R all’interno del testo, in modo che si riconosca che sono appunto comandi di R..
      Per esempio, vorrei inserire la frase:

      “…il comando che ho utilizzato per inserire i dati è

      > dati <- read.table("Dati.txt", header=T) in cui header significa..." So che il font è cambria, e ho trovato questo comando: \begingroup \fontfamily{cambria}\selectfont > dati <- read.table("Dati_1.txt", header=T) \endgroup tuttavia il risultato non somiglia affatto a quello che si vede solitamente sui libri di R..in più riconosce l'underscore come se fosse un pedice.. Sapreste darmi qualche consiglio a riguardo? Grazie mille in anticipo!

    Visualizzazione 10 filoni di risposte
    • Autore
      Risposte
      • #108002
        robitex
        Amministratore del forum
          Up
          0
          Down
          ::

          Fischer” post=108127Ciao a tutti,

          sto scrivendo un documento in cui ho bisogno di inserire dei comandi di R all’interno del testo, in modo che si riconosca che sono appunto comandi di R..
          Per esempio, vorrei inserire la frase:

          “…il comando che ho utilizzato per inserire i dati è

          > dati <- read.table("Dati.txt", header=T) in cui header significa..." So che il font è cambria, e ho trovato questo comando: \begingroup \fontfamily{cambria}\selectfont > dati <- read.table("Dati_1.txt", header=T) \endgroup tuttavia il risultato non somiglia affatto a quello che si vede solitamente sui libri di R..in più riconosce l'underscore come se fosse un pedice.. Sapreste darmi qualche consiglio a riguardo? Grazie mille in anticipo!

          Cerca testo verbatim..
          Bye

        • #108003
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            Usa il pacchetto listings; leggine la documentazione da terminale con il comando texdoc listings, perché da un lato non è necessario usare i font cambria per replicare lo stile di un documento probabilmente scritto con Word, ma è necessario usare uno stile di colorazione dei comandi, e la scelta della serie e della forma (conservando almeno la collezione dei font che usi per l’intero documento) di font che usi per il codice R impostando uno stile che rispetti le convenzioni normalmente usate nei manuali di R.
            Infatti, a parte il cambria che non è obbligatorio, se read.table è un comando potrebbe richiedere il neretto; se Dati.txt è un argomento del comando, potrebbe richiedere il corsivo; se header è una parola chiave, potrebbe richiedere il sans serif; se T è un valore assegnabile alla parola chiave potrebbe volere il typewriter. Insomma LaTeX consente di descrivere i codici di programmazione di qualunque linguaggio in modo molto più espressivo, che non con la scelta di un particolare font, come il cambria, o qualunque altro font.

          • #108004
            Mic
              Up
              0
              Down
              ::


              Grazie per le dritte!

              Ho provato a leggere il manuale del pacchetto..ma sinceramente non ci ho capito nulla! 😛 😳
              Forse sono troppo alle prime armi e ci sono troppe opzioni..a me basterebbe semplicemente scrivere in modo che si distinguano i comandi dal resto del testo, come per esempio:
              http://www.statmethods.net/stats/anova.html
              https://www.r-bloggers.com/one-way-analysis-of-variance-anova/
              oppure http://www.dmi.units.it/~borelli/anova/anovamultcomp.pdf

              Quello che dici tu è molto corretto e sarebbe molto carino da fare, ma sinceramente non saprei davvero da che parte cominciare…:oops:

            • #108005
              Massimiliano
              Partecipante
                Up
                0
                Down
                ::


                Ciao Fischer,

                se ho capito bene tu hai bisogno di creare un riquadro all’interno del quale racchiudere un codice R.
                Prova ad inserire nel preambolo:
                `
                \usepackage{listings}
                \lstset{
                language=R
                }
                `

                e poi nel documento:
                `
                \begin{lstlisting}
                > dati <- read.table("Dati_1.txt", header=T) \end{lstlisting} ` vedi se produce l'effetto che desideri.

              • #108006
                Mic
                  Up
                  0
                  Down
                  ::


                  Grazie! Il comando funziona, cosi riesco effettivamente a distinguere le due parti!
                  ..avrei però a questo punto altre due domandine..:P
                  1. Perchè allinea il testo di R a destra? come potrei fare per allinearlo a sinistra?
                  2. Come posso fare per scrivere un comando di R direttamente nel testo? per esempio: “..per caricare i dati ho usato il comando read.table, grazie al quale…”

                  Grazie grazie ancora per tutte le vostre risposte!

                • #108007
                  Up
                  0
                  Down
                  ::


                  Per la seconda domanda, basta usare [tt]\lstinline!var i:integer;![/tt] dove gli esclamativi sono solo dei delimitatori del comando. Puoi cambiarli con i segni che più ti sono congeniali.
                  Per la prima domanda ora guardo.

                • #108008
                  Massimiliano
                  Partecipante
                    Up
                    0
                    Down
                    ::


                    Per l’allineamento usa:
                    `
                    \usepackage{listings}
                    \lstset{
                    language=R,
                    columns=[lettera]fixed % lettera = l (sinistra), r (destra), c (centrato)
                    % il secondo termine regola lo spazio fra i termini (se non ho capito male), fixed=0.6pt mentre flexible=0.45pt (più vicini)
                    }
                    `

                  • #108009
                    Up
                    0
                    Down
                    ::


                    Prova a vedere se con [tt]\lstset{columns=[l]}[/tt] ottieni il risultato voluto, ovviamente al posto di alignment devi impostare una tra le opzioni:
                    fixed, flexible, spaceflexible, o fullflexible; come indicato a pag 38 paragrafo 5.1. Non ho la certezza perché non ho mai avuto modo di usare questo pacchetto.

                  • #108010
                    Up
                    0
                    Down
                    ::


                    Per ottenere il testo delle stringhe in carattere macchina da scrivere, ti suggerisco di modificare [tt]\lstset{…}[/tt]

                    `\lstset{language=R,stringstyle=\ttfamily}`

                  • #108011
                    Up
                    0
                    Down
                    ::


                    Ciao, avrei lo stesso problema da affrontare ed ho seguito quanto hai scritto. Solo che alla compilazione mi dà errore. Di seguito il codice

                    Preambolo…
                    ….
                    \usepackage{listings}
                    \lstset{
                    language=R,
                    stringstyle=\ttfamily
                    }

                    Documento…
                    \begin{lstlisting}
                    > str(mydata)
                    Classes ‘tbl_df’, ‘tbl’ and ‘data.frame’: 143 obs. of 16 variables:
                    $ ragione sociale : chr “BARCELLA ELETTROFORNITURE S.P.A.” “ITAP S.P.A.” “SIRIUS S.P.A.” “SPEA S.P.A.” …
                    $ regione : chr “Lombardia” “Lombardia” “Lombardia” “Piemonte” …
                    $ settore : chr “Wholesale” “Manufacturing” “Manufacturing” “Manufacturing” …
                    $ totale attivo : num 80537 95972 79136 79589 49692 …
                    $ patrimonio netto : num 59924 70887 53834 51879 33967 …
                    $ utile : num 0 0 10455 0 21395 …
                    $ debito : num 18485 24334 18946 19354 12214 …
                    $ capitale circolante netto: num 55362 61932 50730 53465 27922 …
                    $ EBIT : num 1531 13674 5038 13225 8057 …
                    $ fatturato : num 92729 96887 86056 80397 88849 …
                    $ X1 : num 0.687 0.645 0.641 0.672 0.562 …
                    $ X2 : num 0 0 0.132 0 0.431 …
                    $ X3 : num 0.019 0.1425 0.0637 0.1662 0.1621 …
                    $ X4 : num 3.24 2.91 2.84 2.68 2.78 …
                    $ X5 : num 1.15 1.01 1.09 1.01 1.79 …
                    $ default : Factor w/ 2 levels “No”,”Si”: 1 1 1 1 1 1 1 1 1 1 …
                    \end{lstlisting}

                    Errori…
                    ! Package inputenc Error: Invalid UTF-8 byte sequence.See the inputenc package documentation for explanation.Type H for immediate help…. Classes ‘tbl_
                    ! Package inputenc Error: Invalid UTF-8 byte 152.See the inputenc package documentation for explanation.Type H
                    for immediate help…. Classes ‘tbl_

                  • #108012
                    OldClaudio
                    Partecipante
                      Up
                      0
                      Down
                      ::


                      Leggi la docomentazione di listings; senza particolari impostazioni lavora bene solo con caratteri ASCII, in particolare non accetta caratteri accentati; però la documentazione spiega come usarne un piccolo sott’insieme.

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

                  Go to top