knitr / Rmd:n行/ n距离后分页


69

请允许我说,这可能更适合作为html / css问题,但(a)我不太熟悉这些技术,并且(b)如果可能的话,我希望将其全部保留在家庭(R家族)中。

我想使用Rmarkdownknitr编写学术风格的报告(APA 6类型指南)。我已经解决了大部分问题,但没有分页。我可以手动设置分页符,例如:

# report

```{r setup, include=FALSE}
# set global chunk options
opts_chunk$set(cache=TRUE)
```
------
## Page 1

```{r plot1}
plot(1:10, 1:10)
```
------
## Page 2

在下面的.Rmd中,我想以编程方式设置n行/ n距离后的中断。所以说8英寸或140行之后。

# report

```{r setup, include=FALSE}
# set global chunk options
opts_chunk$set(cache=TRUE)
```
Initial Text. Yay!

```{r plot1}
plot(1:10, 1:10)
```

More Text.  Outstanding.  What Hadley's not calling it plyr2?

```{r plot2, fig.width=4, fig.height=4}
plot(1:10, 1:10)
```

`r paste(rep("So much text so little time!", 10000))`

如何以编程方式设置n个距离后的分页符。这类似于LaTeX将文件拆分为页面的方式,因此,如果图形占用太多空间,它将被迫移至下一页。

编辑从一个朋友那里找到了这个:http : //www.w3.org/TR/css3-page/ 可能会有所帮助。


我的猜测是解决方案不存在,但如果能解决,我会很高兴!听起来像是用HTML重塑LaTeX ...
Yihui Xie

2
我在询问HTML人员时发现了这一点,他们建议可以使用java作为中介来完成此工作,以计算每个html页面的长度。我现在正在写一篇论文,论证这样做的必要性和完成的时间(将是html格式,但需要手动进行休息),我将准备好原型,也许如果人们有兴趣,一个团队可以聚在一起接受挑战。
泰勒·林克

1
@TylerRinker您的意思是javascript吗?请注意,java和javascript是不同的。
戴森

1
是的,我确实是那个意思。因为我不熟悉术语/用法,所以我总是说Java时总是说Java。
泰勒·林克

@TylerRinker我不喜欢徽章。我正在改善说明的可读性。
麦坎德雷

Answers:


1

以编程方式。创建一个HTML div。将此div的宽度和高度设置为固定值,并滚动溢出。

<div style="height:1000px; width: 500px; overflow-y: scroll;">
    ...
</div>

将您的markdown处理为HTML元素。我有5个h1标签,每个标签的高度为300px。

<h1 style="height:300px;">First</h1>
<h1 style="height:300px;">Second</h1>
<h1 style="height:300px;">Third</h1>
<h1 style="height:300px;">Fourth</h1>
<h1 style="height:300px;">Fifth</h1>

这5个h1不会全部放在同一页面上。该页面只有1,000像素高。只有3h1此页面可容纳标签。我们需要在第三个元素之后插入一个分页符。

逐步将每个新项目添加到DOM中。插入每个项目后,检查浏览器的滚动条是否存在。如果是,那么我们知道刚插入的项目对于此页面来说太大了;删除该项目并插入一个分页符。

之前:

### First
### Second
### Third
### Fourth
### Fifth

后:

### First
### Second
### Third
------
### Fourth
### Fifth

这对任何元素都适用,您不必担心项目的高度。因为,如果您刚刚插入的项目使HTML div滚动,那么我们需要分页符。图片,视频,h1,h2,p,自定义/动态css等。

更新

您还可以计算每个div元素的高度。http://api.jquery.com/height/这样,重新计算54页的文档会容易得多。


这就是我目前正在做的事情,这需要手动“修复”我(以及那些赞成投票的人)正在寻找一种方法,以用Latex和pdf的方式来实现此目的。我的意思是我们可以在Latex中手动设置分页符,但可以(以一种相对聪明的方式)为您进行分页。话虽这么说,您提供的方法(我目前使用的方法)很差,因为假设您在54页纸的第3页上删除/添加了一个段落。这意味着随后的每一页都会生效。
泰勒·林克

“ ...太差了,因为假设您在54页纸的第3页上删除/添加了一个段落。这意味着随后的每一页都会生效。” -我使用更有效的解决方案更新了答案,但看不到做出更改后必须重新计算剩余X页的方法。
特拉维斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.