繁体   English   中英

在 RMarkdown 或 Quarto 中并排放置 2 块代码?

[英]Put 2 chunks of code side by side in RMarkdown or Quarto?

如何在 RMarkdown 或 Quarto 的 output 文件中并排放置 2 块代码?

代码

library(dplyr)
mtcars %>% select(gear)
library(dplyr)
select(mtcars, gear)

PDF 或 HTML 文件中的所需布局在此处输入图像描述

---
title: "Untitled"
output: html_document
---

:::::::::::::: {.columns}
::: {.column width="50%"}


```{r warning=FALSE,message=FALSE}
library(dplyr)
mtcars %>% select(gear)
```

:::
::: {.column width="50%"}

```{r warning=FALSE,message=FALSE}
library(dplyr)
select(mtcars, gear)
```

:::
::::::::::::::

在此处输入图像描述

使用这个 SO question 作为资源 这是使用 pandoc 格式化 Rmarkdown HTML output 中的文档

像这样的规范方法是使用column divs

::::: columns
::: column
```r
library(dplyr)
mtcars %>% select(gear)
```
:::

::: column
```r
library(dplyr)
select(mtcars, gear)
```
:::
:::::

这将适用于 HTML、reveal.js、Beamer 和 Powerpoint。 默认结果在 HTML 中看起来有点难看,因为两个块之间没有空间,但我们可以用一点点 CSS 来解决这个问题。 我们可以直接放到文档中:

<style>
.column { padding-right: 1ex }
.column + .column { padding-left: 1ex }
</style>

如果我们希望对 PDF 做同样的事情,事情会变得更加复杂。 我们需要将 div 转换为表格,因为这是并排获取元素的最有效方式。 但这需要一些 更重的工具 在 YAML header 中,添加

output:
  pdf_document:
    pandoc_args:
      - "--lua-filter=columns-to-table.lua"

然后将以下代码保存到文件column-to-table.lua中。

function Div (div)
  if div.classes:includes 'columns' then
    local columns = div.content
      :filter(function (x)
        return x.classes and x.classes[1] == 'column'
      end)
      :map(function (x)
        return x.content
      end)
    local aligns = {}
    local widths = {}
    local headers = {}
    for i, k in ipairs(columns) do
      aligns[i] = 'AlignDefault'
      widths[i] = 0.98/ #columns
    end
    return pandoc.utils.from_simple_table(
      pandoc.SimpleTable('', aligns, widths, headers, {columns})
    )
  end
end

您可以通过添加来摆脱桌子周围的线条

\renewcommand\toprule[2]\relax
\renewcommand\bottomrule[2]\relax

在文档的开头。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM