2016-03-01 8 views
17

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

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

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

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

parskipNotWorking

+0

ли вы когда-нибудь найти решение этой проблемы? Благодарю. – DataJack

+0

@DataJack см. Ниже –

ответ

6

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

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

+0

Спасибо за решение, Мартин! Можете ли вы предложить любой другой способ найти это решение? Отправьте мой вопрос здесь и подождите 9 месяцев - это один из способов. На охоте через латексную документацию я регулярно пытаюсь найти то, что мне нужно, этот вопрос является всего лишь одним примером. – RyanStochastic

+1

Я не могу. Я очень удивлен, что это заняло много времени, учитывая, что ответ не так уж и трудный. –

 Смежные вопросы

  • Нет связанных вопросов^_^