【问题标题】:knitr/Rmd: page break after n lines/n distanceknitr/Rmd:n 行/n 距离后的分页符
【发布时间】:2013-04-16 22:36:22
【问题描述】:

让我提醒一下,这可能更适合作为 html/css 问题,但是 (a) 我对这些技术不太熟悉,并且 (b) 我想把它全部保留如果可能的话,家庭(R 家庭)。

我想使用knitr 使用 Rmarkdown 编写学术风格报告(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...
  • 我在询问 HTML 人员时发现了这一点,他们建议可以使用 java 作为计算每个 html 页面长度的中介来完成。我现在正在写一篇论文,主张需要这样做,当它完成时(它将在 html 中,但需要手动中断)我会建立原型,也许如果人们有兴趣,一个团队可以聚在一起接受挑战。
  • @TylerRinker 你是说javascript吗?注意java和javascript是不一样的。
  • 是的,我是这个意思。当我指的是 javascript 时,我总是说 java,因为我对术语/使用不熟悉。
  • @TylerRinker 我不追求徽章。我正在提高描述的易读性。

标签: r knitr r-markdown


【解决方案1】:

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

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

将您的降价处理成 HTML 元素。我有 5 个h1 标签,每个标签高 300 像素。

<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 像素高。只有 3 个 h1 标记适合此页面。我们需要在第三个元素之后插入分页符。

将每个新项目逐步添加到 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 页。
猜你喜欢
  • 1970-01-01
  • 2021-09-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-20
  • 1970-01-01
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
相关资源
最近更新 更多