tutorial sheet font false don chunk cheat r knitr r-markdown

sheet - r markdown don''t show output



¿Cómo mantener la posición de la figura con el título de la figura en la salida pdf de knitr? (8)

Estoy usando knitr (1.9.5 y 1.9.17) y rmarkdown (0.5.3.1), y me gustaría mantener la posición de la figura en la salida de pdf. El archivo pdf generado funciona bien cuando se fig.pos="H" opción de fragmento fig.pos="H" .

Sin embargo, la posición de la figura no se mantiene cuando fig_caption: yes se establece en el encabezado yaml.

¿Cómo debo solucionar este problema? Gracias por cualquier sugerencia

EDITAR:

Después de aprender el entorno flotante de látex. Agrego el paquete float en el encabezado.

/usepackage{float}

Pero el archivo tex generado siempre usa htbp en el entorno de la figure respecto a cualquier opción fig.pos . Después de cambiar manualmente htbp a H , se mantienen las posiciones de todas las figuras.

Este es mi ejemplo de archivo rmd:

--- title: "Untitled" output: pdf_document: fig_caption: yes includes: in_header: mystyles.sty --- # Section 1 Note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot. Note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot. Note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot. Note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot. ```{r fig1, echo=FALSE, fig.height=8.5, fig.pos="H"} plot(cars) ``` # Section 2 More test ```{r fig2, echo=FALSE, fig.height=8.5, fig.pos="H"} plot(cars) ``` # Section 3 ```{r fig3, echo=FALSE, fig.height=8.5, fig.pos="H"} plot(cars) ``` More test


Aunque la respuesta proporcionada por @Bangyou funciona, complica el tejido.

También puede establecer una opción predeterminada global para la colocación de figuras en látex, incluida esta en su encabezado YAML que incluye:

/makeatletter/renewcommand*{/fps@figure}{H}/makeatother

Como se explica here (y here para la parte /makeat... ).

De esta manera, solo puede usar el botón de punto en RStudio o rmarkdown :: render y listo.

El problema es que todas las figuras se forzarán con H y no podrás configurar una para flotar.


Como Andrew señaló, este fig.pos no funciona en trozos, pero funciona si se coloca en opciones globales:

```{r global_options, include=FALSE} knitr::opts_chunk$set(fig.pos = ''H'') ```

EDITAR: lo anterior aparentemente solía funcionar y necesita /usepackage{float} en el preámbulo:

header-includes: /usepackage{float}

Ver también here .


Como Yihui mencionó en su respuesta ( Posición de la figura en el marcado al convertir a PDF con knitr y pandoc ), no podemos esperar demasiado sobre el formateo desde el mardown. Para solucionar este problema, solo escriba algunos scripts R para reemplazar htbp por H

En comparación con el paquete knit from knitr, descubrí que render desde rmarkdown es mejor para exportar un archivo tex . Solo recuerde agregar keep_tex: yes en el encabezado yaml de su archivo rmarkdown.

library(rmarkdown) render(''filepath.Rmd'') x <- readLines(''filepath.tex'') pos <- grep(''begin//{figure//}//[htbp//]'', x) x[pos] <- gsub(''htbp'', ''H'', x[pos]) writeLines(x, ''filepath.tex'') tools::texi2pdf(''filepath.tex'', clean = TRUE) # gives foo.pdf file.remove(''filepath.tex'')


El código de la posición de la Figura en Markdown cuando se convierte a PDF con knitr y pandoc me ayuda, ayuda a cualquier persona a encontrarlo útil.

--- title: "Example" author: "Martin" output: pdf_document --- ```{r} knitr::knit_hooks$set(plot = function(x, options) { knitr::hook_plot_tex(x, options) }) ``` ```{r myplot, echo=FALSE, results=''hide'', fig.cap=''Test'', fig.pos=''h''} library(ggplot2) ggplot(mtcars, aes(mpg, drat)) + geom_point() ```


En caso de que alguien más se encuentre con este hilo, tuve que usar la minúscula ''h'' y funcionó en la versión R 3.5.3 y latex 2018.

```{r, echo=FALSE, fig.pos="h"} plot(cars) ```


La opción que funcionó para mí:

En el .tex poner al principio: /usepackage{float} .

Al comienzo de la Rmd: knitr::opts_chunk$set(fig.pos = ''H'') . La H en mayúscula).

Y en cada fragmento con una imagen: fig.cap="lorem blabla" y out.extra='''' (valor del parámetro = cadena vacía).

No es necesario definir: fig_caption: yes y keep_tex: yes en el yaml.

Estas opciones hacen que la imagen mantenga su posición, ya sea para include_graphics y los gráficos generados por el código R.

Los usé en el entorno bookdown , generando el pdf y el html como se esperaba :)


Para mí, agregar el paquete float y luego /floatplacement{figure}{H} en YAML resolvió el problema como:

--- title: "test" date: "`r Sys.Date()`" output: pdf_document : keep_tex: true number_sections: true header-includes: /usepackage{booktabs} /usepackage{longtable} /usepackage{array} /usepackage{multirow} /usepackage[table]{xcolor} /usepackage{wrapfig} /usepackage{float} /floatplacement{figure}{H} ---


Actualización mira esta mejor solución here . (El resumen del problema a continuación sigue siendo bueno, pero siga el enlace a una solución mejor).

Para resumir algunas pruebas en RStudio

El argumento knitr chunk fig.pos = "H" funciona siempre que fig_caption: yes no está en el encabezado yaml.

Cada figura en el .tex generado se ve así

/subsection{my_section}/label{my_section} /includegraphics{path_to_fig.pdf}

Pero si fig_caption: yes está en el encabezado yaml, el .tex se ve así

/subsection{my_section}/label{my_section} /begin{figure}[htbp] /centering /includegraphics{path_to_fig.pdf} /caption{} /end{figure}

fig.pos = "H" no se ha utilizado, "htbp" está allí en su lugar.

Una solución para esto usando RStudio:

poner

fig_caption: yes keep_tex: yes

tanto en el ñame como en

header-includes: /usepackage{float}

luego busque y reemplace [htbp] con [H] en el archivo .tex generado

luego abra el archivo .tex en RStudio y use el botón "Compilar PDF".

Ejemplo .Rmd

--- title: "Testing fig placement with captions" author: "Andrew Dolman" date: "1 September 2015" output: pdf_document: fig_caption: yes keep_tex: yes header-includes: /usepackage{float} --- This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>. When you click the **Knit** button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this: ```{r} summary(cars) ``` You can also embed plots, for example: ```{r, echo=FALSE, fig.pos="H"} plot(cars) ``` Note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot. ```{r, echo=FALSE, fig.pos="H"} plot(cars) ```