Подтвердить что ты не робот

Сокращение пространства между фрагментами кода и выходом кода в представлении диаграммы rmarkdown

Я создаю презентацию с использованием rmarkdown и LaTeX/Beamer. Я хотел бы уменьшить интервал между отображаемыми R-командами и R-выходом. Я считаю, что это связано с параметрами интервала абзаца в LaTeX/Beamer.

Это что-то, что я должен сделать в rmarkdown (chunk options, knit_hooks или что-то еще?), в заголовке pandoc Yaml (какая-то опция pandoc?) или в файле шаблона шаблона LaTeX? Я чувствую, что это должно быть в файле шаблона LaTeX.

Ниже приведен рабочий пример минимального файла уценки и файл шаблона .tex, который я использую для управления некоторыми настройками диаграммы.

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
```

Латекс-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-команд или R-output меньше, что, похоже, не влияет на интервал абзаца.

Я попытался использовать knit_hooks(), как в этом примере: https://github.com/ramnathv/slidify/issues/189, который в основном работает, но тогда я не могу уменьшить шрифт кода и выводить.

Я также пробовал использовать \parskip{0pt}, а также несколько других параметров панели инструментов или параметров parskip, которые комментируются в предыдущем разделе latex-topmatter.tex. Ни один из них, похоже, не меняет промежуток между кусками текста, R-кода или R-вывода. Я даже смотрю в нужное место?

parskipNotWorking

4b9b3361

Ответ 1

Вот рабочий пример. Обратите внимание на определения в конце файла заголовка:

  • Коды исходного кода содержатся внутри среды 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

введите описание изображения здесь