Wie kann ich mithilfe von Bookdown eine Zusammenfassung vor das Inhaltsverzeichnis stellen?

Jan 15 2021

Ich habe ein bookdownProjekt mit einem Brauch template.texund einem Brauch my-format.cls. Ich kann in meinem Fall Folgendes tun template.tex:

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

\tableofcontents

\begin{body}
...

und erhalten Sie die Zusammenfassung, um meine benutzerdefinierte Formatierung zu übernehmen. Dies funktioniert teilweise, weil der Inhalt des Abstracts nur ein Textabschnitt ist, der in die YAML-Titelseite eingefügt werden kann.

Ist es jedoch möglich, vor dem Inhaltsverzeichnis eine Zusammenfassung einzufügen ?

Ich weiß, dass ich (in meinem index.Rmd) verwenden kann


# Executive Summary {-}

a summary here

# Introduction

this is the first numbered section

In diesem Fall wird der Abschnittskopf "Executive Summary" zwar nicht nummeriert, aber nach dem Inhaltsverzeichnis angezeigt. Ist es möglich, das template.texso zu ändern , dass mit etwas wie:

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

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

\tableofcontents

\begin{body}
...

Ich kann den Inhalt (einschließlich Abbildungen / Tabellen / etc.) Aus einem nicht nummerierten Abschnitt der Zusammenfassung (auch wenn er aus einer anderen .RmdDatei stammen muss) entfernen und ihn einer (Pandoc-) Variablen zuweisen, auf die anstelle der % If I insert summary content hereoben genannten verweisen könnte . Ich müsste auch diesen gleichen Inhalt entfernt von dem Standard zugeordnet (pandoc) $body$variabel.

Antworten

2 MattPollock Jan 15 2021 at 23:32

Danke @tarleb! Ich vermute, dass ich über einen Lua-Filter das bekommen könnte, was ich will, aber ich glaube, ich habe einen einfacheren Weg gefunden, der Ihrer Antwort entsprichthttps://stackoverflow.com/a/53885034/1785752

In der index.RmdYAML habe ich hinzugefügt

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

Dies erfordert jedoch einige Dinge:

  • Dass die "Shaded" -Umgebung in der Präambel von definiert ist template.tex
$if(highlighting-macros)$
$highlighting-macros$
$endif$
  • Dass das executive-summary.Rmddefiniert ist und keine YAML und keinen Level 1-Header hat (die Überschrift "Executive Summary" stammt aus der Vorlagen- / Klassendatei)

Interessanterweise könnte ich einfach Inhalte in den executivesummaryYAML-Abschnitt einfügen (dh das Rendern von untergeordneten Dokumenten überspringen), aber Code-Chunk-Optionen, die Zeichenfolgen enthalten, werden in diesem Fall manchmal als YAML-Schlüssel analysiert, was dazu führt, dass das Rendern fehlschlägt. Außerdem erhalten 2-Leerzeichen-eingerückte Codeblöcke keine IDE-Hilfe für die Syntaxprüfung oder die automatische Vervollständigung.