knitr / pandoc:支持关键字的文章模板:和linespacing:

时间:2016-06-22 21:33:22

标签: r templates rstudio knitr pandoc

我正在使用最新的R Studio,R 3.2.5,rmarkdown 0.9.6,它与pandoc 1.15.2一起编写期刊文章。提交要求:linespacing: 1.43和摘要下方的keywords:行。

当我点击Knit PDF时,我会获得默认模板"C:\R\R-3.2.5\library\rmarkdown\rmd\latex\default-1.15.2.tex"不支持支持YAML标头中的这些字段。我看到default-1.17.02.tex支持linespacing:,但不支持keywords:

我尝试修改后一个模板以添加关键字处理,这似乎很简单。我称之为modified-template-1.17.0.2.tex的模板的相关部分是

$if(title)$
\maketitle
$endif$
$if(abstract)$
\begin{abstract}
$abstract$
\end{abstract}
$endif$
\providecommand{\keywords}[1]{\textbf{\textit{Keywords---}} #1}
$if(keywords)$
    \keywords{$keywords$}
$endif$

我使用了下面的YAML标题,pandoc找到了它;但是,它生成.tex语法错误,与keywords:字段无关。我认为rmarkdown模板特定于pandoc的版本,但我无从谈论。

任何人都可以帮忙吗?

---
title: "My title"
author: ME
date: '`r format(Sys.time(), "%B %d, %Y")`'
output:
  pdf_document:
    fig_caption: yes
    keep_tex: yes
    number_sections: yes
    template: "modified-template-1.17.0.2.tex"
keywords: Box M test, HE plots, MANOVA, graphics, ...
abstract: "This paper explores a variety of fascinating topics ... "
---

注意添加:我尝试过修改default-1.15.2.tex模板,如上所述。我的结果是一样的,我得到的错误是:

! Undefined control sequence.
l.527 {\centering \includegraphics

pandoc.exe: Error producing PDF from TeX source
Error: pandoc document conversion failed with error 43

还有一项测试:我只是在本地文件夹中使用了标准default-1.15.2.tex模板的副本,并使用了YAML行

    template: "default-1.15.2.tex"

这也会产生同样的错误,所以我对原因感到困惑。

2 个答案:

答案 0 :(得分:2)

对于后人,一个似乎有用的解决方案是将default-1.17.02.tex复制到工作目录并修改它以包含keywords参数。在重命名的modified-1.17.02.tex中,在作者名称的if块之后添加:

$if(keywords)$
    pdfkeywords={$for(keywords)$$keywords$$sep$; $endfor$},
$endif$

然后在文档中,在if块之后放置摘要:

\providecommand{\keywords}[1]{\textbf{\textit{Keywords---}} #1}
$if(keywords)$
    \keywords{$keywords$}
$endif$

在项目Rmd文件中,我们只需要指定我们使用自定义模板,指定graphics = true(环绕\includegraphics错误)和关键字本身:

---
title: "My title"
author: ME
date: '`r format(Sys.time(), "%B %d, %Y")`'
output:
  pdf_document:
    template: modified-template-1.17.0.2.tex
graphics: yes
keywords: keyword 1; keyword 2; et cetera
abstract: "Abstract here."
---

Body of article here.

编译产生一个标题页,其中包含关键字字段:

compiled test document

编辑:OP还提到行间距。使用1.17.02.tex样式(如果最新版本的Pandoc可用时,通过手动安装或使用最新的RStudio预览版本自动使用),可以通过设置{{1}来调整行间距。单个空格,linestretch: 1表示YAML标题中的任意位置。

答案 1 :(得分:1)

这是keywords:问题的答案。它无疑是一个kludge,但不需要更改模板:只需在关键字作为附加段落。

abstract: "This paper explores a variety of topics ...


**Keywords**: Box's M test; HE plots; MANOVA; graphics
"

要格式化为单独的段落需要两个空行