在乳胶模板中使用一个部分作为摘要

Using a section as abstract in latex template

我想创建一个带有摘要的降价报告,其中可以包含报告本身生成的数字。在 yaml header 中将摘要定义为字符串的常用方法对我不起作用。

本质上,我希望文档的某些部分包含如下内容:

## Abstract

Lorem impsum this is the abstract

```{r, fig.cap = "figure in the abstract"}
plot(pressure)
```

然后在latex文档中有这样的东西

\begin{abstract}
Lorem impsum this is the abstract 
\begin{figure}
\centering
\includegraphics{unnamed-chunk-1-1.pdf}
\caption{figure in the abstract}
\end{figure}
\end{abstract}

理想情况下,这可以通过

\begin{abstract}
$body.abstract$   
\end{abstract}

在乳胶模板中。但我面临的问题是,对于 Pandoc,knitr 呈现的所有内容都是 $body$ 变量的一部分,所以我不知道如何访问特定部分的内容。

作为解决方法,创建一个单独的 abstract.Rmd 文件编译成乳胶片段,然后使用

\begin{abstract}
\input{abstract.tex}
\end{abstract}

有效。但它涉及记住首先编译该文件,并用额外的 LaTeX 文件污染目录。由于这肯定会给预期用户带来错误和混淆,因此我想避免它。

我要求的可能吗?

听起来 abstract-to-meta Lua filter 应该可以满足您的需求。

This moves a document's abstract from the main text into the metadata.

下载 abstract-to-meta.lua 文件并将其放入项目目录中 R Markdown 文件旁边。然后确保通过向您的元数据添加 pandoc_args 字段来调用它:

---
output: 
  pdf_document:
    pandoc_args: ["--lua-filter=abstract-to-meta.lua"]
---