我正在制作一份包含一些情节的Rmd文件。它应该导出到otd和pdf。有些数字应该足够小,以便在得到的odt中将它们中的两个彼此相邻。
我通过
编织文档Rscript -e "require(knitr); require(markdown); knit('Test_Markdown.Rmd', 'Test_Markdown.md')"
在Rmd中有一个如下图:
```{r plottestnormal, fig.path = ".", fig.width = 6, fig.height = 6, dpi = 300, dev = "png", dev.args = list(type = "cairo")}
plot(1:10, 1:10)
```
我希望情节是一半大小 - 但缩放!
这会使大小正确,但不会缩放:
```{r plottestsmall, fig.path = ".", fig.width = 3, fig.height = 3, dpi = 600, dev = "png", dev.args = list(type = "cairo")}
plot(1:10, 1:10)
```
正如我从the opiton description所理解的那样,以下内容应该符合我的意思,但它不起作用。
```{r plottestscaled, fig.path = ".", fig.width = 6, fig.height = 6, out.width = 3, out.height = 3, dpi = 300, dev = "png", dev.args = list(type = "cairo")}
plot(1:10, 1:10)
```
这会在生成的* md文件中生成一个html img标记:
<img src=".plottestscaled-1.png" title="plot of chunk plottestscaled" alt="plot of chunk plottestscaled" width="3" height="3" />
使用
编译时,pdf和odt都没有显示pandoc -f markdown "Test_Markdown.md" -o "Test_Markdown.odt"
pandoc -t latex "Test_Markdown.md" -o "Test_Markdown.pdf"
我看到this issue对我没有帮助。
我错过了什么?
编辑:
感谢@Yihui,现在适用于LaTeX-&gt; pdf和(大概是未经测试的)html。
我是对的,out.width
或out.height
导出不支持*.odt
和*.docx
吗?
如果是,那可能是他们不适合我的原因?
如果不是,我怎样才能在*.odt
中获得相同的效果(缩放图)?
(我想导出到pdf
和odt
,所以任何解决方案最好同时覆盖(至少)这两个。)
这是一个完整的文档,通过rmarkdown::render("Test_Markdown.Rmd", "all")
处理我的问题。
---
title: Scale plot in Rmd
output:
pdf_document:
latex_engine: xelatex
odt_document:
keep_md: true
---
```{r plottestscaled, fig.path = "./", fig.width = 6, fig.height = 6, out.width = "3in", out.height = "3in", dpi = 300, dev = "png", dev.args = list(type = "cairo")}
plot(1:10, 1:10)
```
EDIT2:
到目前为止,我的“最佳”解决方案是,禁用odt
输出中的缩放并手动重新缩放办公室中的绘图。虽然不是很可重复......
```{r plottestscaled, fig.path = "./", fig.width = 6, fig.height = 6, out.width=switch(opts_knit$get("rmarkdown.pandoc.to"), latex = "3in", NULL), out.height=switch(opts_knit$get("rmarkdown.pandoc.to"), latex = "3in", NULL), dpi = 300, dev = "png", dev.args = list(type = "cairo")}
plot(1:10, 1:10)
答案 0 :(得分:1)
Pandoc的Markdown不支持在最新版本之前指定图像的大小,因此当您指定图的宽度时, knitr 必须回退到HTML和HTML代码不适用于LaTeX或ODT输出(仅支持本机Markdown代码,但LaTeX输出除外,其中也支持原始LaTeX代码。)
简短的回答是使用 rmarkdown 包而不是自己运行Pandoc。在生成具有width属性的数字时, knitr 将足够聪明以切换到LaTeX代码。或者甚至更好,只需单击RStudio IDE中的$(".Mask").each(function() {
var tempstr = this.innerText;
var replacestr = this.innerText.replace(/./g, "*");
$(this).mouseover(function() {
this.innerText = tempstr;
});
$(this).mouseout(function() {
var tempObj = this;
setTimeout(function() {
tempObj.innerText = replacestr;
}, 10000);
});
this.innerText = replacestr;
});
按钮。
你可以尝试在幕后找出所有技术细节(从knitr::hook_plot_md
开始),但如果你不熟悉 knitr 和 rmarkdown 在内部工作。