RStudio प्रस्तुतियों में दो-स्तंभ लेआउट/स्लाइड/पैंडोक




knitr r-markdown (6)

बीमर त्रुटि के लिए एक workaround

संक्षेप में: त्रुटि पंडोक रूपांतरण इंजन से संबंधित है, जो TeX के रूप में \end{...} start \begin{...} और \end{...} बीच सब कुछ व्यवहार करता है। येल हेडर में begin{column} और end{column} लिए नई परिभाषा देकर इसे टाला जा सकता है।

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

और आपको मिलता है:

मैं स्लाइड पैदा करने और हैंडआउट्स के लिए एक अच्छी प्रणाली के साथ आने की कोशिश कर रहा हूं। आदर्श प्रणाली में निम्नलिखित गुण होंगे:

  • दोनों प्रस्तुति में सुंदर (पीडीएफ / एचटीएमएल) और हैंडआउट (पीडीएफ) लेआउट (नोट्स लेने के लिए हैंडआउट में जगह होनी चाहिए)
  • एम्बेडेड आर चंक्स, आंकड़े, अन्य JPG / PNG चित्र, आदि।
  • रचना करना आसान है
  • कमांड लाइन टूल का उपयोग करके निर्माण करें
  • ग्रंथ सूची का समर्थन
  • pandoc स्लाइड विभाजक प्रारूप (स्वचालित रूप से एक निर्दिष्ट स्तर के हेडर के बाद एक नई स्लाइड उत्पन्न करता है) को प्राथमिकता दी जाती है
  • मैं थोड़े अतिरिक्त प्रसंस्करण (जैसे sed माध्यम से) के साथ रह सकता हूं, लेकिन एक बड़ी बुनियादी संरचना नहीं लिखना पसंद करूंगा
  • दो-स्तंभ लेआउट : पंडोक से बहु-स्तंभ स्लाइड कैसे प्राप्त करें, पर एक एसओ पोस्ट है , लेकिन यह HTML-उन्मुख के बजाय LaTeX- है।
  • मक्खी पर एम्बेडेड छवियों (आर-जनित आंकड़ों के अलावा) और स्तंभ की चौड़ाई के आकार को समायोजित करने की क्षमता

यहां मैंने विभिन्न विकल्पों के बारे में अब तक की खोज की है:

  • स्लाइड करें :
    • स्लाइड विभाजक प्रारूप नहीं करता है, हालांकि एक समाधान है
    • हैंडआउट बनाने का सुझाव पीडीएफ को प्रिंट करना है; मैं नोट्स आदि के लिए जगह छोड़ना चाहूंगा (मैं शायद ऐसा करने के लिए एक तरीका खोज सकता हूं कि PDFtk या psnup जैसी किसी चीज़ का उपयोग करके ...)
  • RStudio प्रस्तुतियाँ ( .Rpres फ़ाइलें):
    • निर्दिष्ट चौड़ाई के साथ मल्टी-कॉलम सहित अच्छी तरह से बहुत सी चीजें करता है
    • pandoc स्लाइड विभाजक प्रारूप का समर्थन नहीं करता है
    • मैं समझ नहीं पा रहा हूं कि हुड के नीचे क्या चल रहा है। RStudio प्रलेखन है जो नियमित HTML के लिए अनुवाद प्रक्रिया का वर्णन करता है, लेकिन यह R प्रस्तुति प्रारूप को कवर नहीं करता है (जो कि समान नहीं है)। (मैंने पहले यह जानने के लिए कुछ प्रयास किए हैं कि RStudio जैसी आउटपुट को पंडोक के माध्यम से कैसे प्राप्त किया जाए ...), जिसका अर्थ है कि मैं कमांड लाइन से स्लाइड आदि नहीं बना सकता।
  • RStudio का डेवलपमेंट वर्जन (मार्च 2014 तक) पांडोक और रेकॉर्ड 2 के rmarkdown के साथ rmarkdown । यह .Rpres प्रारूप के साथ उपरोक्त मुद्दों में से कई को संबोधित करता है।
  • pandoc : pandoc हो सकता है, जिसमें फुटनोट्स, ग्रंथ सूची समर्थन आदि जैसी विशेषताएं हैं। मैं टफ्ट-हैंडआउट वर्ग का उपयोग करके LaTeX उत्पन्न करने के लिए pandoc का भी उपयोग कर सकता हूं, जो मेरी सुंदरता के मानदंडों को पूरा करता है।
    • दुर्भाग्य से, ऐसा लगता है कि इसमें निर्मित दो-स्तंभ प्रारूप का समर्थन नहीं है। Yihui Xie का HTML5 उदाहरण कोई दो-स्तंभ उदाहरण नहीं दिखाता है, और यह दावा करता है (स्लाइड 5 पर) कि RStudio में "निट एचटीएमएल" बटन पर क्लिक करना pandoc -s -S -i -t dzslides --mathjax knitr-slides.md -o knitr-slides.html , लेकिन यह प्रतीत नहीं होता है ...
  • LaTeX / beamer: मैं बस Rnw (knitr-dialea Sweave) में रचना कर सकता हूं बजाय आर मार्केड के साथ शुरू करने के लिए। यह मुझे परम लचीलापन देगा ...
    • LaTeX के कई वर्षों के उपयोग के बावजूद मुझे लगता है कि LaTeX संरचना को मार्कडाउन रचना की तुलना में अधिक दर्द है।

आखिरकार, मेरा विशिष्ट प्रश्न है: HTML आउटपुट के लिए दो-स्तंभ लेआउट बनाने का सबसे अच्छा (सबसे आसान) तरीका क्या है?

किसी अन्य सलाह की भी सराहना की जाएगी।


आप स्तंभ या `दो सामग्री लेआउट 'बनाने के लिए fenced_divs संकेतन या ::: का उपयोग कर सकते हैं। अंकन के बारे में अधिक जानने के लिए यह पृष्ठ भी देखें।

## 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 स्लाइड बनाते हैं। इसलिए हमें न तो मार्कडाउन और LaTeX नोटेशन को एक फाइल में मिलाना है, न ही अतिरिक्त कोड जोड़ना है: बस फाइल को बुनना है क्योंकि आप दूसरे को .Rmd हैं। अन्य विकल्पों के साथ।


यह एक पुराना क्यू है, लेकिन मैं हाल ही में एक ऐसे ही सवाल से त्रस्त था, यहाँ मुझे क्या मिला:

आरपीआरएस प्रारूप का उपयोग करते हुए, दो कॉलम निर्दिष्ट किए जा सकते हैं जैसे ( 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)
```

रेकॉर्ड के साथ हम दो कॉलम प्राप्त कर सकते हैं, लेकिन जहां ब्रेक है, उस पर कोई नियंत्रण नहीं है, जो कि एक समस्या है:

---
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 का उपयोग करना चाहते हैं, न कि यह मार्कडाउन हाइब्रिड (cf. दो कॉलम बीमर / ग्रिड ग्राफिक के साथ स्वेव स्लाइड )

उपरोक्त सभी में एक छवि को एक कॉलम में रखा जा सकता है।

इस वेबसाइट के दो कॉलम बनाने के निर्देश यहां दिए गए हैं: http://slidify.org/customize.html लेकिन यह स्पष्ट नहीं है कि इसे बनाने के लिए संपत्ति / लेआउट फ़ोल्डर में क्या जाना है


मेरे पास अब ऐसा है जो मुझे लगता है कि एक उचित समाधान है जो कम से कम ioslides आधारित समाधानों पर लागू होना चाहिए, और शायद अन्य HTML5- आधारित प्रारूपों के लिए (?)। here शुरू करते 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} साथ {.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; }

इसके बजाय काम किया (मैंने परीक्षण नहीं किया है ...)


अब तक मैं rmd प्रारूप के शीर्ष पर अपने स्वयं के थोड़े से मार्कअप को हैक करने से बेहतर नहीं कर सका: मैं अपने स्रोत फ़ाइल rmd0 कॉल करता हूं और स्क्रिप्ट को rmd से पहले rmd अनुवाद करने के लिए इस sed tidbit सहित एक स्क्रिप्ट rmd :

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 / बीमर आउटपुट चाहिए था तो मुझे \begin{columns}\begin{column}{5cm} ... \end{column}\begin{column}{5cm} ... \end{column}\end{columns} इसके बजाय (जैसा कि यह पता चला है कि मैं दो कॉलम स्वरूपण को अनदेखा करना चाहता हूं जब मैं LaTeX- प्रारूप हैंडआउट बनाता हूं, तो यह थोड़ा आसान है, लेकिन यह अभी भी है बदसूरत)।

स्लाइड का जवाब अभी तक हो सकता है।


प्रत्यक्ष समाधान नहीं है, लेकिन Xaringan का Xaringan पैकेज https://github.com/yihui/xaringan/ मेरे लिए काम करता है। यह remark.js पर आधारित है। remark.js डिफ़ॉल्ट टेम्पलेट में, आप .pull-left[] और। .pull-right[] उपयोग कर सकते हैं। उदाहरण: https://slides.yihui.name/xaringan/#15 आपको केवल मौजूदा .rmd फ़ाइलों पर न्यूनतम ट्वीक की आवश्यकता है।