Sto cercando di creare un buon sistema per la generazione di diapositive e di allegate dispense. Il sistema ideale avrebbe le seguenti proprietà:
pandoc
formato separatore di diapositive pandoc
(genera automaticamente una nuova diapositiva dopo le intestazioni di un livello specificato) sed
), ma preferirei non scrivere una grande infrastruttura Ecco cosa ho scoperto finora sulle varie opzioni:
pandoc
, anche se esiste una soluzione alternativa psnup
…) RStudio
(file .Rpres
):
pandoc
rmarkdown
. Affronta molti dei problemi precedenti con il formato .Rpres
. pandoc
: potrebbe essere l’unico markdown-traduttore che ha caratteristiche come note a piè di pagina, supporto bibliografico, ecc. Posso anche usare pandoc
per generare LaTeX usando la class tufte-handout , che soddisfa i miei criteri di bellezza.
pandoc -s -S -i -t dzslides --mathjax knitr-slides.md -o knitr-slides.html
, ma non sembra essere … Rnw
(knitr-dialect Sweave) piuttosto che in R markdown per cominciare. Questo mi darebbe la massima flessibilità …
Dopo tutto ciò, la mia domanda specifica è: qual è il modo migliore (più semplice) per generare un layout a due colonne per l’output HTML ?
Qualsiasi altro consiglio sarà apprezzato.
Questa è una vecchia Q, ma di recente mi affliggeva una domanda simile, ecco cosa ho trovato:
Utilizzando il formato RPres, è ansible specificare due colonne in questo modo ( dettagli ). Si noti che gli RPre possono essere convertiti in HTML solo facendo clic su un pulsante in RStudio, non sembra esserci alcun metodo della riga di comando, che è un po ‘fastidioso. Nonostante, direi che è attualmente il metodo più semplice e flessibile per ottenere colonne di diapositive con markdown:
=== Two Column Layout === This slide has two columns *** ```{r, echo=FALSE} plot(cars) ```
Una certa flessibilità è garantita dalla regolazione delle proporzioni della colonna:
=== Two Column Layout === left: 30% This slide has two columns *** ```{r, echo=FALSE} plot(cars) ```
Con rmarkdown possiamo ottenere due colonne, ma senza controllo su dove si trova l’interruzione, che è un po ‘un problema:
--- output: ioslides_presentation --- ## Two Column Layout {.columns-2} This slide has two columns ```{r, echo=FALSE} plot(cars) ```
Possiamo anche mescolare markdown e LaTeX in un file Rmd utilizzando il formato beamer_presentation
in RStudio per ottenere due colonne come questa, ma non è ansible eseguire alcun codice in nessuna colonna, che è una limitazione:
--- output: beamer_presentation --- Two Column Layout ------- \begin{columns} \begin{column}{0.48\textwidth} This slide has two columns \end{column} \begin{column}{0.48\textwidth} If I put any code in here I get an error, see https://support.rstudio.com/hc/communities/public/questions/202717656-Can-we-have-columns-in-rmarkdown-beamer-presentations- \end{column} \end{columns}
Sembra un normale Rnw LaTeX doc è il modo migliore per ottenere le colonne se si desidera utilizzare LaTex, non questo ibrido markdown (vedere la colonna due beamer / sweave slide con griglia grafica )
In tutte le precedenti è ansible posizionare un’immagine in una colonna.
Il sito web di slidify contiene le istruzioni per creare due colonne qui: http://slidify.org/customize.html ma non è chiaro cosa deve andare nella cartella assets / layouts per farlo funzionare
Ora ho quello che penso sia una soluzione ragionevole che dovrebbe applicarsi almeno alle soluzioni ioslides
su ioslides
e forse (?) Ad altri formati basati su HTML5. A partire da qui , ho aggiunto
all’inizio del mio documento; quindi mettendo
all’interno di una diapositiva con {.columns-2}
interrompe la colonna in quel punto, ad es.
## Latin hypercube sampling {.columns-2} - sample evenly, randomly across (potentially many) uncertain parameters  [User:Saittam, Wikipedia](https://commons.wikimedia.org/wiki/File:LHSsampling.png#/media/File:LHSsampling.png)
Potrebbe esserci un modo ancora migliore, ma questo non è troppo doloroso.
@ChrisMerkord sottolinea nei commenti che
.forceBreak { -webkit-column-break-after: always; break-after: column; }
ha funzionato invece (non ho provato …)
Ho avuto un’idea da QUI , le soluzioni di base erano:
### Function *inner_join* . . . `` ``` {r, echo = FALSE, results = 'markup', eval = TRUE} kable(cbind(A,B)) ``` `` `` ```{r, echo = TRUE, results = 'markup', eval = TRUE} inner_join(A,B, by="C") ``` ``
C’è una soluzione alternativa per l’errore di beamer.
In breve: l’errore è legato al motore di conversione pandoc, che tratta tutto tra \begin{...}
e \end{...}
come TeX . Può essere evitato dando una nuova definizione per begin{column}
e end{column}
nell’intestazione yaml.
Crea mystyle.tex e scrivi lì:
\def\begincols{\begin{columns}} \def\begincol{\begin{column}} \def\endcol{\end{column}} \def\endcols{\end{columns}}
Nel file Rmd utilizzare queste nuove definizioni
--- output: beamer_presentation: includes: in_header: mystyle.tex --- Two Column Layout ------- \begincols \begincol{.48\textwidth} This slide has two columns. \endcol \begincol{.48\textwidth} ```{r} #No error here i can run any r code plot(cars) ``` \endcol \endcols
E ottieni:
Finora non sono stato in grado di fare meglio di hackerare il mio pezzettino di markup in cima al formato rmd
: chiamo il mio file sorgente rmd0
ed rmd0
uno script che include questo tidbit per tradurlo in rmd
prima di chiamare knit
:
sed -e 's/BEGIN2COLS\(.*\)//' \ -e 's/SWITCH2COLS/<\/td> /' \ -e 's/END2COLS/<\/td><\/tr><\/table>/' ...
Ci sono alcuni motivi per cui non mi piace. (1) È brutto e per scopi speciali, e non ho un modo particolarmente valido per consentire argomenti opzionali (ad es. Ampiezze relative di colonne, allineamento, ecc.). (2) Deve essere ottimizzato per ogni formato di output (ad es. Se volessi l’output di LaTeX / beamer avrei bisogno di sostituire \begin{columns}\begin{column}{5cm} ... \end{column}\begin{column}{5cm} ... \end{column}\end{columns}
invece (come risulta, voglio ignorare la formattazione a due colonne quando faccio volantini in formato LaTeX, quindi è un po ‘più semplice, ma è ancora brutta).
Slidify potrebbe ancora essere la risposta.