Jak mogę umieścić podsumowanie wykonawcze przed spisem treści za pomocą bookdown?

Jan 15 2021

Mam bookdownprojekt na zamówienie template.texi na zamówienie my-format.cls. W moim template.tex:

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

\tableofcontents

\begin{body}
...

i pobierz streszczenie, aby wziąć moje niestandardowe formatowanie. Po części działa to dlatego, że treść streszczenia to tylko jeden akapit tekstu, który można umieścić w nagłówku YAML.

Czy jednak możliwe jest umieszczenie streszczenia przed spisem treści ?

Wiem, że mogę użyć (w moim index.Rmd)


# Executive Summary {-}

a summary here

# Introduction

this is the first numbered section

Ale w takim przypadku, mimo że nagłówek sekcji „Streszczenie” nie jest numerowany, pojawia się po spisie treści. Czy można zmodyfikować template.textaki, że używając czegoś takiego jak:

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

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

\tableofcontents

\begin{body}
...

Mogę pobrać zawartość (w tym ryciny / tabele / itp.) Z nienumerowanej sekcji podsumowania wykonawczego (nawet jeśli musi pochodzić z innego .Rmdpliku) i przypisać ją do jakiejś zmiennej (pandoc), do której można by się odwoływać zamiast % If I insert summary content herepowyższej? Chciałbym również usunąć tę samą zawartość z domyślnej przypisanej $body$zmiennej (pandoc) .

Odpowiedzi

2 MattPollock Jan 15 2021 at 23:32

Dzięki @tarleb! Podejrzewam, że mogłem dostać to, czego chcę, przez filtr Lua, ale myślę, że znalazłem łatwiejszą drogę zgodnie z twoją odpowiedziąhttps://stackoverflow.com/a/53885034/1785752

W index.RmdYAML dodałem

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

Wymaga to jednak kilku rzeczy:

  • Że „zacienione” środowisko jest zdefiniowane w preambule template.tex
$if(highlighting-macros)$
$highlighting-macros$
$endif$
  • Czy executive-summary.Rmdjest zdefiniowany i nie ma YAML ani nagłówka poziomu 1 (nagłówek „Executive Summary” pochodzi z pliku szablonu / klasy)

Co ciekawe, mogłem po prostu umieścić zawartość w executivesummarysekcji YAML (tj. Pominąć renderowanie dokumentu podrzędnego), ale opcje fragmentów kodu, które zawierają ciągi znaków, czasami są analizowane jako klucze YAML w tym przypadku, co powoduje niepowodzenie renderowania. Ponadto fragmenty kodu z wcięciem o 2 spacje nie otrzymują pomocy IDE przy sprawdzaniu składni lub autouzupełnianiu.