【发布时间】:2022-12-11 00:31:19
【问题描述】:
如何在 RMarkdown 或 Quarto 的输出文件中并排放置 2 个代码块?
代码
library(dplyr)
mtcars %>% select(gear)
library(dplyr)
select(mtcars, gear)
【问题讨论】:
标签: pdf r-markdown png pandoc quarto
如何在 RMarkdown 或 Quarto 的输出文件中并排放置 2 个代码块?
代码
library(dplyr)
mtcars %>% select(gear)
library(dplyr)
select(mtcars, gear)
【问题讨论】:
标签: pdf r-markdown png pandoc quarto
像这样的事情的规范方式是use 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 转换为表格,因为这是并排获取元素的最有效方式。但这需要一些heavier tools。在 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
您可以通过添加来摆脱表格周围的线条
enewcommand oprule[2]
elax
enewcommandottomrule[2]
elax
在文档的开头。
【讨论】:
classoptions: twocolumn。
onecolumn 和twocolumn 之间切换几次。 Latex-switch-options 在切换时引入了不需要的分页符……因此,我希望您基于lua-filter 的解决方案能够奏效:)。我还尝试了 Rmarkdown 食谱 bookdown.org/yihui/rmarkdown-cookbook/multi-column.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)
```
:::
::::::::::::::
使用This SO question as a resource。这是使用 pandoc 在 Rmarkdown HTML 输出中格式化文档
【讨论】:
html_document,然后在您的网络浏览器中查看 HTML 文件,然后在需要时“打印为 PDF”以保留最佳 HTML 样式