Comment puis-je mettre un résumé avant la table des matières à l'aide de bookdown?

Jan 15 2021

J'ai un bookdownprojet avec une coutume template.texet une coutume my-format.cls. Je peux faire des choses comme ce qui suit dans mon template.tex:

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

\tableofcontents

\begin{body}
...

et obtenez le résumé pour prendre ma mise en forme personnalisée. Cela fonctionne en partie parce que le contenu du résumé est juste un paragraphe de texte, qui peut être placé dans l'avant-plan YAML.

Cependant, est-il possible d'inclure un résumé avant la table des matières ?

Je sais que je peux utiliser (dans mon index.Rmd)


# Executive Summary {-}

a summary here

# Introduction

this is the first numbered section

Mais dans ce cas, même si l'en-tête de la section "Executive Summary" n'est pas numéroté, il apparaît après la table des matières. Est-il possible de modifier le template.textel qu'en utilisant quelque chose comme:

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

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

\tableofcontents

\begin{body}
...

Je peux retirer le contenu (y compris les figures / tableaux / etc.) d'une section de résumé analytique non numérotée (même si elle doit provenir d'un .Rmdfichier différent ) et l'assigner à une variable (pandoc) qui pourrait faire référence à la place de % If I insert summary content hereci-dessus? J'aurais également besoin de ce même contenu supprimé de la $body$variable assignée par défaut (pandoc) .

Réponses

2 MattPollock Jan 15 2021 at 23:32

Merci @tarleb! Je soupçonne que je pourrais obtenir ce que je veux via un filtre Lua, mais je pense avoir trouvé un moyen plus simple dans le sens de votre réponsehttps://stackoverflow.com/a/53885034/1785752

Dans le index.RmdYAML j'ai ajouté

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

Cela nécessite cependant quelques éléments:

  • Que l'environnement «ombré» est défini dans le préambule de template.tex
$if(highlighting-macros)$
$highlighting-macros$
$endif$
  • Que le executive-summary.Rmdest défini et n'a pas de YAML et pas d'en-tête de niveau 1 (l'en-tête "Résumé exécutif" provient du fichier modèle / classe)

Fait intéressant, je pourrais simplement mettre le contenu dans la executivesummarysection YAML (c'est-à-dire ignorer le rendu du document enfant), mais les options de bloc de code qui incluent des chaînes sont parfois analysées comme des clés YAML dans ce cas, ce qui entraîne l'échec du rendu. De plus, les morceaux de code indentés de 2 espaces ne reçoivent aucune aide de l'IDE pour la vérification de la syntaxe ou la saisie semi-automatique.