当使用R Markdown生成PDF时,如何制作两栏布局?

29
当使用rmarkdown渲染html文档时,有一些方法可以实现双列布局,例如这里
是否有一种简单的方法可以使用双列布局来渲染pdf文档?是否有示例代码可供参考?
5个回答

33
新版本的pandoc使得这个过程更加简单了,与我最初的回答不同。根据pandoc手册,现在你可以直接在YAML前置元数据中指定classoptions。
---
classoption:
- twocolumn
---

新的div符号也允许在文档中的任何位置插入两列部分,适用于大多数格式。
:::::::::::::: {.columns}
::: {.column width="40%"}

contents...

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

contents...

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

原始答案

您可以使用文章选项twocolumn将整个文档格式化为两列。将其添加到您的yaml前置元素中:

---
output: 
  pdf_document:
    pandoc_args: [
      "-V", "classoption=twocolumn"
    ]
---

1
好的,我看到第二列应该在哪里,但所有内容都在第一列。如何将内容放到第二列? - Matt Bannert
1
那么要开始一个双栏节,你只需要使用\twocolumn,但是如何为后续的节(例如图像)将其设置回单栏呢? - TheProletariat
你可以使用 \onecolumn,但微调可能比较困难。你可以在 tex.SE 上找到更多帮助:https://tex.stackexchange.com/ - scoa

9
更简洁地说:
---
output:
  pdf_document:
classoption: twocolumn
---

7

关于在PDF中切换单列和双列模式,以下片段适用于我:

转换为双列模式:

```{r, echo=FALSE, results='asis'}
cat("\\twocolumn")
```

进入单列模式:
```{r, echo=FALSE, results='asis'}
cat("\\onecolumn")
```

1
每次更改,这都会为我开始一个新页面。我无法在同一页上切换。 - Harley

5

此答案的来源可以在这里找到:https://timmurphy.org/2010/06/23/adding-a-two-column-section-to-a-latex-document/

\begin{minipage}[t]{0.5\textwidth}
First Column Goodies.\\
More First Column Goodies.\\
\end{minipage}
\begin{minipage}[t]{0.5\textwidth}
Second Column Goodies.\\
More Second Column Goodies.\\
\end{minipage}

注意:在 /end{minipage} 和下一个 \begin{minipage} (不包括注释)之间不能有空格。否则 LaTeX 将无法将列并排呈现。


1
这个有一个好处,它也可以与xelatex一起使用。 - bcarothers
这是对于我的pdf_document有效的答案。 - Brandon Rose MD MPH

2

除了scoa的回答之外,为了给列更多的空间,您可以向header-includes:添加一个值,例如:

---
output:
  pdf_document:
    ...
header-includes:
- \setlength{\columnsep}{18pt}
---

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接