扩展名为.Rnw(Rtex)的文件就是包含了R代码的LaTeX文档。编译的时候,先用Rscript调用Knitr处理,生成.TeX文档,然后用pdfLaTeX/XeLaTeX编译成PDF。
最方便的编译.Rnw文档的工具是使用RStudio!(TeXStudio/SublimeText/VSC都比较慢),TeXStudio(2.12.16)最适合编写.Rnw文档
谢益辉为LyX制作了可用Knitr的模板,使用也十分方便。
Knitr
主页:https://yihui.name/knitr/
Knitr
示例:https://yihui.name/knitr/demos/
编辑器配置:https://yihui.name/knitr/demo/editors/
下面结合一些工具说明Knitr的使用方法。在TeXStudio/ST/VSC中编辑,在RStudio编译!
install.packages('knitr')
<<>>=
plot(rnorm(100),type='l')
@
保存文件为test.rnw。扩展名必须为.rnw!RStudio的优点:方便的编译环境;R代码自动提示;样式比较漂亮。
不足:没有LaTeX自动补全、提示。
上面步骤1、2是必须的。
Knitr:Knitr
,命令为Rscript -e "library(knitr); knit('%.Rnw')"|xelatex -synctex=1 -shell-escape -interaction=nonstopmode %.tex | txs:///view-pdf
Rscript -e "library(knitr); knit('%.Rnw')" | txs:///xelatex | txs:///xelatex | txs:///view-pdf
Rscript -e "library(knitr); knit('%.Rnw')"|xelatex %.tex |bibtex %|xelatex -synctex=1 -shell-escape -interaction=nonstopmode %.tex | txs:///view-pdf
Rscript -e "library(knitr); knit('%.Rnw')" | txs:///xelatex | txs:///bibtex | txs:///xelatex | txs:///view-pdf
TeXStudio(2.12.16)的优点:方便的编译环击;LaTeX提示、自动补全;样式比较漂亮。
不足:没有R代码自动提示补全。感觉是最好的.Rnw的编辑/译器
编译问题
设置后,编译总是先调用pdflatex,然后才是rscript??
如果用knit2pdf
替换knit
,XeLaTeX编译时总提示:"tlmgr search --file --global “/article.cls”,然后寻找文件或安装(导致速度慢)。
TeXStudio的配色:https://tex.stackexchange.com/questions/108315/how-can-i-set-a-dark-theme-in-texstudio
TeXStudio的配置文件为\config\teXStudio.ini
,配色部分位于[formats]
段
使用配色
user-default.txsprofile
custom-dark1.txsprofile
custom-dark1.txsprofile
,并找到[formats]
段(在最后),会看到[formats]
version=1.0
custom-dark1.txsprofile
,确定。teXstudio.ini
后的[formats]
段。Knitr
插件(以及R-box, senttextplus, latexing/latextools)能识别.Rnw的样式。
“set syntax:latexing(knitr)” 或 latex后,按LaTeX/R文档处理,有自动完成、提示。
LaTeX workshop 8.4.2增加了.rnw
格式的支持,ctrl+shift+p
“change language mode”中选R Sweave
(也支持R markdown)。
settings.json的对应位置添加如下设置:
"latex-workshop.latex.recipes": [
{
"name": "Knitr",
"tools": [
"Rscript",
"xelatex"
]
},
{
"name": "Knitr (biblatex)",
"tools": [
"Rscript",
"xelatex",
"biblatex",
"xelatex"
]
}
],
"latex-workshop.latex.tools":[
{
"name": "Rscript",
"command": "Rscript",
"args": [
"-e",
"library(knitr); knit('%DOC%')",
],
"env": {}
}
],
%DOC%
应该只是文件名,%DOCFILE%
才是带扩展名的全名!但此处的调用中,%DOC%
是全名。
直接使用模板即可。
以前常用LyX,后来发现还是不用这种可视化的比较好些,现在基本使用VS code编辑LaTeX。
%最小的例子实现Latex-Knitr
%在Rstudio中,新建Rsweave文件并保存为.rnw
%complile PDF
% https://texblog.org/2013/08/20/rknitr-automatic-bibliography-generation-with-biblatex-in-rstudio/
\documentclass{article}
\usepackage{hyperref}
\usepackage[backend=bibtex, sorting=none]{biblatex}
\bibliography{references}
\begin{filecontents*}{references.bib}
@Manual{knitr2013,
title = {knitr: A general-purpose package for dynamic report
generation in R},
author = {Yihui Xie},
year = {2013},
note = {R package version 1.4.1},
url = {http://yihui.name/knitr/},
}
\end{filecontents*}
\begin{document}
\section*{Automatic biblatex bibliography generation in RStudio using knitr}
<<setup, include=FALSE, cache=FALSE, echo=FALSE>>=
opts_chunk$set(fig.path='figures/plots-', fig.align='center', fig.show='hold', eval=TRUE, echo=TRUE)
options(replace.assign=TRUE,width=80)
Sys.setenv(TEXINPUTS=getwd(),
BIBINPUTS=getwd(),
BSTINPUTS=getwd())
@
<<sample-data-hist-and-box, out.width='0.48\\textwidth'>>=
sampleData <- rnorm(1000, 0,1)
hist(sampleData)
boxplot(sampleData)
@
This document was produced in RStudio using the knitr package \cite{knitr2013} by \url{http://texblog.org}.
\printbibliography
\end{document}