像这样的东西通常采用使用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 头中添加以下内容:
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
在您的文档开头。
---
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问答作为参考。 这是使用Pandoc将文档格式化为Rmarkdown HTML输出。
html_document
,然后在浏览器中查看HTML文件,每当需要保留最佳的HTML样式时,再选择“打印到PDF”。 - Daniel_j_iii
classoptions: twocolumn
。 - tarleblua-filter
的解决方案能够起作用:)。我还尝试了Rmarkdown食谱https://bookdown.org/yihui/rmarkdown-cookbook/multi-column.html的方法-那种方法有点奏效,但是我正在寻找更优雅的解决方案。 - Ray