【问题标题】:Turning off title page in Rmd using knitr使用 knitr 关闭 Rmd 中的标题页
【发布时间】:2016-07-20 23:03:44
【问题描述】:

编辑:

当覆盖 pagestyle "plain" 并使用 documentclass article 时,几乎可以达到所需的结果。

\fancypagestyle{plain}{
   \fancyhf{}
   \fancyhead[RO,RE]{Header}
   \fancyfoot[RO,RE]{\thepage}
}

我面临的问题是第一页的headsep(标题和表格之间的空间)更大。这似乎是因为 \maketitle。删除时

$if(title)$
\maketitle
$endif$

从(默认)pandoc 模板中,一切都按预期工作。 恕我直言,同样的结果也应该是可以达到的(无需编辑模板),但在我的 .rmd 文件的 yaml-header 中使用“title: false”。但是在查看生成的 .tex 时,“\maketitle”命令似乎仍然存在。这是为什么呢?

原问题:

我试图在使用 knitr 创建 pdf 时关闭标题页。该文档包含一个带有重复标题的长表。

我期待一个 pdf,其中所有页面都有指定的页眉和页脚信息(和 headersep)。在下面的运行示例中,第 1 页的行为有所不同。尝试禁用标题页失败。

test.Rmd

---
author: "Fabian"
output: pdf_document
documentclass: report 
classoption: notitlepage
params: 
  testParam: !r data.frame(a = 1:100, b = 2:101)
header-includes:
  \usepackage{longtable}
  \usepackage{xcolor}

  \usepackage{hyperref}
  \hypersetup{colorlinks = false}

  \usepackage{geometry}
  \geometry{a4paper, landscape, left = 13mm, right = 14mm, top = 5mm, bottom = 13mm, includeheadfoot}
  \headsep = 5mm

  \usepackage{graphicx}
  \usepackage{lastpage}
  \usepackage{fancyhdr}
  \pagestyle{fancy}
  \fancyhf{}
  \fancyhead[RO,RE]{Header}
  \fancyfoot[RO,RE]{\thepage}
---

```{r setup, include = F}
library(data.table)
```

\centering
\begin{longtable}{ll}
\hline
```{r createLatexheader, eval = T, echo = F, results = "asis"}
header <- names(data)
latexHaeder <- paste0(paste0(header, collapse = " & "), " \\\\ \n")
cat(latexHaeder)
```
\hline
\endhead

```{r createLatexdata, eval = T, echo = F, results = "asis"}
data <- params$testParam
setDT(data)
data[, ID := .I]
latexData <- data[, .(LATEX = paste0(.SD, collapse = " & ")), by = ID]$LATEX
latexData <- paste0(paste0(latexData, collapse = " \\\\ \n"), " \\\\ \n")
cat(latexData)
```
\end{longtable}

【问题讨论】:

  • 尝试将\AtBeginDocument{\let\maketitle\relax} 添加为header-includes 的一部分。
  • @Werner 是解决方案,应该被接受为答案

标签: r latex yaml knitr r-markdown


【解决方案1】:

要将\maketitle 变为无操作,请将以下内容添加到您的header-includes

\AtBeginDocument{\let\maketitle\relax}

即使\maketitle 被执行,这个重新定义(延迟到\begin{document})也不会做任何事情。

【讨论】:

    猜你喜欢
    • 2015-02-28
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多