【问题标题】:Rmarkdown setting the position of kablermarkdown设置kable的位置
【发布时间】:2018-11-05 11:30:28
【问题描述】:

我有以下问题,将 Rstudio 中的 Rmarkdown 编织为 PDF 后,我的表格不会出现在 Rmarkdown 文件中的位置,而是出现在页面顶部。我尝试添加:

header-includes:
  - \usepackage{float}

```{r setup, include=FALSE}
knitr::opts_chunk$set(... fig.pos = "H")
```

但它没有用。 R和Rstudio在Linux上运行,LaTeX引擎是“pdflatex”

完全可重现的示例:

---
title: "Untitled"
output: pdf_document
header-includes:
  - \usepackage{float}
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, message=FALSE, warning = FALSE, fig.align = "center", dev = "cairo_pdf", fig.pos = "H")
```

```{r}
library(kableExtra)
library(tidyverse)
```
## R Markdown

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>.

\newpage

## Including Plots

You can also embed plots, for example:

```{r pressure, echo=FALSE}
plot(pressure)
```

Note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot.

```{r}    
kable(cars %>% filter(cars$speed>=23), caption = "Speed vs distance")
```

【问题讨论】:

  • 似乎图形环境仅在您使用fig.cap 定义标题时才添加。那么定位参数应该按预期使用。
  • 解决方法是,删除kable ()中的caption="...",一旦删除,定位就开始起作用了。

标签: r r-markdown kable


【解决方案1】:

您可以将 claudius 答案中的“hold_position”替换为“HOLD_position”:

```{r}    
kable(cars %>% filter(cars$speed>=23), caption = "Speed vs distance") %>%
  kable_styling(latex_options = "HOLD_position")
```

正如 kableExtra 包中提到的:

如果您发现 hold_position 的功能不足以将您的桌子固定在确切的位置,您可能需要使用 HOLD_position,这是此功能的更强大版本。对于熟悉 TeX 的人来说,hold_position 使用 [!h] 和 HOLD_position 使用 [H] 和 float 包。

参考:https://haozhu233.github.io/kableExtra/awesome_table_in_pdf.pdf

您可能还想通过将 fig.pos='H' 添加到图形块头来控制图形位置。

【讨论】:

  • 是的,同时对fig.pos='H'latex_options = "HOLD_position" 至关重要。非常感谢!
【解决方案2】:

要修复 Latex 文档中的表格位置,您不需要包含标题选项,也不需要设置 opts_chunk 配置。为此,您应该通过在kable [1] 中添加kable_styling() 函数,将latex_options 指定为hold_position

所以最后一块是:

```{r}    
kable(cars %>% filter(cars$speed>=23), caption = "Speed vs distance") %>%
  kable_styling(latex_options = "hold_position")
```

【讨论】:

  • 我尝试这样做,但所有表格都到了我文档的末尾。是否有另一种解决方案或方法将桌子放在同一位置
【解决方案3】:

为 R Markdown Latex 或 Beamer 输出设置 kable 对象位置的另一种方法是将表格包含在“文本块”环境中,如 here 发布的那样。

YAML 将包括:

header-includes:
- \usepackage[absolute,overlay]{textpos}
  \setlength{\TPHorizModule}{1mm}
  \setlength{\TPVertModule}{1mm}

R 代码块(前后是“文本块”的乳胶代码)如下所示:

\begin{textblock}{}(21.5, 51.5)
\footnotesize
```{r}    
kable(cars %>% filter(cars$speed>=23), caption = "Speed vs distance") 
```
\end{textblock} 

这种方法允许在页面或投影仪幻灯片上更精细地调整 kable 输出的位置。

【讨论】:

    猜你喜欢
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多