ฉันจะใส่บทสรุปสำหรับผู้บริหารก่อน TOC โดยใช้ bookdown ได้อย่างไร?

Jan 15 2021

ฉันมีbookdownโครงการกับที่กำหนดเองและกำหนดเองtemplate.tex my-format.clsฉันสามารถทำสิ่งต่างๆดังต่อไปนี้ในtemplate.tex:

$if(abstract)$
\begin{abstract}
$abstract$
\end{abstract}
$endif$

\tableofcontents

\begin{body}
...

และรับบทคัดย่อเพื่อจัดรูปแบบที่กำหนดเองของฉัน ส่วนหนึ่งทำงานได้เนื่องจากเนื้อหาของบทคัดย่อเป็นเพียงย่อหน้าเดียวของข้อความซึ่งสามารถวางไว้ในเนื้อหาส่วนหน้าของ YAML

แต่ก็เป็นไปได้ที่จะมีบทสรุปผู้บริหารก่อนสารบัญ ?

ฉันรู้ว่าฉันสามารถใช้ (ในตัวฉันindex.Rmd)


# Executive Summary {-}

a summary here

# Introduction

this is the first numbered section

แต่ในกรณีนั้นแม้ว่าส่วนหัว "บทสรุปสำหรับผู้บริหาร" จะไม่ได้ระบุหมายเลขไว้ แต่จะปรากฏอยู่หลัง TOC เป็นไปได้หรือไม่ที่จะแก้ไขสิ่งtemplate.texนั้นโดยใช้สิ่งต่างๆเช่น:

$if(abstract)$
\begin{abstract}
$abstract$
\end{abstract}
$endif$

$if(executive_summary)$
\begin{executivesummary}
% insert summary content here
\end{executivesummary}
$endif$

\tableofcontents

\begin{body}
...

ฉันสามารถลอกเนื้อหาออก (รวมถึงตัวเลข / ตาราง / ฯลฯ ) จากส่วนสรุปสำหรับผู้บริหารที่ไม่มีตัวเลข (แม้ว่าจะต้องมาจาก.Rmdไฟล์อื่นก็ตาม) และกำหนดให้กับตัวแปร (pandoc) บางตัวที่สามารถอ้างอิงแทน% If I insert summary content hereด้านบนได้หรือไม่ ฉันต้องการให้นำเนื้อหาเดียวกันนี้ออกจาก$body$ตัวแปรที่กำหนดเริ่มต้น (pandoc)

คำตอบ

2 MattPollock Jan 15 2021 at 23:32

ขอบคุณ @tarleb! ฉันสงสัยว่าฉันจะได้รับสิ่งที่ต้องการผ่านตัวกรอง Lua แต่ฉันคิดว่าฉันพบวิธีที่ง่ายกว่าสำหรับคำตอบของคุณhttps://stackoverflow.com/a/53885034/1785752

ในindex.RmdYAML ฉันเพิ่ม

executivesummary: |
  
    ```{r, echo=FALSE, results='asis'}
    res <- knitr::knit_child(quiet = TRUE, 'executive-summary.Rmd')
    cat(res, sep = '\n')
    ```

สิ่งนี้ต้องการบางสิ่ง:

  • สภาพแวดล้อม "แรเงา" ถูกกำหนดไว้ในคำนำหน้า template.tex
$if(highlighting-macros)$
$highlighting-macros$
$endif$
  • ที่executive-summary.Rmdกำหนดไว้และไม่มี YAML และไม่มีส่วนหัวระดับ 1 (ส่วนหัว "Executive Summary" มาจากไฟล์ template / class)

ที่น่าสนใจคือฉันสามารถใส่เนื้อหาในexecutivesummaryส่วน YAML ได้ (เช่นข้ามการแสดงผลเอกสารย่อย) แต่ตัวเลือกกลุ่มโค้ดที่รวมสตริงบางครั้งจะถูกแยกวิเคราะห์เป็นคีย์ YAML ในกรณีนี้ซึ่งทำให้การเรนเดอร์ล้มเหลว นอกจากนี้โค้ดที่เยื้อง 2 ช่องว่างจะไม่ได้รับความช่วยเหลือ IDE สำหรับการตรวจสอบไวยากรณ์หรือการเติมข้อความอัตโนมัติ