Como posso colocar um sumário executivo antes do TOC usando bookdown?

Jan 15 2021

Tenho um bookdownprojeto com um customizado template.texe customizado my-format.cls. Posso fazer coisas como o seguinte em meu template.tex:

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

\tableofcontents

\begin{body}
...

e obter o resumo para minha formatação personalizada. Isso funciona em parte porque o conteúdo do resumo é apenas um parágrafo de texto, que pode ser colocado na capa do YAML.

No entanto, é possível incluir um sumário executivo antes do índice ?

Eu sei que posso usar (no meu index.Rmd)


# Executive Summary {-}

a summary here

# Introduction

this is the first numbered section

Mas, nesse caso, embora o cabeçalho da seção "Resumo executivo" não seja numerado, ele aparece após o sumário. É possível modificar o de template.textal forma que usando algo como:

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

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

\tableofcontents

\begin{body}
...

Posso descolar o conteúdo (incluindo figuras / tabelas / etc.) De uma seção de resumo executivo não numerada (mesmo que tenha que vir de um .Rmdarquivo diferente ) e atribuí-lo a alguma variável (pandoc) que poderia fazer referência no lugar do % If I insert summary content hereacima? Eu também precisaria desse mesmo conteúdo removido da $body$variável padrão atribuída (pandoc) .

Respostas

2 MattPollock Jan 15 2021 at 23:32

Obrigado @tarleb! Suspeito que poderia conseguir o que desejo por meio de um filtro Lua, mas acho que encontrei uma maneira mais fácil ao longo das linhas de sua respostahttps://stackoverflow.com/a/53885034/1785752

No index.RmdYAML eu adicionei

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

No entanto, isso requer algumas coisas:

  • Que o ambiente "sombreado" é definido no preâmbulo de template.tex
$if(highlighting-macros)$
$highlighting-macros$
$endif$
  • Que o executive-summary.Rmdesteja definido e não tenha YAML e nenhum cabeçalho de nível 1 (o título "Sumário Executivo" vem do arquivo de modelo / classe)

Curiosamente, eu poderia apenas colocar conteúdo na executivesummaryseção YAML (ou seja, pular a renderização do documento filho), mas as opções de fragmentos de código que incluem strings às vezes são analisadas como chaves YAML neste caso, o que faz com que a renderização falhe. Além disso, pedaços de código recuado de 2 espaços não recebem ajuda do IDE para verificação de sintaxe ou preenchimento automático.