Overleaf tilbyr en integrasjon med knitr, som lar deg legge til R-kode i LaTeX-dokumentet ditt for å generere dynamisk utdata.Dokumenter som inneholder R-kode, må lagres med filtypen .Rtex eller .Rnw, ellers vil ikke koden fungere. La oss se på et eksempel:
\documentclass{article}\begin{document}You can type R commands in your \LaTeX{} document which will be processed and their output included in the document:<<>>=# Create a sequence of numbersX = 2:10# Display basic statistical measuressummary(X)@\end{document}
Åpne dette knitr-eksemplet i OverleafSom du ser, er teksten mellom tegnene <<>>= og @ R-kode. Denne koden og utdataene fra den skrives ut i et listing-lignende format. Denne kodebiten kan ta noen ekstra parametere for å tilpasse den dynamiske utdataen, som beskrevet i neste del.
En kodeblokk som den i forrige del kalles vanligvis en chunk. Du kan angi noen ekstra alternativer i knitr-chunks. Se eksemplet nedenfor:
\documentclass{article}\begin{document}You can type R commands in your \LaTeX{} document which will be processed and their output included in the document:<<echo=FALSE, cache=TRUE>>=# Create a sequence of numbersX = 2:10# Display basic statistical measuressummary(X)@\end{document}
echo=FALSEDette skjuler koden og skriver bare ut utdataene som R genererer.
cache=TRUEHvis cache er satt til true, kjøres ikke chunken, bare objektene den genererer brukes. Dette sparer tid hvis dataene i chunken ikke er endret.
Merk at alternativet cache=TRUE for øyeblikket ikke støttes i Overleaf, men det skal fungere lokalt.
Det er mulig å få tilgang til objekter generert i en chunk og skrive dem ut i teksten.
\documentclass{article}\begin{document}You can type R commands in your \LaTeX{} document which will be processed and their output included in the document:<<echo=FALSE, cache=TRUE>>=# Create a sequence of numbersX = 2:10# Display basic statistical measuressummary(X)@So, the mean of the data is $\Sexpr{mean(X)}$\end{document}
Åpne dette knitr-eksemplet i OverleafKommandoen \Sexpr{mean(X)} skriver ut resultatet som returneres av R-koden mean(X). Inne i klammeparentesene kan du sende inn en hvilken som helst R-kommando.
Åpne dette knitr-eksemplet i OverleafDette histogrammet bruker data lagret i “data.txt”, som ligger i gjeldende arbeidskatalog. Noen figurrelaterte alternativer sendes til chunken.plot1Dette er etiketten som brukes til å referere til plottet. Prefikset “fig:” er obligatorisk. Du ser i eksemplet at figuren refereres med \ref{fig:plot1}.fig.pos="t" plasseringsparameter. Dette er det samme som brukes i figure-miljøet.fig.height=4, fig.width=4Figurens bredde og høyde.fig.cap="First plot"Bildetekst for figuren.
Du kan importere deler av et eksternt R-skript til et knitr-dokument. Dette er svært nyttig, siden det er ganske vanlig å skrive og feilsøke skriptet i et eksternt program før det tas med i dokumentet.Anta at vi har følgende R-kode i en fil kalt mycode.R, som vi inkluderer i LaTeX-dokumentet vårt:
## ---- myrcode1# Create a sequence of numbers X = 2:10## ---- myrcode2# Display basic statistical measuressummary(X)
Legg merke til linjene:
## ---- myrcode1
og
## ---- myrcode2
Disse markerer begynnelsen på en kodebit og er obligatoriske hvis du vil bruke dette skriptet i dokumentet, som vist i følgende kodefragment:
The chunk below will not be printed<<echo=FALSE, cache=FALSE>>=read_chunk("mycode.R")@The code must show up here<<myrcode2>>=@
Den første chunken skrives ikke ut og brukes bare til å importere skriptet med kommandoen read_chunk("mycode.R"). Det er derfor alternativet echo=FALSE er satt. Skript må heller ikke mellomlagres. Når skriptet er importert, kan du skrive ut en chunk ved hjelp av etiketten du anga etter ## ----. I dette tilfellet er det myrcode2.Vi har samlet alle kodefragmentene fra artikkelen i et prosjekt som du kan åpne i Overleaf.