Overleaf erbjuder en integration med knitr, som låter dig lägga till R-kod i ditt LaTeX-dokument för att generera dynamiskt utdata.Dokument som innehåller R-kod måste sparas med filändelsen .Rtex eller .Rnw, annars fungerar inte koden. Låt oss titta på ett exempel:
\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}
Öppna detta knitr-exempel i OverleafSom du ser är texten mellan tecknen <<>>= och @ R-kod. Koden och dess utdata skrivs ut i ett listningsliknande format. Det här kodstycket kan ta emot några extra parametrar för att anpassa det dynamiska utdatat, som beskrivs i nästa avsnitt.
Ett kodblock som det i föregående avsnitt kallas vanligtvis för en chunk. Du kan ange några extra alternativ i knitr-chunks. Se exemplet nedan:
\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 Döljer koden och skriver bara ut det utdata som R genererar.
cache=TRUE Om cache är satt till true körs inte chunken, utan endast de objekt som den genererar används. Det sparar tid om datan i chunken inte har ändrats.
Observera att alternativet cache=TRUE för närvarande inte stöds i Overleaf, men det bör fungera lokalt.
Det går att komma åt objekt som genereras i en chunk och skriva ut dem direkt i texten.
\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}
Öppna detta knitr-exempel i OverleafKommandot \Sexpr{mean(X)} skriver ut det utdata som returneras av R-koden mean(X). Inom klamrarna kan valfritt R-kommando anges.
Öppna detta knitr-exempel i OverleafDet här histogrammet använder data som lagras i “data.txt”, som är sparad i den aktuella arbetskatalogen. Några figurrelaterade alternativ skickas till chunken.plot1 Detta är etiketten som används för att referera till diagrammet. Prefixet “fig:” är obligatoriskt. I exemplet ser du att figuren refereras med \ref{fig:plot1}. fig.pos="t" är positioneringsparametern. Den är densamma som används i figure-miljön. fig.height=4, fig.width=4 Figurens bredd och höjd. fig.cap="First plot" Figurens bildtext.
Du kan importera delar av ett externt R-skript till ett knitr-dokument. Det är mycket användbart, eftersom det är ganska vanligt att skriva och felsöka skriptet i ett externt program innan det inkluderas i dokumentet.Anta att vi har följande R-kod i en fil som heter mycode.R, som vi inkluderar i vårt LaTeX-dokument:
## ---- myrcode1# Create a sequence of numbers X = 2:10## ---- myrcode2# Display basic statistical measuressummary(X)
Lägg märke till raderna:
## ---- myrcode1
och
## ---- myrcode2
Dessa markerar början på en kodchunk och är obligatoriska om du vill använda skriptet i dokumentet, som visas i följande kodfragment:
The chunk below will not be printed<<echo=FALSE, cache=FALSE>>=read_chunk("mycode.R")@The code must show up here<<myrcode2>>=@
Den första chunken skrivs inte ut och används bara för att importera skriptet med kommandot read_chunk("mycode.R"). Därför är alternativet echo=FALSE satt. Skript får inte heller cachas. När skriptet har importerats kan du skriva ut en chunk med hjälp av etiketten du angav efter ## ----. I det här fallet är det myrcode2.Vi har samlat alla kodfragment från artikeln i ett projekt som du kan öppna i Overleaf.