Ich frage mich, wie man es benutzt rmarkdown
ein PDF generiert, das sowohl Hoch- als auch Querformat im selben Dokument enthält. Wenn es eine reine rmarkdown
Option gibt, wäre das sogar noch besser als die Verwendung von Latex.
Hier ist ein kleines, reproduzierbares Beispiel. Rendern Sie dies zunächst .Rmd
in RStudio (drücken Sie PDF stricken Schaltfläche stricken), erhalten Sie ein PDF mit allen Seiten im Querformat:
---
title: "All pages landscape"
output: pdf_document
classoption: landscape
---
```{r}
summary(cars)
```
\newpage
```{r}
summary(cars)
```
Dann ein Versuch, ein Dokument zu erstellen, das Hoch- und Querformat mischt. Die Grundeinstellung in YAML
erfolgt gemäß dem Abschnitt "Enthält" hier . Die in_header
Datei ‚header.tex‘ enthält nur \usepackage{lscape}
ein Paket für vorgeschlagene knitr
Landschaft Layout hier . Die .tex
Datei befindet sich im selben Verzeichnis wie die .Rmd
Datei.
---
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)
```
Dieser Code führt jedoch zu einem Fehler:
# ! 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
Jede Hilfe wird sehr geschätzt.
latex
Unwissenheit schuld ist..md
(gut, hier), dann die md-> tex-Konvertierung (dort ist es schief gelaufen). Die Fehlermeldung war nicht hilfreich, da dies bereits der nächste Schritt ist (Latex).Aufbauend auf früheren Lösungen erfordert die folgende Lösung keine
header.tex
Zusatzdatei. Alle Inhalte sind in der.Rmd
Datei enthalten. Die LaTeX-Befehle werden stattdessen in einemheader-includes
Block im YAML-Header definiert. Weitere Infos finden Sie hier .Außerdem habe ich festgestellt, dass bei Verwendung des
lscape
LaTeX-Pakets der Inhalt einer Seite gedreht wird, nicht jedoch die PDF-Seite selbst. Dies wird mithilfe despdflscape
Pakets behoben .--- title: "Mixing portrait and landscape WITHOUT a header.tex file" header-includes: - \usepackage{pdflscape} - \newcommand{\blandscape}{\begin{landscape}} - \newcommand{\elandscape}{\end{landscape}} output: pdf_document --- Portrait ```{r} summary(cars) ``` \newpage \blandscape Landscape ```{r} summary(cars) ``` \elandscape \newpage More portrait ```{r} summary(cars) ```
quelle
Für die häufigsten Fälle.
Es gibt 3 Bedingungen.
Lassen Sie uns auf die einzelnen Bedingungen eingrenzen.
Das erste, sagen wir, wir haben ein Abschriften-Dokument, das mit dem folgenden Code beginnt. Dies ist die Standardeinstellung in Rstudio, wenn Sie eine rmd-Datei erstellen. Wenn du es strickst. Es wird ohne Zweifel automatisch davon ausgegangen, dass es sich um einen Porträtmodus handelt.
title: "Landscape and Portrait" author: "Jung-Han Wang" date: "Thursday, March 19, 2015" output: pdf_document
Wenn Sie die PDF-Datei in den Querformatmodus versetzen möchten, müssen Sie nur die Klassenoption Querformat hinzufügen
title: "Landscape and Portrait" author: "Jung-Han Wang" date: "Thursday, March 19, 2015" output: pdf_document classoption: landscape
Wenn Sie eine Mischung aus beiden wünschen, müssen Sie eine .tex-Datei in YAML hinzufügen. Indem ich auf den oben erwähnten Link verweise. Sie können den .tex-Code hier herunterladen. http://goo.gl/cptOqg Oder kopieren Sie einfach den Code und speichern Sie ihn als header.tex. Um das Leben zu vereinfachen, legen Sie diese .tex-Datei zusammen mit der zu strickenden rmd-Datei ab. Stellen Sie sicher, dass Sie diese beiden Dinge getan haben: Kopieren Sie die tex-Datei und verschieben Sie sie zusammen mit der rmd-Datei. Ändern Sie den Anfang von rmd in:
title: "Landscape and Portrait" author: "Jung-Han Wang" date: "Thursday, March 19, 2015" output: pdf_document: includes: in_header: header.tex
Dies ist die Zusammenfassung, nachdem ich mit dieser Ausgabe gespielt habe und hauptsächlich von der Antwort von Baptiste profitiert habe.
Ich habe einige Schnappschüsse und Beispiele in meinen Blogger, meinen Blogger, aufgenommen .
Hoffe das hilft. Viel Glück.
quelle
Wie bereits erwähnt, analysiert pandoc R-Befehle in einer LaTeX-Umgebung nicht und platziert sie unverändert im generierten LaTeX. Dies verursacht den Fehler. Über die nette und einfache Lösung von baptiste hinaus können Sie das
xtable
R-Paket verwenden, das die Möglichkeit bietet, aus der R-Ausgabe sexy aussehende LaTeX-Tabellen zu erstellen. Damit das folgende Beispiel funktioniert, müssen Sie\usepackage{rotating}
dieheader.tex
Datei hinzufügen :--- title: "Mixing portrait and landscape" output: pdf_document: keep_tex: true includes: in_header: header.tex --- ```{r, echo=FALSE} library(xtable) ``` Portrait ```{r, results='asis', echo=FALSE} print(xtable(summary(cars), caption="Landscape table"), comment=FALSE) ``` Landscape: ```{r, results='asis', echo=FALSE} print(xtable(summary(cars), caption="Landscape table"), floating.environment="sidewaystable", comment=FALSE) ```
Die zweite Tabelle wird in der
sidewaystable
Umgebung und nicht wie üblichtable
gedruckt. Daher wird sie im Querformat auf einer separaten Seite gedruckt. Beachten Sie, dass Tabellen und Abbildungen, die vomlscape
Paket oder in dersideways
Umgebung im Querformat platziert werden, immer auf einer separaten Seite platziert werden (siehe Seite 91 dieses sehr wichtigen Dokuments):http://www.tex.ac.uk/tex-archive/info/epslatex/english/epslatex.pdf
Da ich das etwas nervig finde, habe ich es geschafft, sowohl Hoch- als auch Querformat-Tabellen auf derselben Seite zu halten (wobei ich meinen ganzen Nachmittag damit verschwendete):
--- title: "Mixing portrait and landscape" output: pdf_document: keep_tex: true includes: in_header: header.tex --- ```{r, echo=FALSE} library(xtable) ``` Portrait: ```{r, results='asis', echo=FALSE} print(xtable(summary(cars), caption="Portrait table."), comment=FALSE) ``` Landscape: ```{r, results='asis', echo=FALSE} cat(paste0( "\\begin{table}[ht]\\centering\\rotatebox{90}{", paste0(capture.output( print(xtable(summary(cars)), floating=FALSE, comment=FALSE)), collapse="\n"), "}\\caption{Landscape table.}\\end{table}")) ```
Für den Landschaftstisch habe ich das verwendet
\rotatebox
Vorschlag verwendet:http://en.wikibooks.org/wiki/LaTeX/Rotations
Damit dies funktioniert, muss ich nur die Erzeugung
tabular
Teil der Tabelle mit demprint(xtable(...
Teil, dann muss ich die Ausgabe und „manuell“ erfassen umgeben sie mit dentable
undrotatebox
Befehle, alles in einen String R Ausgang konvertieren , so dass pandoc nicht sieht sie als LaTeX-Umgebungen. Für eine reine Rmarkdown-Lösung ... viel Glück!quelle