ปัญหาการจัดรูปแบบ html bookdown กับ gitbook และ split_by

Oct 10 2020

ฉันกำลังสร้างรายงาน gitbook ด้วย Rstudio แพ็คเกจการจอง

มันค่อนข้างง่ายในแง่ของรหัส 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ฉันเพิ่มที่จุดเริ่มต้นของไฟล์ rmd แต่ละไฟล์เพื่อสร้างรายงานในรูปแบบ 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 ไว้ที่นี่: จะเพิ่ม \ newpage ใน Rmarkdown ด้วยวิธีที่ชาญฉลาดได้อย่างไร?