Wie man Figurposition mit Bildunterschrift in der pdf Ausgabe von Knitr hält?

10

Ich verwende knitr (1.9.5 und 1.9.17) und rmarkdown (0.5.3.1), und möchte die Position in der PDF-Ausgabe halten. Die generierte PDF-Datei funktioniert gut, wenn die Chunk-Option fig.pos="H" verwendet wird.

Die Zahlenposition wird jedoch nicht gehalten, wenn fig_caption: yes in der Yaml-Header.

Wie soll ich dieses Problem beheben? Danke für Anregungen.

BEARBEITEN:

Nach dem Erlernen der Float-Umgebung von Latex. Ich füge float package in die Kopfzeile hinzu.

%Vor%

Aber die generierte tex-Datei verwendet immer htbp in der figure -Umgebung bezüglich aller fig.pos -Optionen. Nach dem manuellen Ändern von htbp in H werden die Positionen aller Figuren gehalten.

Dies ist mein Beispiel für rmd-Datei:

%Vor%     
Bangyou 17.04.2015, 10:03
quelle

5 Antworten

3

Wie Yihui in seiner Antwort erwähnt hat ( Abbildung Position in Markdown bei der Konvertierung in PDF mit Knitr und Pandoc ), können wir nicht zu viel über die Formatierung von mardown erwarten. Um dieses Problem zu umgehen, schreiben Sie einfach einige R-Skripts, um htbp zu H zu ersetzen.

Verglichen mit knit von knitr Paket, fand ich render von rmarkdown ist besser, um eine tex Datei zu exportieren. Denken Sie daran, keep_tex: yes in der yaml-Kopfzeile Ihrer rmarkdown-Datei hinzuzufügen.

%Vor%     
Bangyou 21.04.2015, 21:43
quelle
12

Wie Andrew betont hat, funktioniert fig.pos nicht in Blöcken, aber es funktioniert, wenn es in globale Optionen eingefügt wird:

%Vor%     
Davor Josipovic 26.03.2016 10:06
quelle
10

Update Sehen Sie sich diese bessere Lösung hier an. (Die Zusammenfassung des Problems unten ist immer noch gut, aber folgen Sie dem Link zu einer besseren Lösung).

Um einige Tests in RStudio zusammenzufassen

Das Knitr-Chunk-Argument fig.pos="H" funktioniert, solange fig_caption: yes nicht im yaml-Header ist.

Jede Figur in der generierten .tex sieht so aus

%Vor%

Aber wenn fig_caption: yes im yaml-Header ist, sieht das .tex wie folgt aus

%Vor%

fig.pos = "H" wurde nicht verwendet, "htbp" ist stattdessen vorhanden.

Eine Abhilfe hierfür mit RStudio:

setzen

%Vor%

im yaml sowie

%Vor%

Dann suchen und ersetzen Sie [htbp] durch [H] in der generierten .tex-Datei

Öffnen Sie dann die .tex-Datei in RStudio und verwenden Sie die Schaltfläche "PDF kompilieren".

Beispiel .Rmd

%Vor%     
Andrew 01.09.2015 14:44
quelle
2

Die Option, die für mich funktioniert hat:

In der .tex zu Beginn: \usepackage{float} .

Am Anfang der Rmd: knitr::opts_chunk$set(fig.pos = 'H') . Die H in Großbuchstaben).

Und in jedem Chunk mit einem Bild: fig.cap="lorem blabla" und out.extra='' (Parameterwert = leere Zeichenkette).

Nein muss definiert werden: fig_caption: yes und keep_tex: yes in der yaml.

Mit diesen Optionen behält das Bild seine Position bei, entweder für include_graphics und die von R-Code erzeugten Plots.

Ich habe sie in der bookdown -Umgebung verwendet und das PDF und das HTML wie erwartet erzeugt:)

    
pablo_sci 22.02.2018 05:53
quelle
1

Obwohl die Antwort von @Bangyou funktioniert, kompliziert es das Stricken.

Sie können auch eine globale Standardoption für die Figurenplatzierung in Latex festlegen, einschließlich Ihrer YAML-Kopfzeile einschließlich:

%Vor%

Wie hier erklärt hier (und hier für den \makeat... -Teil).

Auf diese Weise können Sie einfach den Knit-Button in RStudio oder rmarkdown :: render verwenden und damit fertig werden.

Problem ist, dass alle Zahlen mit H gefüllt werden und du nicht in der Lage bist, einen zu setzen.

    
Oscar de León 02.02.2018 16:00
quelle

Tags und Links