bookdown html gitbook 和 split_by 的格式问题
bookdown html formatting issue with gitbook and split_by
我正在使用 Rstudio bookdown 包生成 gitbook 报告。
就底层 R 代码而言,它相当简单,只是近期的一些调整:
- 将文本缩小到页面宽度的 80%
- 使用双列和
- 在显示的R代码中添加行号。
一切正常,除了我在 _output.yml 中添加“split_by: rmd
”。这样做时,生成的输出不再考虑文本周围的边距。
我对 html 还不是很了解,但是查看 html 检查器发现使用“split_by: rmd
默认(无 split_by 参数):
与split_by: rmd
这是在黑暗中拍摄的,因为我无法共享代码,而且我无法使用易汇的最小 bookdown 示例重现错误:https://github.com/rstudio/bookdown-demo。
非常欢迎任何能够识别错误来源或更好地提出解决方案的线索!
从 R 脚本构建本书:
bookdown::render_book(
input = "index.Rmd",
output_format = "bookdown::gitbook",
output_dir = paste0("gitbook-", format(Sys.time(), format = "%Y-%m-%d-%H%M%S"))
)
index.rmd YAML header:
---
title: "blahblah"
subtitle: "blahblahblah"
author: "DRAFT"
date: "August 2020"
documentclass: article
fontsize: 12pt
geometry: margin=2cm
link-citations: yes
#mainfont: Arial
bibliography: packages.bib
site: bookdown::bookdown_site
biblio-style: apalike
urlcolor: blue
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, eval = FALSE, attr.source='.numberLines')
table_format <- knitr::opts_knit$get('rmarkdown.pandoc.to')
if (table_format %in% c("html", "latex")) {
library(kableExtra)
knitr::opts_chunk$set(fig.pos='H', fig.align='center', out.width='80%')
}
## Automatically create a bib database for R packages
knitr::write_bib(c(.packages(), 'bookdown', 'knitr', 'rmarkdown', 'Hmisc'), 'packages.bib')
```
_output.yml:
bookdown::gitbook:
css: style.css
config:
toc:
before: |
<li><a href="./">My book title</a></li>
#after: |
# <li><a href="https://github.com/rstudio/bookdown" target="blank">Published with bookdown</a></li>
edit: null
download: null
sharing: null
info: null
split_bib: FALSE
split_by: rmd
style.css:
p.caption {
color: #777;
margin-top: 10px;
}
p code {
white-space: inherit;
}
pre {
word-break: normal;
word-wrap: normal;
}
pre code {
white-space: inherit;
}
/* watermark for draft report
.watermark {
opacity: 0.2;
position: fixed;
top: 45%;
left: 45%;
font-size: 500%;
color: #606099;
z-index: 1000000;
}
*/
.book .book-body .page-wrapper .page-inner {
max-width: 80% !important;
}
/* Increase space to display line number in R chunks correctly */
pre.numberSource code > span > a:first-child::before {
left: -0.3em;
}
/* for multi cols */
/*.cols {display: flex; } /* uncomment for flex column size */
.cols {display: grid; grid-template-columns: 30% 50% 20%;} /* for fixed column size */
我发现问题的根源是我在每个 rmd 文件的开头添加的 \newpage
以构建 pdf 格式的报告。
解决方案 1:将 split_by: rmd
更改为 split_by: section
,因为我的 rmd 文件主要对应于 2 级部分。
解决方案 2:在 \newpage
周围放置一个包装器,以便在输出为 html:
时不对它们求值
`r if (knitr::opts_knit$get('rmarkdown.pandoc.to') != "html") '
\newpage
'`
此处描述了解决方案 2 的其他方法:
How to add \newpage in Rmarkdown in a smart way?
我正在使用 Rstudio bookdown 包生成 gitbook 报告。
就底层 R 代码而言,它相当简单,只是近期的一些调整:
- 将文本缩小到页面宽度的 80%
- 使用双列和
- 在显示的R代码中添加行号。
一切正常,除了我在 _output.yml 中添加“split_by: rmd
”。这样做时,生成的输出不再考虑文本周围的边距。
我对 html 还不是很了解,但是查看 html 检查器发现使用“split_by: rmd
默认(无 split_by 参数):
与split_by: rmd
这是在黑暗中拍摄的,因为我无法共享代码,而且我无法使用易汇的最小 bookdown 示例重现错误:https://github.com/rstudio/bookdown-demo。
非常欢迎任何能够识别错误来源或更好地提出解决方案的线索!
从 R 脚本构建本书:
bookdown::render_book(
input = "index.Rmd",
output_format = "bookdown::gitbook",
output_dir = paste0("gitbook-", format(Sys.time(), format = "%Y-%m-%d-%H%M%S"))
)
index.rmd YAML header:
---
title: "blahblah"
subtitle: "blahblahblah"
author: "DRAFT"
date: "August 2020"
documentclass: article
fontsize: 12pt
geometry: margin=2cm
link-citations: yes
#mainfont: Arial
bibliography: packages.bib
site: bookdown::bookdown_site
biblio-style: apalike
urlcolor: blue
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, eval = FALSE, attr.source='.numberLines')
table_format <- knitr::opts_knit$get('rmarkdown.pandoc.to')
if (table_format %in% c("html", "latex")) {
library(kableExtra)
knitr::opts_chunk$set(fig.pos='H', fig.align='center', out.width='80%')
}
## Automatically create a bib database for R packages
knitr::write_bib(c(.packages(), 'bookdown', 'knitr', 'rmarkdown', 'Hmisc'), 'packages.bib')
```
_output.yml:
bookdown::gitbook:
css: style.css
config:
toc:
before: |
<li><a href="./">My book title</a></li>
#after: |
# <li><a href="https://github.com/rstudio/bookdown" target="blank">Published with bookdown</a></li>
edit: null
download: null
sharing: null
info: null
split_bib: FALSE
split_by: rmd
style.css:
p.caption {
color: #777;
margin-top: 10px;
}
p code {
white-space: inherit;
}
pre {
word-break: normal;
word-wrap: normal;
}
pre code {
white-space: inherit;
}
/* watermark for draft report
.watermark {
opacity: 0.2;
position: fixed;
top: 45%;
left: 45%;
font-size: 500%;
color: #606099;
z-index: 1000000;
}
*/
.book .book-body .page-wrapper .page-inner {
max-width: 80% !important;
}
/* Increase space to display line number in R chunks correctly */
pre.numberSource code > span > a:first-child::before {
left: -0.3em;
}
/* for multi cols */
/*.cols {display: flex; } /* uncomment for flex column size */
.cols {display: grid; grid-template-columns: 30% 50% 20%;} /* for fixed column size */
我发现问题的根源是我在每个 rmd 文件的开头添加的 \newpage
以构建 pdf 格式的报告。
解决方案 1:将 split_by: rmd
更改为 split_by: section
,因为我的 rmd 文件主要对应于 2 级部分。
解决方案 2:在 \newpage
周围放置一个包装器,以便在输出为 html:
`r if (knitr::opts_knit$get('rmarkdown.pandoc.to') != "html") '
\newpage
'`
此处描述了解决方案 2 的其他方法: How to add \newpage in Rmarkdown in a smart way?