ブックダウンを使用して、TOCの前にエグゼクティブサマリーを配置するにはどうすればよいですか?

Jan 15 2021

私が持っているbookdownカスタムでプロジェクトtemplate.texとカスタムをmy-format.cls。私は私の中で次のようなことをすることができますtemplate.tex

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

\tableofcontents

\begin{body}
...

アブストラクトを取得して、カスタムフォーマットを取得します。これは、要約の内容がテキストの1段落にすぎず、YAMLフロントマターに配置できるため、部分的に機能します。

ただし、目次の前にエグゼクティブサマリーを含めることはできますか?

私は(私の中でindex.Rmd)使用できることを知っています


# Executive Summary {-}

a summary here

# Introduction

this is the first numbered section

ただし、その場合、「エグゼクティブサマリー」セクションのヘッダーには番号が付けられていなくても、目次の後に表示されます。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)をはがし(別のファイルから取得する必要がある場合でも)、% If I insert summary content here上記の代わりに参照できる(pandoc)変数に割り当てることができますか?また、デフォルトで割り当てられた(pandoc)変数からこれと同じコンテンツを削除する必要があり$body$ます。

回答

2 MattPollock Jan 15 2021 at 23:32

ありがとう@tarleb!Luaフィルターを介して欲しいものを手に入れることができたと思いますが、あなたの答えに沿ってもっと簡単な方法を見つけたと思いますhttps://stackoverflow.com/a/53885034/1785752

index.RmdYAML I追加

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のヘッダを持っていません

興味深いことに、私は可能性だけでコンテンツを入れexecutivesummaryYAMLセクション(すなわち、子文書のレンダリングをスキップ)、時にはレンダリングが失敗するこの場合、でYAMLキーとして解析されます文字列が含まれるコードチャンクのオプション。また、2スペースインデントされたコードチャンクは、構文チェックやオートコンプリートのためのIDEヘルプを取得しません。