最小的自编译到.pdf Rmarkdown文件

时间:2018-05-21 22:36:06

标签: linux r-markdown

我需要编写一个简单的rmarkdown文件,其中包含文本,代码以及生成的PDF文件中包含的已执行代码的结果。我希望如果源文件是可执行的并且自我支持,则不需要makefile。

这是我能够取得的最好成绩,而且远非好处:

#!/usr/bin/env Rscript


library(knitr)
pandoc('hw_ch4.rmd', format='latex')


# TODO: how to NOT print the above commands to the resulting .pdf?
# TODO: how to avoid putting everyting from here on in ""s?
# TODO: how to avoid mentioning the file name above?
# TODO: how to render special symbols, such as tilde, miu, sigma?
#     Unicode character (U+3BC) not set up for use with LaTeX.
#     See the inputenc package documentation for explanation.

# nano hw_ch4.rmd  && ./hw_ch4.rmd && evince hw_ch4.pdf

"
4E1. In the model definition below, which line is the likelihood?
A: y_i is the likelihood, based on the expectation and deviation.


4M1. For the model definition below, simulate observed heights from the prior (not the posterior).
A:
```{r}
points <- 10
rnorm(points, mean=rnorm(points, 0, 10), sd=runif(points, 0, 10))
```


4M3. Translate the map model formula below into a mathematical model definition.
A:
```{r}
flist <- alist(
y tilda dnorm( mu , sigma ),
miu tilda dnorm( 0 , 10 ),
sigma tilda dunif( 0 , 10 )
)
```
"

结果:

enter image description here

1 个答案:

答案 0 :(得分:0)

我最终使用的是以下标头。起初听起来很整洁,但后来我意识到了

+ is indeed easy to compile in one step
- this is code duplication
- mixing executable script and presentation data in one file is a security risk.

代码:

#!/usr/bin/env Rscript


#<!---
library(rmarkdown)
argv <- commandArgs(trailingOnly=FALSE)
fname <- sub("--file=", "", argv[grep("--file=", argv)])
render(fname, output_format="pdf_document")
quit(status=0)
#-->


---
title:
author: 
date: "compiled on: `r Sys.time()`"
---

quit()行应确保将文件的其余部分视为数据。 <!----->注释用于将可执行代码呈现为数据解释中的注释。反过来,它们被#隐藏在外壳中。