J'essaie de mettre au point un bon système pour générer des diapositives et des documents d'accompagnement. Le système idéal aurait les propriétés suivantes:
pandoc
format de séparateur de diapositives (générer automatiquement une nouvelle diapositive après les en-têtes d'un niveau spécifié) est préférablesed
), mais je préférerais ne pas écrire une énorme infrastructureVoici ce que j'ai découvert jusqu'à présent sur les différentes options:
pandoc
, bien que il existe une solution de contournementpsnup
...)RStudio
présentations (fichiers .Rpres
): pandoc
rmarkdown
. Elle résout bon nombre des problèmes ci-dessus liés au format .Rpres
.pandoc
: peut être le seul traducteur de démarques qui comporte des fonctionnalités telles que les notes de bas de page, le support bibliographique, etc. Je peux également utiliser pandoc
pour générer LaTeX en utilisant le tufte-handout class , qui répond à mes critères de beauté. pandoc -s -S -i -t dzslides --mathjax knitr-slides.md -o knitr-slides.html
, mais ce ne semble pas être le cas. ..Rnw
(sweave-dialecte) en lieu et place de R markdown pour commencer. Cela me donnerait une flexibilité ultime ... Après tout cela, ma question spécifique est la suivante: quel est le meilleur moyen (le plus simple) de générer une mise en page à deux colonnes pour la sortie HTML}?
Tout autre conseil sera également apprécié.
J'ai maintenant ce que je pense est une solution raisonnable qui devrait s'appliquer au moins aux solutions ioslides
, et peut-être (?) À d'autres formats basés sur HTML5. En commençant ici , j’ai ajouté
<style>
div#before-column p.forceBreak {
break-before: column;
}
div#after-column p.forceBreak {
break-after: column;
}
</style>
au début de mon document; puis placer <p class="forceBreak"></p>
dans une diapositive avec {.columns-2}
coupe la colonne à ce point, par exemple.
## Latin hypercube sampling {.columns-2}
- sample evenly, randomly across (potentially many) uncertain parameters
<p class="forceBreak"></p>
![](LHScrop.png)
[User:Saittam, Wikipedia](https://commons.wikimedia.org/wiki/File:LHSsampling.png#/media/File:LHSsampling.png)
Il y a peut-être un moyen encore meilleur, mais ce n'est pas trop douloureux.
@ChrisMerkord souligne dans ses commentaires que
.forceBreak { -webkit-column-break-after: always; break-after: column; }
travaillé à la place (je n'ai pas testé ...)
C'est un vieux Q, mais une question similaire m'a récemment posé problème, voici ce que j'ai trouvé:
En utilisant le format RPres, deux colonnes peuvent être spécifiées comme suit ( détails ). Notez que les fichiers RPres ne peuvent être convertis au format HTML qu'en cliquant sur un bouton dans RStudio, il ne semble exister aucune méthode de ligne de commande, ce qui est un peu gênant. Malgré cela, je dirais que c'est actuellement la méthode la plus simple et la plus flexible pour obtenir des colonnes de diapositives avec markdown:
===
Two Column Layout
===
This slide has two columns
***
```{r, echo=FALSE}
plot(cars)
```
Une certaine souplesse est obtenue en ajustant les proportions de la colonne:
===
Two Column Layout
===
left: 30%
This slide has two columns
***
```{r, echo=FALSE}
plot(cars)
```
Avec rmarkdown, nous pouvons obtenir deux colonnes, mais sans aucun contrôle sur la position de la rupture, ce qui pose un problème:
---
output: ioslides_presentation
---
## Two Column Layout {.columns-2}
This slide has two columns
```{r, echo=FALSE}
plot(cars)
```
Nous pouvons également mélanger markdown et LaTeX dans un fichier Rmd en utilisant le format beamer_presentation
dans RStudio pour obtenir deux colonnes de ce type, mais nous ne pouvons exécuter aucun code dans l'une ou l'autre colonne, ce qui constitue une limitation:
---
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}
On dirait qu’une documentation Rnw LaTeX classique est le meilleur moyen d’obtenir des colonnes si vous souhaitez utiliser LaTex, et non cet hybride avec démarquage (cf. deux colonnes/diapo sweave avec graphique en grille )
Dans tout ce qui précède, une image peut être placée dans une colonne.
Le site Web de slidify contient des instructions pour créer deux colonnes ici: http://slidify.org/customize.html mais on ne sait pas exactement ce qui doit être placé dans le dossier assets/layouts pour que cela fonctionne.
Il y a un solution de contournement pour l'erreur de beamer.
En bref: Error est lié au moteur de conversion pandoc, qui traite tout ce qui est entre \begin{...}
et \end{...}
comme TeX. Il peut être évité en donnant une nouvelle définition pour begin{column}
et end{column}
dans l'en-tête yaml.
Créez mystyle.tex et écrivez-là:
\def\begincols{\begin{columns}}
\def\begincol{\begin{column}}
\def\endcol{\end{column}}
\def\endcols{\end{columns}}
Dans le fichier Rmd, utilisez ces nouveaux définitions
---
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
J'ai eu une idée de ICI , les solutions de base étaient:
### Function *inner_join*
. . .
`<div style="float: left; width: 50%;">`
``` {r, echo = FALSE, results = 'markup', eval = TRUE}
kable(cbind(A,B))
```
`</div>`
`<div style="float: right; width: 50%;">`
```{r, echo = TRUE, results = 'markup', eval = TRUE}
inner_join(A,B, by="C")
```
`</div>`
Jusqu’à présent, je n’ai pas pu faire mieux que de pirater mon propre petit supplément au format rmd
: j’appelle mon fichier source rmd0
et exécute un script comprenant ce marqueur sed
pour le traduire en rmd
avant d’appeler knit
:
sed -e 's/BEGIN2COLS\(.*\)/<table><tr><td style="vertical-align:top; width=50%" \1>/' \
-e 's/SWITCH2COLS/<\/td><td style="vertical-align:top">/' \
-e 's/END2COLS/<\/td><\/tr><\/table>/' ...
Il y a quelques raisons pour lesquelles je n'aime pas ça. (1) C’est moche et à des fins spéciales, et je ne dispose pas d’un moyen particulièrement efficace d’autoriser les arguments facultatifs (par exemple, la largeur relative des colonnes, l’alignement, etc.). (2) Il doit être peaufiné pour chaque format de sortie (par exemple, si je voulais une sortie LaTeX/beamer, je devrais plutôt remplacer \begin{columns}\begin{column}{5cm} ... \end{column}\begin{column}{5cm} ... \end{column}\end{columns}
(car il s'avère que je veux ignorer le formatage à deux colonnes lorsque je crée des documents au format LaTeX, donc c'est un peu plus facile, mais c'est quand même moche).
Slidify peut encore être la réponse.
Ce n'est pas une solution directe, mais le paquet Xaringan
de Yihui https://github.com/yihui/xaringan/ fonctionne pour moi. C'est basé sur remark.js
. Dans le modèle par défaut, vous pouvez utiliser .pull-left[]
et .pull-right[]
. Exemple: https://slides.yihui.name/xaringan/#15 . Vous n'avez besoin que d'un minimum de modifications sur les fichiers .rmd
existants.
Vous pouvez utiliser fenced_divs
notation ou :::
pour créer des colonnes ou une "disposition à deux contenus". Voir aussi cette page pour en savoir plus sur la notation.
## Slide With Image Left
::: columns
:::: column
left
::::
:::: column
right
```{r your-chunk-name, echo=FALSE, fig.cap="your-caption-name"}
knitr::include_graphics("your/figure/path/to/the-image.pdf")
#The figure will appear on the right side of the slide...
```
::::
:::
Puisque pandoc 2+
, qui prend en charge la notation, a été implémenté dans RStudio v1.2+
, vous devrez peut-être installer RStudio v1.2+
first. L'installation est assez facile (du moins dans mon cas); il suffit de télécharger et d'installer RStudio v1.2+
. Lors de l'installation, l'ancienne version de RStudio
sur votre ordinateur sera remplacée par la nouvelle sans la désinstaller manuellement.
La notation :::
peut être utilisée même lorsque vous tricotez des fichiers .Rmd
avec l'option beamer_presentation
, ainsi que lorsque vous créez des diapositives HTML. Nous n’avons donc pas besoin de mélanger Markdown et la notation LaTeX dans un fichier, ni d’ajouter des codes supplémentaires: il suffit de tricoter le fichier comme vous le feriez avec .Rmd
avec d’autres options.