减少rmarkdown beamer演示文稿中代码块和代码输出之间的空间

20

我正在使用rmarkdown和LaTeX/Beamer制作演示文稿。我想要减少显示的R命令和R输出之间的间距。我认为这与LaTeX/Beamer中的段落间距选项有关。

我应该在rmarkdown中完成这个操作(代码块选项、knit_hooks或其他方法)、在pandoc Yaml头文件中(某些pandoc选项)还是在LaTeX beamer模板文件中?我觉得应该在LaTeX模板文件中处理。

以下是一个最小markdown文件的工作示例,以及我正在使用的.tex模板文件来控制一些beamer设置。

example.Rmd

---
title: "Untitled"
author: "Ryan"
date: "March 1, 2016"
output:
  beamer_presentation:
    pandoc_args: '--latex-engine=xelatex'
    includes:
      in_header: latex-topmatter.tex
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## Vertical Spacing is too much

Here is a working example.

- some
- bullets

Example code:

```{r, echo = TRUE}
a <- 1
a
a+a
```

latex-topmatter.tex

% declare overall beamer theme to use as baseline
\usetheme{default}

% make code-output smaller
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{fontsize=\tiny,commandchars=\\\{\}}

% make console-output smaller:
\makeatletter
\def\verbatim{\tiny\@verbatim \frenchspacing\@vobeyspaces \@xverbatim}
\makeatother

% set vertical spacing between paragraphs:
% \parskip{0pt}
% \addtobeamertemplate{blocks}{}{\setlength{\parskip}{0pt}}
% \addtobeamertemplate{block begin}{}{\setlength{\parskip}{0pt}}
% \addtobeamertemplate{block end}{}{\setlength{\parskip}{0pt}}
% % \setlength{\emergencystretch}{0em}
\setlength{\parskip}{0pt}

我尝试了缩小 R 命令或输出的字体,但这似乎并不影响段落间距。

我尝试了使用 knit_hooks(),例如在此示例中:https://github.com/ramnathv/slidify/issues/189,这基本上是有效的 - 但然后我似乎无法减小代码和输出的字体大小。

我还尝试了使用 \parskip{0pt} 和其他几个 beamer 选项或 parskip 选项,这些选项都在上面的 latex-topmatter.tex 部分中有注释。它们似乎都不能改变文本块、R 代码或 R 输出之间的间距。我是否在看错地方了?

parskipNotWorking


你有找到解决方案吗?谢谢。 - DataJack
@DataJack 请参考以下内容 - Martin Schmelzer
1个回答

13

这里有一个可运行的示例。请注意头文件末尾的定义:

  • 源代码块包含在Shaded环境中,该环境又使用\OuterFrameSep进行间距控制,因此我们需要重新定义。
  • 通过使用\preto,我们将命令\topsep=-10pt \partopsep=-10pt添加到每个抄录环境之前。这会影响输出块的间距。

example.Rmd

---
title: "Untitled"
author: "Martin"
date: "January 4, 2017"
output:
  beamer_presentation:
    keep_tex: yes
    pandoc_args: --latex-engine=xelatex
    includes:
      in_header: latex-topmatter.tex
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## Vertical Spacing is just right

Here is a working example.

- some
- bullets

Example code:

```{r, echo = TRUE}
a <- 1
a
a+a
```

latex_topmatter.tex

% declare overall beamer theme to use as baseline
\usetheme{default}

% make code-output smaller
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{fontsize=\tiny,commandchars=\\\{\}}

% make console-output smaller:
  \makeatletter
\def\verbatim{\tiny\@verbatim \frenchspacing\@vobeyspaces \@xverbatim}
\makeatother


\setlength{\parskip}{0pt}


\setlength{\OuterFrameSep}{-4pt}
\makeatletter
\preto{\@verbatim}{\topsep=-10pt \partopsep=-10pt }
\makeatother

enter image description here


1
谢谢你解决了这个问题,马丁!你能否建议其他找到这个解决方案的方法?在这里发布我的问题并等待9个月是一种方式。在搜索latex文档时,我经常很难找到我需要的内容,这个问题只是其中之一。 - RyanStochastic
1
我不能。实际上,我很惊讶答案并不那么困难,需要这么长时间。 - Martin Schmelzer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接