RStudio 프레젠테이션 / slidify / pandoc의 2 열 레이아웃
저는 슬라이드와 함께 제공되는 유인물을 생성 할 수있는 좋은 시스템을 마련하려고합니다. 이상적인 시스템은 다음과 같은 속성을 갖습니다.
- 프레젠테이션 (PDF / HTML) 및 유인물 (PDF) 레이아웃 모두에서 아름답습니다 (유인물에는 메모 할 공간이 있어야 함)
- 임베디드 R 청크, 그림, 기타 JPG / PNG 사진 등
- 작성하기 쉬움
- 명령 줄 도구를 사용하여 빌드
- 참고 문헌 지원
pandoc
슬라이드 구분자 형식 (지정된 수준의 머리글 뒤에 자동으로 새 슬라이드 생성)이 선호됩니다.- 약간의 추가 처리 (예 :를 통해
sed
)로 살 수 있지만 거대한 인프라를 작성하는 것을 선호하지 않습니다. - 2 열 레이아웃 : pandoc에서 다중 열 슬라이드를 얻는 방법에 대한 SO 게시물이 있지만 HTML 지향이 아닌 LaTeX입니다.
- 포함 된 이미지의 크기 (R 생성 그림 제외) 및 열 너비를 즉시 조정하는 기능
다양한 옵션에 대해 지금까지 발견 한 내용은 다음과 같습니다.
- Slidify :
RStudio
프리젠 테이션 (.Rpres
파일) :- 지정된 너비의 여러 열을 포함하여 많은 일을 훌륭하게 수행합니다.
pandoc
슬라이드 구분자 형식을 지원하지 않습니다.- 나는 내부에서 무슨 일이 일어나는지 알 수 없다. 이 RStudio 문서 (완전히 동일하지 않은) 일반 HTML에 대한 번역 프로세스를 설명하지만 R 프레젠테이션 형식을 포함하지 않는 것 같습니다. (이전에 pandoc을 통해 RStudio와 같은 출력을 얻는 방법을 알아내는 데 약간의 노력을 기울 였습니다 ...) 이는 명령 줄에서 슬라이드 등을 생성 할 수 없음을 의미합니다.
- RStudio의 개발 버전 (2014 년 3 월 기준)은 Pandoc 및
rmarkdown
..Rpres
형식 과 관련된 위의 많은 문제를 해결 합니다. pandoc
: 각주, 참고 문헌 지원 등과 같은 기능을 가진 유일한 마크 다운 번역가 일 수 있습니다. 또한 제 미용 기준을 충족pandoc
하는 tufte-handout 클래스를 사용하여 LaTeX를 생성 하는 데 사용할 수 있습니다 .- 안타깝게도 기본 제공되는 2 열 형식 지원이없는 것 같습니다. Yihui Xie의 HTML5 예제 는 2 열 예제를 보여주지 않으며, RStudio에서 "Knit HTML"버튼을 클릭하는 것이와 동일하다고 주장하지만 (슬라이드 5에서)
pandoc -s -S -i -t dzslides --mathjax knitr-slides.md -o knitr-slides.html
...
- 안타깝게도 기본 제공되는 2 열 형식 지원이없는 것 같습니다. Yihui Xie의 HTML5 예제 는 2 열 예제를 보여주지 않으며, RStudio에서 "Knit HTML"버튼을 클릭하는 것이와 동일하다고 주장하지만 (슬라이드 5에서)
- LaTeX / beamer : 처음
Rnw
에는 R 마크 다운 대신 (knitr-dialect Sweave)로 간단히 구성 할 수 있습니다. 이것은 저에게 최고의 유연성을 줄 것입니다 ...- 수년간의 LaTeX 사용에도 불구하고 LaTeX 구성이 마크 다운 구성보다 더 고통 스럽다는 것을 알게되었습니다.
결국 내 구체적인 질문은 HTML 출력을위한 2 열 레이아웃을 생성하는 가장 좋은 (가장 쉬운) 방법은 무엇입니까?
다른 조언도 주시면 감사하겠습니다.
이것은 오래된 Q이지만 최근에 비슷한 질문에 시달렸습니다. 다음은 내가 찾은 것입니다.
RPres 형식을 사용하면 두 개의 열을 이렇게 지정할 수 있습니다 ( details ). RPres는 RStudio에서 버튼을 클릭해야만 HTML로 변환 할 수 있으며, 명령 줄 방법이없는 것처럼 보이며 약간 성가신 일입니다. 그럼에도 불구하고 현재 마크 다운으로 슬라이드 열을 가져 오는 가장 간단하고 유연한 방법이라고 말하고 싶습니다.
===
Two Column Layout
===
This slide has two columns
***
```{r, echo=FALSE}
plot(cars)
```
컬럼 비율을 조정하여 약간의 유연성을 제공합니다.
===
Two Column Layout
===
left: 30%
This slide has two columns
***
```{r, echo=FALSE}
plot(cars)
```
rmarkdown을 사용하면 두 개의 열을 얻을 수 있지만 중단 위치를 제어 할 수 없습니다. 이는 약간의 문제입니다.
---
output: ioslides_presentation
---
## Two Column Layout {.columns-2}
This slide has two columns
```{r, echo=FALSE}
plot(cars)
```
또한 RStudio의 beamer_presentation
형식을 사용하여 Rmd 파일에서 마크 다운과 LaTeX를 혼합하여 다음 과 같은 두 개의 열을 얻을 수 있지만 두 열 모두에서 코드를 실행할 수 없습니다. 이는 제한 사항입니다.
---
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}
일반 Rnw LaTeX 문서는이 마크 다운 하이브리드가 아닌 LaTex를 사용하려는 경우 열을 얻는 가장 좋은 방법 인 것 같습니다 (참조 : 그리드 그래픽이있는 2 열 비머 / 스 위브 슬라이드 )
위의 모든 항목에서 이미지를 열에 배치 할 수 있습니다.
slidify 웹 사이트에는 http://slidify.org/customize.html 이라는 두 개의 열을 만드는 방법에 대한 지침이 있지만 작동하도록하려면 assets / layouts 폴더로 이동 해야하는 항목이 명확하지 않습니다.
이제 적어도 ioslides
기반 솔루션에 적용해야하는 합리적인 솔루션이라고 생각 하고 다른 HTML5 기반 형식에 (?)를 적용해야한다고 생각합니다 . 여기 부터 추가했습니다.
<style>
div#before-column p.forceBreak {
break-before: column;
}
div#after-column p.forceBreak {
break-after: column;
}
</style>
내 문서의 시작 부분까지; 그런 다음 <p class="forceBreak"></p>
슬라이드 안에 넣으면 {.columns-2}
해당 지점에서 열 이 끊어집니다. 예 :
## 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)
더 나은 방법이 있을지 모르지만 너무 고통 스럽지는 않습니다.
@ChrisMerkord는 주석에서 다음과 같이 지적합니다.
.forceBreak { -webkit-column-break-after: always; break-after: column; }
대신 일했습니다 (나는 테스트하지 않았습니다 ...)
여기 에서 아이디어를 얻었 으며 기본 솔루션은 다음과 같습니다.
### 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>`
비머 오류에 대한 해결 방법 이 있습니다 .
한마디로 : 오류가있는 사이에 취급이 모든 pandoc 변환 엔진, 관련이 \begin{...}
와 \end{...}
같은 텍 . 그것은 새로운 정의를 제공함으로써 방지 할 수 있습니다 begin{column}
및 end{column}
YAML 헤더에.
mystyle.tex를 만들고 거기에 작성하십시오.
\def\begincols{\begin{columns}}
\def\begincol{\begin{column}}
\def\endcol{\end{column}}
\def\endcols{\end{columns}}
Rmd 파일에서 이러한 새로운 정의를 사용하십시오.
---
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
지금까지 rmd
형식 위에 내 자신의 약간의 마크 업을 해킹하는 것보다 더 잘할 수 없었습니다 . 소스 파일을 호출 rmd0
하고이 정보를 포함하는 스크립트를 실행하여 호출 sed
하기 rmd
전에 다음 과 같이 변환합니다 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>/' ...
There are a few reasons I don't like this. (1) It's ugly and special-purpose, and I don't have a particularly good way to allow optional arguments (e.g. relative widths of columns, alignment, etc.). (2) It has to be tweaked for each output format (e.g. if I wanted LaTeX/beamer output I would need to substitute \begin{columns}\begin{column}{5cm} ... \end{column}\begin{column}{5cm} ... \end{column}\end{columns}
instead (as it turns out I want to ignore the two-column formatting when I make LaTeX-format handouts, so it's a little easier, but it's still ugly).
Slidify may yet be the answer.
You can use fenced_divs
notation or :::
to create columns or `Two Content layout'. See also this page to know more about the 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...
```
::::
:::
Since pandoc 2+
, which supports the notation, was implemented in RStudio v1.2+
, you may need to install RStudio v1.2+
first. The installation is easy enough (at least in my case); just download and install RStudio v1.2+
. In the way of installation, the former version of RStudio
on your computer will be replaced with the new one without uninstalling it manually.
The :::
notation can be used even when you knit .Rmd
files with beamer_presentation
option, as well as when you create HTML slides. So we don't have to neither mix markdown and LaTeX notation in one file, nor add additional codes any longer: just knit the file as you knit other .Rmd
with other options.
직접적인 솔루션은 아니지만 Yihui의 Xaringan
패키지 https://github.com/yihui/xaringan/ 이 나를 위해 작동합니다. 그것은 기반으로 remark.js
. 기본 템플릿에서 .pull-left[]
및 을 사용할 수 있습니다 .pull-right[]
. 예 : https://slides.yihui.name/xaringan/#15 . 기존 .rmd
파일 에 대한 최소한의 조정 만 필요 합니다.
'IT박스' 카테고리의 다른 글
accepts_nested_attributes_for가 belongs_to와 함께 작동합니까? (0) | 2020.12.13 |
---|---|
Mountain Lion에 Simulator SDK 4.3을 Xcode 4.4에 설치합니다. (0) | 2020.12.13 |
VueJs 템플릿. (0) | 2020.12.13 |
Javac : 경고를 오류로 처리 (0) | 2020.12.13 |
JUnit 테스트 케이스에 대해 MySQL 메모리 내에서 실행하는 방법이 있습니까? (0) | 2020.12.13 |