【问题标题】:knitr/pandoc: article template supporting keywords: and linespacing:knitr/pandoc:支持关键字的文章模板:和行距:
【发布时间】:2016-10-25 00:30:57
【问题描述】:

我正在使用最新的 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"

这也给出了同样的错误,所以我对原因感到困惑。

【问题讨论】:

  • 为什么不编辑 1.15.2 模板以添加关键字和行间距支持(您可以从 1.17 模板复制)。 Linespacing 与 pandoc 支持无关,它是纯乳胶,所以它应该可以工作。

标签: r templates rstudio knitr pandoc


【解决方案1】:

对于后代,一种似乎可行的解决方案是将default-1.17.02.tex 复制到工作目录并对其进行修改以包含关键字参数。在重命名的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.

编译生成一个包含关键字字段的标题页:

编辑:OP 还提到了行距。当使用 1.17.02.tex 样式时(如果最新版本的 Pandoc 可用,则自动使用,通过手动安装或使用最新的 RStudio 预览版本),调整行间距的能力是通过将 linestretch: 1 设置为 single空格,linestretch: 2 表示 YAML 标头中的任何位置的双精度。

【讨论】:

    【解决方案2】:

    这是keywords: 问题的答案。诚然,这是一个杂项,但不需要更改模板:只需将 关键字 作为附加段落包含在 YAML 标头的摘要中即可。

    abstract: "This paper explores a variety of topics ...
    
    
    **Keywords**: Box's M test; HE plots; MANOVA; graphics
    "
    

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

    【讨论】:

    • 然后关键字将出现在\abstract{} 字段中并被格式化,尽管它们在概念上是不同的。与使用关键字命令相比,我认为这不是一个好习惯
    • 这就是为什么我称它为kludge;但这是我发现获得所需结果的唯一方法。
    猜你喜欢
    • 2014-04-07
    • 2017-03-26
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 2019-07-08
    相关资源
    最近更新 更多