układy dwukolumnowe w prezentacjach RStudio / slidify / pandoc
Staram się wymyślić dobry system do generowania slajdów i towarzyszących ulotek. Układ idealny miałby następujące właściwości:
-
[16]} piękne zarówno w układach prezentacji (PDF/HTML), jak i rozdawania (PDF) (rozdawania powinny mieć miejsce na robienie notatek)
- embedded r, figures, other JPG / PNG pictures, etc.
- łatwy w komponowaniu
- budowanie przy użyciu narzędzi wiersza poleceń
- Bibliografia
-
pandoc
separator slajdów format (automatycznie generuje nowy slajd po nagłówkach określonego poziomu) jest preferowany - mogę żyć z odrobiną dodatkowego przetwarzania (np. przez
sed
), ale wolałbym nie pisać ogromnej infrastruktury - dwukolumnowe układy : jest więc post o tym, jak uzyskać wielokolumnowe slajdy z pandoc , ale jest to raczej LaTeX-a nie HTML - oriented.
- możliwość dostosowania rozmiarów osadzonych obrazów (innych niż ryciny generowane przez R) i kolumn szerokość w locie
Oto, co odkryłem do tej pory o różnych opcjach:
-
Slidify :
- nie obsługuje formatu
pandoc
slide separator, chociaż istnieje obejście - sugestią tworzenia ulotek jest wydruk do PDF; chciałbym zostawić miejsce na notatki itp. (Prawdopodobnie mógłbym wymyślić sposób, aby to zrobić, używając czegoś takiego jak PDFtk lub
psnup
...)
- nie obsługuje formatu
-
RStudio
prezentacje (.Rpres
Pliki):- robi wiele rzeczy ładnie, w tym wiele kolumn o określonych szerokościach
- nie obsługuje formatu separatora slajdów Nie wiem, co się dzieje pod maską. Istnieje dokumentacja RStudio , która opisuje proces tłumaczenia dla zwykłego HTML, ale wydaje się, że nie obejmuje formatu prezentacji R (który nie jest taki sam). (Wcześniej zainwestowałem trochę wysiłku w zastanawiając się, jak uzyskać RStudio-jak wyjście poprzez pandoc ...), co oznacza, że nie mogę generować slajdów itp. z linii poleceń.
rmarkdown
. Rozwiązuje wiele z powyższych problemów za pomocą formatu .Rpres
.pandoc
: może być jedynym tłumaczem markdown, który ma funkcje takie jak Przypisy, obsługa bibliografii itp.. Można również użyć pandoc
do generowania lateksu przy użyciu klasy tufte-handout , która spełnia moje kryteria piękna.
- niestety, wydaje się, że nie ma wbudowanej obsługi formatu dwukolumnowego. przykład HTML5 Yihui Xie nie pokazuje żadnych dwukolumnowych przykładów i twierdzi (na slajdzie 5), że kliknięcie przycisku "Knitt HTML" w RStudio jest równoważne
pandoc -s -S -i -t dzslides --mathjax knitr-slides.md -o knitr-slides.html
, ale wydaje się, że tak nie jest ...
Rnw
(Knitr-dialekt Sweave), a nie R markdown na początek. To da mi ostateczny elastyczność ...
- pomimo wielu lat używania lateksu uważam, że skład lateksu jest bardziej bolesny niż skład markdown.
Po tym wszystkim, moje konkretne pytanie brzmi: jaki jest najlepszy (najłatwiejszy) sposób wygenerowania dwukolumnowego układu dla wyjścia HTML?
Wszelkie inne rady również będą mile widziane.5 answers
To jest stare Q, ale ostatnio dręczyło mnie podobne pytanie, oto co znalazłem:
Używając formatu RPres, można określić dwie kolumny w ten sposób (details ). Zauważ, że RPres może być konwertowany tylko do HTML poprzez kliknięcie przycisku w RStudio, nie wydaje się, aby była jakaś metoda wiersza poleceń, co jest trochę irytujące. Pomimo, że powiedziałbym, że jest to obecnie najprostsza i najbardziej elastyczna metoda uzyskiwania kolumn slajdów z markdown:
===
Two Column Layout
===
This slide has two columns
***
```{r, echo=FALSE}
plot(cars)
```
Pewną elastyczność zapewnia Regulacja proporcji kolumn:
===
Two Column Layout
===
left: 30%
This slide has two columns
***
```{r, echo=FALSE}
plot(cars)
```
Z rmarkdown możemy uzyskać dwie kolumny, ale bez kontroli nad tym, gdzie jest przerwa, co jest trochę problemem:
---
output: ioslides_presentation
---
## Two Column Layout {.columns-2}
This slide has two columns
```{r, echo=FALSE}
plot(cars)
```
Możemy również mieszać markdown i LaTeX w pliku Rmd używając formatu beamer_presentation
w RStudio, aby uzyskać dwie takie kolumny, ale nie możemy uruchomić żadnego kodu w żadnej kolumnie, co jest ograniczeniem:
---
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}
Wydaje się, że zwykły RNW Latex doc jest najlepszym sposobem, aby uzyskać kolumny, jeśli chcesz użyć LaTex, a nie tej hybrydy markdown (por. dwukolumnowy beamer / sweave slide z Grafiką siatki )
We wszystkich powyższych obrazkach można umieścić w kolumnie.
Strona slidify ma instrukcje dotyczące tworzenia dwóch kolumn tutaj: http://slidify.org/customize.html ale nie jest jasne, co musi znaleźć się w folderze assets/layouts, aby to działało
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:41
Mam teraz to, co uważam za rozsądne rozwiązanie, które powinno mieć zastosowanie przynajmniej do rozwiązań opartych na ioslides
, a może (?) do innych formatów opartych na HTML5. Zaczynając tutaj , dodałem
<style>
div#before-column p.forceBreak {
break-before: column;
}
div#after-column p.forceBreak {
break-after: column;
}
</style>
Do początku mojego dokumentu; następnie umieszczenie {[4] } wewnątrz slajdu z {.columns-2}
łamie kolumnę w tym punkcie, np.
## 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)
Może jest jeszcze lepszy sposób, ale to nie jest zbyt bolesne.
@ ChrisMerkord zaznacza w komentarzach, że
.forceBreak { -webkit-column-break-after: always; break-after: column; }
Pracował zamiast (nie miałem sprawdzone ...)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-10 16:57:20
Wpadłem na pomysł z Tutaj , podstawowe rozwiązania to:
### 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>`
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-20 07:26:21
Istniejeobejście błędu projektora.
W skrócie: błąd związany jest z silnikiem pandoc conversion engine, który traktuje wszystko pomiędzy \begin{...}
i \end{...}
jako TeX. Można tego uniknąć, podając nową definicję begin{column}
i end{column}
w nagłówku yaml.
Twórz stronę mystyle.tex i napisz tam:
\def\begincols{\begin{columns}}
\def\begincol{\begin{column}}
\def\endcol{\end{column}}
\def\endcols{\end{columns}}
W pliku Rmd użyj tych nowych definicji
---
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-21 08:35:59
Do tej pory nie byłem w stanie zrobić lepiej niż hakowanie własnego trochę znaczników na górze rmd
format: nazywam mój plik źródłowy rmd0
i uruchomić skrypt zawierający to sed
tidbit przetłumaczyć go na rmd
przed wywołaniem 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>/' ...
Jest kilka powodów, dla których mi się to nie podoba. (1) to jest brzydkie i celowe, a ja nie mam zbyt dobrego sposobu, aby dopuszczać opcjonalne argumenty (np. względne szerokości kolumn, wyrównanie itp.). (2) musi być poprawiony dla każdego wyjścia formatowanie (np. gdybym chciał wyjście LaTeX/beamer musiałbym zamiast tego zastąpić \begin{columns}\begin{column}{5cm} ... \end{column}\begin{column}{5cm} ... \end{column}\end{columns}
(Jak się okazuje chcę zignorować formatowanie dwukolumnowe, gdy robię materiały w formacie LaTeX, więc jest to trochę łatwiejsze, ale nadal jest brzydkie).
Slidify może być jeszcze odpowiedzią.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-13 23:14:25