我想知道如何使用rmarkdown生成一个在同一文档中同时具有纵向和横向布局的pdf。如果有一个纯rmarkdown选项,它将比使用 latex 更好。

这是一个小的可复制示例。首先,在RStudio中渲染此.Rmd(按 Knit PDF的按钮)会导致pdf的所有页面都采用横向布局:

---
title: "All pages landscape"
output: pdf_document
classoption: landscape
---

```{r}
summary(cars)
```

\newpage
```{r}
summary(cars)
```

然后尝试创建混合纵向和横向布局的文档。 YAML中的基本设置是根据“包含”部分here完成的。 in_header文件'header.tex'仅包含\usepackage{lscape},这是knitr横向布局here建议的软件包。 .tex文件与.Rmd文件位于同一目录中。
---
title: "Mixing portrait and landscape"
output:
    pdf_document:
        includes:
            in_header: header.tex
---

Portrait:
```{r}
summary(cars)
```

\newpage
\begin{landscape}
Landscape:
```{r}
summary(cars)
```
\end{landscape}

\newpage
More portrait:
```{r}
summary(cars)
```

但是,此代码导致错误:
# ! You can't use `macro parameter character #' in horizontal mode.
# l.116 #

# pandoc.exe: Error producing PDF from TeX source
# Error: pandoc document conversion failed with error 43

任何帮助深表感谢。

最佳答案

因此,pandoc does not解析了 latex 环境的内容,但是您可以通过在header.tex文件中的redefining the commands来欺骗它:

\usepackage{lscape}
\newcommand{\blandscape}{\begin{landscape}}
\newcommand{\elandscape}{\end{landscape}}

因此,此处\begin{landscape}重定义为\blandscape,并且\end{landscape}重定义为\elandscape。在.Rmd文件中使用这些新定义的命令似乎可行:
---
title: "Mixing portrait and landscape"
output:
    pdf_document:
        includes:
            in_header: header.tex
---

Portrait
```{r}
summary(cars)
```

\newpage
\blandscape
Landscape
```{r}
summary(cars)
```
\elandscape

\newpage
More portrait
```{r}
summary(cars)
```

关于r - Rstudio rmarkdown:单个PDF中的纵向和横向布局,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25849814/

10-12 15:58