Как убрать ненужные пробелы между заголовком и таблицей с помощью kable в R Markdown to Beamer

Я хочу, чтобы заголовок моей таблицы (blabla) располагался близко к верхней части таблицы (без лишнего пробела). Этот вопрос может быть таким же, как из Sara, но я привожу воспроизводимый пример. Я попробовал эти советы, но они не получится.

---
title: "XYZ"
output: 
  beamer_presentation
---
```{r, include=FALSE}
library(knitr)
```
## 
```{r}
kable(mtcars[1:2,1:2],
      caption = "blabla",
      format = "latex")
```

\begin{table}

\caption{blabla}
\centering
\begin{tabular}{l|r|r}
\hline
  & mpg & cyl\\
\hline
Mazda RX4 & 21 & 6\\
\hline
Mazda RX4 Wag & 21 & 6\\
\hline
\end{tabular}
\end{table}

Производит:

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

Как я могу удалить лишние пробелы (в любом случае)? Было бы лучше правильное решение, то есть без ручного изменения кода LaTeX из kable...


person Guilherme Parreira    schedule 16.03.2021    source источник
comment
Проблема в том, что rmarkdown использует \begin{tabular}[t]{l|r|r} вместо \begin{tabular}{l|r|r} при преобразовании в pdf   -  person samcarter_is_at_topanswers.xyz    schedule 17.03.2021
comment
Я понимаю. Однако есть еще лишнее место (обновил вопрос). Чтобы удалить лишнее пространство, нужно ли мне вручную использовать \vspace{-.5em} или что-то в этом роде?   -  person Guilherme Parreira    schedule 17.03.2021


Ответы (1)


Половина пробелов вызвана тем, что rmarkdown использует \begin{tabular}[t]{l|r|r} вместо \begin{tabular}{l|r|r}

Другая половина — это интервал, который по умолчанию использует лучник, используемый ниже подписей. Вы можете управлять им через \setlength\belowcaptionskip{7pt}, но я бы посоветовал оставить изменения ограниченными средой table, чтобы не влиять на места, где подпись должна быть ниже таких вещей, как рисунки.

\documentclass{beamer}

\AtBeginEnvironment{table}{\setlength\belowcaptionskip{0pt}}

\begin{document}
    
\begin{frame}
\begin{table}
\caption{content...}
\begin{tabular}{cc}
\hline
c & d\\
\hline
\end{tabular}
\end{table}
\end{frame} 

\begin{frame}
\begin{figure}
\includegraphics[width=.5\textwidth]{example-image-duck}
\caption{content...}
\end{figure}
text
\end{frame} 
    
\end{document}
person samcarter_is_at_topanswers.xyz    schedule 17.03.2021
comment
Большое тебе спасибо! Я использовал \AtBeginEnvironment{table}{\setlength\belowcaptionskip{-8pt}} в in_header includes, и все пробелы исчезли. - person Guilherme Parreira; 17.03.2021
comment
@GuilhermeParreira Добро пожаловать! - person samcarter_is_at_topanswers.xyz; 17.03.2021