tutorial - r markdown the definitive guide pdf
Rmd/Kntir: Citas de Markdown en entornos LaTeX (2)
Descubrí que si está dispuesto a usar el bookdown::pdf_document2()
, puede usar referencias de texto para resolver este problema sin tener que meterse con LaTeX:
---
title: "Untitled"
output: bookdown::pdf_document2
header-includes:
- /usepackage{threeparttable}
- /usepackage{booktabs}
- /usepackage{longtable}
references:
- id: rao2001basic
title: Basic Research in Parapsychology
author:
- family: Rao
given: K.R.
issued:
year: 2001
publisher: McFarland
type: book
---
(ref:tablenote)
This table was created by @rao2001basic.
/begin{table}[h]
/centering
/begin{threeparttable}
/caption{A summary table of the cars dataset.}
/begin{tabular}{lrr}
/toprule
Descriptives & speed & dist//
/midrule
Mean & 15.4 & 42.98//
SD & 5.29 & 25.77//
Min & 4 & 2//
Max & 25 & 120//
/bottomrule
/end{tabular}
/tablenotes{/item/textit{Note.} (ref:tablenote)}
/end{threeparttable}
/end{table}
Esto funciona incluso cuando las tablas se crean en R:
```{r results = "asis"}
knitr::kable(mtcars[1:3, ], caption = "(ref:tablenote)")
```
Quiero crear un threeparttable
en un documento Rmd / Knitr y agregar una nota al final de la tabla. La tabla se crea mediante una función R dentro de un fragmento con results = "asis"
. No agregué la función al ejemplo de trabajo porque es bastante detallado y el problema es evidente a partir del código LaTeX puro.
Esto funciona y el resultado se ve como se esperaba.
---
title: "Untitled"
output: pdf_document
header-includes:
- /usepackage{threeparttable}
- /usepackage{booktabs}
- /usepackage{longtable}
references:
- id: rao2001basic
title: Basic Research in Parapsychology
author:
- family: Rao
given: K.R.
issued:
year: 2001
publisher: McFarland
type: book
---
/begin{table}[h]
/centering
/begin{threeparttable}
/caption{A summary table of the cars dataset.}
/begin{tabular}{lrr}
/toprule
Descriptives & speed & dist//
/midrule
Mean & 15.4 & 42.98//
SD & 5.29 & 25.77//
Min & 4 & 2//
Max & 25 & 120//
/bottomrule
/end{tabular}
/tablenotes{/item/textit{Note.} This table was created by @rao2001basic. }
/end{threeparttable}
/end{table}
Desafortunadamente, la cita en el título de la tabla no funciona. Funciona bien si lo saco del entorno LaTeX, pero no dentro. ¿Hay alguna manera de analizar Markdown en el entorno LaTeX?
Este tipo de problema es esencialmente un problema de escape o, más bien, un problema de evitación del reconocimiento de inicio / finalización del bloqueo de látex automático de pandoc.
Este caso particular podría escribirse con los comandos del entorno directamente como
/table[h]
/centering
/threeparttable
/caption{A summary table of the cars dataset.}
/begin{tabular}{lrr}
/toprule
Descriptives & speed & dist//
/midrule
Mean & 15.4 & 42.98//
SD & 5.29 & 25.77//
Min & 4 & 2//
Max & 25 & 120//
/bottomrule
/end{tabular}
/tablenotes[flushleft]
/item/textit{Note.} This table was created by @rao2001basic.
/endtablenotes
/endthreeparttable
/endtable
pero si realmente se necesita begin{env}
/ end{env}
entonces las macros se pueden usar de esta manera
/def /btable{/begin{table}}
/def /etable{/end{table}}
/def /bthreeparttable{/begin{threeparttable}}
/def /ethreeparttable{/end{threeparttable}}
/def /btablenotes{/begin{tablenotes}}
/def /etablenotes{/end{tablenotes}}
Sería bueno si existiera una solución genérica robusta para cambiar el nombre de begin{env}
/ end{env}
que pudiera permitir una reducción selectiva dentro de los bloques de texto. Algo como...
/newcommand/mdbegin[2]{%
/ifstrempty{#1}{%
/begin{#2}
}{%
/begin{#1}[#2]
}%
}
/newcommand/mdend[1]{%
/end{#1}
}
que funciona para esto, utilizando el paquete etoolbox
, pero no creo que sea una solución recomendada.