使用LaTeX和KnitR自动生成报告
扩展名为.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编译!
使用RStudio
- 安装某个LaTeX发行版,如TeXLive(https://tug.org/texlive/acquire.html)
- 安装R(https://r-project.org),并安装KnitR包
install.packages('knitr')
- 安装RStudio Desktop(https://rstudio.com/)
- 启动RStudio,点击“Tools-Global setting: Sweave”:
- Wave Rnw files using "Knitr"
- Typeset LaTeX into PDF using "pdfLaTeX"(中文选用"XeLaTeX")
- 新建Rnw文件:“File-New File-R Sweave”,在文档区输入
<<>>=
plot(rnorm(100),type='l')
@
保存文件为test.rnw。扩展名必须为.rnw!
- 点击"Compile PDF",生成PDF文档。
RStudio的优点:方便的编译环境;R代码自动提示;样式比较漂亮。
不足:没有LaTeX自动补全、提示。
上面步骤1、2是必须的。
使用 TeXStudio
- "Options-Config-Build:user Commands"添加命令
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 - 文件扩展名必须为.rnw!
- "Tools - user:Knitr"编译文件(要定义快捷键!)。
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]段
使用配色
- 打开TeXStudio,"Options > Save profile",保存为
user-default.txsprofile - 再执行上面操作,保存为
custom-dark1.txsprofile - 打开
custom-dark1.txsprofile,并找到[formats]段(在最后),会看到[formats]
version=1.0
- 将其他的配色设置复制粘贴到其后,保存。
- TeXStudio中执行:"Options > Load profile",找到保存的
custom-dark1.txsprofile,确定。 - 关闭并重启TeXStudio,打开一个文件,就能看到配色生效。
PS:以前都是将配色设置复制到teXstudio.ini后的[formats]段。
使用Sublime Text 3
- 安装
Knitr插件(以及R-box, senttextplus, latexing/latextools) - 文件扩展名必须为.Rnw或.Rmd!(是大写的R)
能识别.Rnw的样式。
"set syntax:latexing(knitr)" 或 latex后,按LaTeX/R文档处理,有自动完成、提示。
VS code
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%,都是全名?vscode传递给xelatex的文件是"*.rnw.tex"
此处取文件名的变量${fileBasenameNoExtension}不能被识别!
使用LyX
直接使用模板即可。
以前常用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}
使用LaTeX和KnitR自动生成报告的更多相关文章
- C# 处理Word自动生成报告 四、程序处理
C# 处理Word自动生成报告 一.概述 C# 处理Word自动生成报告 二.数据源例子 C# 处理Word自动生成报告 三.设计模板 C# 处理Word自动生成报告 四.程序处理 现在说一下程序处理 ...
- C# 处理Word自动生成报告 三、设计模板
C# 处理Word自动生成报告 一.概述 C# 处理Word自动生成报告 二.数据源例子 C# 处理Word自动生成报告 三.设计模板 C# 处理Word自动生成报告 四.程序处理 既然是模板就少不了 ...
- jmeter自动生成报告
从JMeter 3.0开始已支持自动生成动态报告,我们可以更容易根据生成的报告来完成我们的性能测试报告. 如何生成html测试报告 如果未生成结果文件(.jtl),可运行如下命令生成报告: jmete ...
- C# 处理Word自动生成报告 一、概述
经常遇到这样的需求, 生成Word格式的报告, 而不是单纯的一张表格的报表. 就像体检报告一样. 数据来源部分决定采用一个存储过程返回Dataset的方式, 整张报告的数据来源于此Dataset的多 ...
- C# 处理Word自动生成报告 二、数据源例子
还是以学生.语文.数学.分数为例吧, 感觉这个和helloworld都有一拼了. 造一张表如下, 整张报表就围绕这个表转圈了, 顺便说下就是名字如有雷同纯属巧合 新建个存储过程 ALTER PROCE ...
- 把时间还给洞察,且看PPT调研报告自动生成攻略
文/JSong @2017.02.28 在数据分析里面有一句话是说,80%的时间要用于数据清洗和整理,而我觉得理想的状态应该是把更多的把时间花在数据背后的洞察当中.去年11月在简书占了个坑,说要自己写 ...
- 自动生成AWR报告
--自动生成AWR报告 -------------------2013/09/23 脚本代码: #!/bin/bash AWR_FORMAT=html NUM_DAYS=1 MAX_S ...
- Oracle 每天自动生成AWR报告
经验丰富的老员工希望能够每天为数据库生成1个AWR报告,以便于后期分析数据库的性能变化,手动生成太麻烦,查了一下资料,发现可以自动生成,过程如下. 数据库环境:11gR2 RAC(双节点) AWR报告 ...
- Word报告自动生成(例如 导出数据库结构)
将很早之前写的一个小组件重新整理优化一下,做成一个通用的功能.适用于导出数据库的结构(表.字段等)到Word或将体检数据自动生成Word版的体检报告等.代码:Github 一.主要需要完成功能: 1. ...
随机推荐
- Java动态修改运行环境
1.pom.xml直接添加一下配置 <profiles> <profile> <id>dev</id> <properties> <a ...
- 005-多线程-锁-JUC锁-LockSupport【使用、Unsafe、对比Object的wait、底层源码】
一.概述 在Java多线程中,当需要阻塞或者唤醒一个线程时,都会使用LockSupport工具类来完成相应的工作.LockSupport定义了一组公共静态方法,这些方法提供了最基本的线程阻塞和唤醒功能 ...
- 启动Spring boot报错:nested exception is java.sql.SQLException: Field 'id' doesn't have a default value
先看具体日志: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with n ...
- 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_08-vuejs研究-vuejs基础-v-if和v-for指令
1.2.4 v-if和v-for <!DOCTYPE html> <html lang="en"> <head> <meta charse ...
- 不能在jsp页面<c:choose>对标签中使用<!---->进行注释
jsp页面<c:choose>标签中使用<!---->进行注释,访问出现异常,如下: 标签范围:
- CSS 自适应技巧
DIV的内容垂直居中 不再MARGINT-TOP多少 来居中显示 display:table-cell; #block-1{ width:100%; height:80px; display:tabl ...
- python进阶-mock接口
setting.py MYSQL_HOST='192.168.127.139' PASSWORD=' PORT=3306 USER='root' DB='stu' tools.py import py ...
- EuRoc V203数据集的坑
EuRoc数据集时间戳问题 以前听别人说过V203序列有问题,今儿仔细看了才发现EuRoc的V203数据集中的左右相机 照片数量不相等,很僵硬,cam0存在大量丢帧,之前一直用单目数据,没什么感觉.. ...
- Unity动态批处理和静态批处理学习
本文转自:http://blog.csdn.net/lyh916/article/details/45725499,请点击链接查看楼主大神原文,尊重楼主版权. 参考链接:Unity圣典:http:// ...
- RestHighLevelClient 之 Scroll
ES中默认最大查询结果为10000,大于10000时查不出结果,报错超过最大值,如把 from调到大于10000. 针对这个问题,有两种解决办法. 第一种,修改 max_result_window 很 ...