Overleaf tilbyder en integration med knitr, som giver dig mulighed for at tilføje R-kode til dit LaTeX-dokument for at generere dynamisk output.Dokumenter, der indeholder R-kode, skal gemmes med filtypenavnet .Rtex eller .Rnw, ellers virker koden ikke. Lad os se 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}
Åbn dette knitr-eksempel i OverleafSom du kan se, er teksten mellem tegnene <<>>= og @ R-kode. Denne kode og dens output udskrives i et listing-lignende format. Denne kodeblok kan tage nogle ekstra parametre for at tilpasse det dynamiske output, som beskrevet i næste afsnit.
En kodeblok som den, der blev vist i forrige afsnit, kaldes normalt en chunk. Du kan angive nogle ekstra indstillinger 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=FALSE Dette skjuler koden og udskriver kun det output, der genereres af R.
cache=TRUE Hvis cache er sat til true, køres chunken ikke; kun de objekter, den genererer, bruges. Det sparer tid, hvis dataene i chunken ikke er ændret.
Bemærk, at indstillingen cache=TRUE i øjeblikket ikke understøttes i Overleaf, men den bør virke lokalt.
Det er muligt at tilgå objekter, der er genereret i en chunk, og udskrive dem inline.
\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}
Åbn dette knitr-eksempel i OverleafKommandoen \Sexpr{mean(X)} udskriver det output, der returneres af R-koden mean(X). Inden for klammerne kan enhver R-kommando angives.
Åbn dette knitr-eksempel i OverleafDette histogram bruger data, der er gemt i “data.txt” i den aktuelle arbejdsmappe. Der gives nogle figurrelaterede indstillinger til chunken.plot1 Dette er den etiket, der bruges til at referere til plottet. Præfikset “fig:” er obligatorisk. Du kan se i eksemplet, at figuren refereres med \ref{fig:plot1}. fig.pos="t" Placeringsparameter. Den er den samme som i figure-miljøet. fig.height=4, fig.width=4 Figurens bredde og højde. fig.cap="First plot" Billedtekst til figuren.
Du kan importere dele af et eksternt R-script i et knitr-dokument. Det er meget nyttigt, da det er ret almindeligt at skrive og fejlfinde scriptet i et eksternt program, før det inkluderes i dokumentet.Antag, at vi har følgende R-kode i en fil kaldet mycode.R, som vi inkluderer i vores LaTeX-dokument:
## ---- myrcode1# Create a sequence of numbers X = 2:10## ---- myrcode2# Display basic statistical measuressummary(X)
Bemærk linjerne:
## ---- myrcode1
og
## ---- myrcode2
Disse markerer begyndelsen af en chunk og er obligatoriske, hvis du vil bruge scriptet i dokumentet, som vist i følgende kodeudsnit:
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 chunk udskrives ikke og bruges kun til at importere scriptet med kommandoen read_chunk("mycode.R"). Derfor er indstillingen echo=FALSE sat. Derudover må scripts ikke caches. Når scriptet er importeret, kan du udskrive en chunk ved hjælp af den etiket, du har angivet efter ## ----. I dette tilfælde er det myrcode2.Vi har samlet alle kodeudsnittene fra artiklen i et projekt, som du kan åbne i Overleaf.