web-dev-qa-db-ja.com

RStudio presentations / slidify / pandocの2列レイアウト

スライドとそれに付随する配布資料を生成するための優れたシステムを考えています。理想的なシステムには次の特性があります。

  • プレゼンテーション(PDF/HTML)レイアウトと配布資料(PDF)レイアウトの両方で美しい(配布資料にはメモを取るためのスペースが必要です)
  • 埋め込みRチャンク、図、その他のJPG/PNG画像など.
  • 作りやすい
  • コマンドラインツールを使用してビルドする
  • 書誌サポート
  • pandocスライドセパレーター形式(指定したレベルのヘッダーの後に新しいスライドを自動的に生成)が推奨されます
  • 私は少しの追加処理で生きることができますが(例えば、sedを介して)、巨大なインフラストラクチャを書くことを好まないでしょう。
  • 2列のレイアウトSOからpandocから複数列のスライドを取得する方法に関する投稿 がありますが、それはLaTeXです-HTML指向ではありません。
  • 埋め込み画像のサイズ(Rで生成された図以外)および列幅をその場で調整する機能

これまでにさまざまなオプションについて発見したことがあります。

  • スライド
    • 回避策があります ですが、pandocスライドセパレーター形式を実行しません
    • 配布資料を作成するための提案は、PDFに印刷することです。メモなどのスペースを残したいです(おそらく、 PDFtk またはpsnup ...のようなものを使用して、それを行う方法を見つけることができます)
  • RStudioプレゼンテーション(.Rpresファイル):
    • 指定された幅の複数列を含む、多くのことをうまく行います
    • pandocスライド区切り形式をサポートしていません
    • ボンネットの下で何が起こっているのかわかりません。 RStudio documentation があり、通常のHTMLの翻訳プロセスを説明していますが、Rプレゼンテーション形式をカバーしていないようです(まったく同じではありません)。 (以前に pandocでRStudioのような出力を取得する方法を設定する ...)にいくつかの努力を注ぎました。これは、コマンドラインからスライドなどを生成できないことを意味します。
  • RStudioの開発バージョン (2014年3月現在)は、Pandocおよびrmarkdownのバージョン2にバンドルされています。 .Rpres形式で上記の問題の多くに対処します。
  • pandoc:は、脚注、参考文献のサポートなどの機能を備えた唯一のマークダウン翻訳機です。また、 tufte-handoutクラスを使用してpandocを使用してLaTeXを生成することもできます 、これは私の美の基準を満たしています。
    • 残念ながら、組み込みの2列形式のサポートはないようです。 Yihui XieのHTML5の例 は2列の例を示しておらず、RStudioで「Knit HTML」ボタンをクリックすることはpandoc -s -S -i -t dzslides --mathjax knitr-slides.md -o knitr-slides.htmlと同等であると主張していますが(スライド5)そうではないようです...
  • LaTeX/beamer:最初はRマークダウンではなくRnw(knitr-dialect Sweave)で作成できました。これにより、究極の柔軟性が得られます...
    • 長年のLaTeXの使用にもかかわらず、私はLaTeXの構成がマークダウンの構成よりも苦痛であることに気付きました。

その後、私の特定の質問は次のとおりです。HTML出力用の2列レイアウトを生成する最良の(最も簡単な)方法は何ですか

その他のアドバイスも歓迎します。

58
Ben Bolker

私は、少なくともioslidesベースのソリューションに、そしておそらく(?)他のHTML5ベースのフォーマットに適用すべき合理的なソリューションだと思うものを手に入れました。 here を開始して、追加しました

<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; }

代わりに働いた(私はテストしていない...)

12
Ben Bolker

これは古いQですが、最近似たような質問に悩まされました。ここに私が見つけたものがあります:

RPres形式を使用すると、2つの列をそのように指定できます( details )。 RPresは、RStudioのボタンをクリックすることによってのみHTMLに変換できることに注意してください。コマンドラインメソッドはないようで、少し面倒です。それにもかかわらず、私はそれが現在、マークダウンでスライド列を取得するための最も簡単で最も柔軟な方法だと思います:

=== 

Two Column Layout  
===

This slide has two columns

***

```{r, echo=FALSE}
plot(cars)
```

enter image description here

列の比率を調整することにより、ある程度の柔軟性が得られます。

===

Two Column Layout  
===
left: 30%
This slide has two columns

***

```{r, echo=FALSE}
plot(cars)
```

enter image description here

Rmarkdownを使用すると2つの列を取得できますが、ブレークの場所を制御できません。これは少し問題です。

---
output: ioslides_presentation
---


## Two Column Layout  {.columns-2}

This slide has two columns


```{r, echo=FALSE}
plot(cars)
```

enter image description here

RStudioでbeamer_presentation形式を使用してRmdファイルにマークダウンとLaTeXを混在させて、次のような2つの列を取得することもできますが、どちらの列でもコードを実行できません。

---
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}

enter image description here

このマークダウンハイブリッドではなく、LaTexを使用する場合は、通常のRnw LaTeX docが列を取得するための最良の方法のようです(cf. 2列ビーマー/グリッドグラフィック付きのスライド

上記のすべてで、画像を列に配置できます。

Slidify Webサイトには、2つの列を作成する手順が記載されています。 http://slidify.org/customize.html しかし、asset/layoutsフォルダーに入れて機能させるには何が必要かは明確ではありません

28
Ben

[〜#〜] here [〜#〜] からアイデアを得ました。基本的な解決策は次のとおりです。


### 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>`

7
Rafa

ビーマーエラーには 回避策 があります。

つまり、エラーはpandoc変換エンジンに関連しており、\begin{...}\end{...}の間のすべてをTeXとして処理します。 yamlヘッダーのbegin{column}end{column}に新しい定義を与えることで回避できます。

Mystyle.texを作成して書き込みます:

\def\begincols{\begin{columns}}
\def\begincol{\begin{column}}
\def\endcol{\end{column}}
\def\endcols{\end{columns}}

Rmdファイルでは、これらの新しいdefinitionsを使用します

---
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

そして、あなたは得る: enter image description here

6

これまでのところ、rmd形式の上に自分の小さなマークアップをハッキングするよりもうまくやることができませんでした。ソースファイルを呼び出しますrmd0およびsed tidbitを含むスクリプトを実行して、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>/' ...

私はこれが好きではないいくつかの理由があります。 (1)それはくて特別な目的であり、オプションの引数(たとえば、列の相対的な幅、配置など)を許可する特に良い方法はありません。 (2)出力形式ごとに調整する必要があります(たとえば、LaTeX/beamer出力が必要な場合は、\begin{columns}\begin{column}{5cm} ... \end{column}\begin{column}{5cm} ... \end{column}\end{columns}代わりに(LaTeX形式の配布資料を作成するときに2列の形式を無視したいので、少し簡単になりますが、それでもstillいです)。

Slidifyはまだ答えかもしれません。

3
Ben Bolker

fenced_divs 表記または:::列または「2つのコンテンツレイアウト」を作成します。表記法の詳細については、 このページ も参照してください。

## 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...
```
::::

:::

pandoc 2+は、表記法をサポートし、RStudio v1.2+、インストールが必要な場合があります RStudio v1.2+ 最初。インストールは非常に簡単です(少なくとも私の場合)。ただダウンロードしてインストールするRStudio v1.2+。インストールの過程で、コンピューター上のRStudioの以前のバージョンは、手動でアンインストールせずに新しいバージョンに置き換えられます。

:::表記は、編むときでも使用できます.Rmdファイルとbeamer_presentationオプション、およびHTMLスライドを作成するとき。したがって、1つのファイルにマークダウン表記とLaTeX表記を混在させたり、コードを追加したりする必要はありません。他の.Rmd他のオプション付き。

1

直接的な解決策ではありませんが、YihuiのXaringanパッケージ https://github.com/yihui/xaringan/ は私にとってはうまくいきます。 remark.jsに基づいています。デフォルトのテンプレートでは、.pull-left[]および.pull-right[]を使用できます。例: https://slides.yihui.name/xaringan/#15 。既存の.rmdファイルに対して最小限の調整のみが必要です。

0
yszhou