gitbook 및 split_by의 bookdown html 형식 문제

Oct 10 2020

Rstudio의 bookdown 패키지로 gitbook 보고서를 생성하고 있습니다.

기본 R 코드 측면에서 매우 간단합니다.

  1. 페이지 너비의 80 %로 텍스트 줄이기
  2. 이중 열 사용 및
  3. 표시된 R 코드에 줄 번호를 추가합니다.

split_by: rmd_output.yml 에 " "를 추가 한 경우를 제외하고는 모든 것이 잘 작동합니다 . 그렇게 할 때 결과 출력은 더 이상 텍스트 주위의 여백을 존중하지 않습니다.

아직 html에 대해 잘 모르지만 html 인스펙터를 살펴보면 " split_by: rmd"를 사용할 때 섹션이 내부 페이지 형식 밖에있는 것으로 나타났습니다.

기본값 (split_by 인수 없음) :

split_by : rmd 사용

이것은 코드를 공유 할 수없고 Yihui의 최소한의 북 다운 예제로 오류를 재현 할 수 없기 때문에 어둠 속에서 촬영 한 것입니다. 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 헤더 :

---
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 */

답변

1 GaelS Oct 12 2020 at 22:23

문제의 원인은 \newpage보고서를 pdf 형식으로 작성하기 위해 각 rmd 파일의 시작 부분에 추가 한 것입니다.

해결책 1 : 내 rmd 파일은 대부분 레벨 2 섹션에 해당하므로 로 변경 split_by: rmd했습니다 split_by: section.

솔루션 2 : \newpage출력이 html 일 때 평가되지 않도록 래퍼를 둘러싼 것입니다.

`r if (knitr::opts_knit$get('rmarkdown.pandoc.to') != "html") '
\\newpage
'`

솔루션 2에 대한 다른 접근 방식이 여기에 설명되어 있습니다. Rmarkdown에 \ newpage를 현명하게 추가하는 방법은 무엇입니까?