Rstudio rmarkdown: एक ही पीडीएफ में पोर्ट्रेट और लैंडस्केप लेआउट दोनों




pdf knitr (4)

पिछले समाधानों पर बिल्डिंग, निम्नलिखित समाधान को सहायक header.tex फ़ाइल की आवश्यकता नहीं है। सभी सामग्री .Rmd फ़ाइल में निहित हैं। लाटेक्स कमांड को header-includes में परिभाषित किया गया header-includes वाईएएमएल हेडर header-includes ब्लॉक header-includes । अधिक जानकारी here मिल सकती here

साथ ही, मैंने देखा कि lscape LaTeX पैकेज का उपयोग किसी पृष्ठ की सामग्री को घुमाता है, लेकिन पीडीएफ पेज स्वयं नहीं। यह pdflscape पैकेज का उपयोग कर हल किया गया है।

---
title: "Mixing portrait and landscape WITHOUT a header.tex file"
header-includes:
- \usepackage{pdflscape}
- \newcommand{\blandscape}{\begin{landscape}}
- \newcommand{\elandscape}{\end{landscape}}
output: pdf_document
---

Portrait
```{r}
summary(cars)
```

\newpage
\blandscape
Landscape
```{r}
summary(cars)
```
\elandscape

\newpage
More portrait
```{r}
summary(cars)
```

मुझे आश्चर्य है कि एक पीडीएफ उत्पन्न करने के लिए rmarkdown का उपयोग कैसे करें जिसमें एक ही दस्तावेज़ में पोर्ट्रेट और लैंडस्केप लेआउट दोनों हैं। यदि एक शुद्ध rmarkdown विकल्प है जो लेटेक्स का उपयोग करने से भी बेहतर होगा।

यहां एक छोटा, पुनरुत्पादित उदाहरण है। सबसे पहले, इसे .Rmd । RStudio (प्रेस बुनाई पीडीएफ बटन) में आरएमडी परिणाम लैंडस्केप लेआउट में सभी पृष्ठों के साथ एक पीडीएफ में परिणाम:

---
title: "All pages landscape"
output: pdf_document
classoption: landscape
---

```{r}
summary(cars)
```

\newpage
```{r}
summary(cars)
```

फिर एक दस्तावेज़ बनाने का प्रयास जो पोर्ट्रेट और लैंडस्केप लेआउट को मिश्रित करता है। YAML में मूल सेटअप here 'शामिल' अनुभाग के अनुसार किया जाता herein_header फ़ाइल 'header.tex' में केवल \usepackage{lscape} , जो here knitr लैंडस्केप लेआउट के लिए सुझाए गए पैकेज here.Rmd फ़ाइल एक ही निर्देशिका में है .Rmd फ़ाइल के रूप में।

---
title: "Mixing portrait and landscape"
output:
    pdf_document:
        includes:
            in_header: header.tex
---

Portrait:
```{r}
summary(cars)
```

\newpage
\begin{landscape}
Landscape:
```{r}
summary(cars)
```
\end{landscape}

\newpage
More portrait:
```{r}
summary(cars)
```

हालांकि, इस कोड के परिणामस्वरूप एक त्रुटि हुई है:

# ! You can't use `macro parameter character #' in horizontal mode.
# l.116 #

# pandoc.exe: Error producing PDF from TeX source
# Error: pandoc document conversion failed with error 43

किसी भी प्रकार की मदद की बेहद सराहना की जाती है।


तो, pandoc लेटेक्स वातावरण की सामग्री को पार्स नहीं करता है, लेकिन आप इसे अपने header.tex फ़ाइल में कमांड को फिर से परिभाषित करके मूर्ख बना सकते हैं:

\usepackage{lscape}
\newcommand{\blandscape}{\begin{landscape}}
\newcommand{\elandscape}{\end{landscape}}

इस प्रकार, यहां \begin{landscape} \blandscape , और \end{landscape} को \elandscape फिर से परिभाषित किया गया है। .Rmd फ़ाइल में उन नए परिभाषित कमांड का उपयोग करना प्रतीत होता है:

---
title: "Mixing portrait and landscape"
output:
    pdf_document:
        includes:
            in_header: header.tex 
---

Portrait
```{r}
summary(cars)
```

\newpage
\blandscape
Landscape
```{r}
summary(cars)
```
\elandscape

\newpage
More portrait
```{r}
summary(cars)
```

सबसे आम मामलों के लिए।

3 स्थितियां हैं।

  1. पोर्ट्रेट मोड में सब कुछ।
  2. लैंडस्केप मोड में सब कुछ।
  3. चित्र और परिदृश्य मोड का मिश्रण।

आइए प्रत्येक परिस्थितियों को कम करें।

  1. पहला, कहें कि हमारे पास नीचे दिए गए कोड के साथ एक मार्कडाउन दस्तावेज़ शुरू होता है। और जब आप एक आरएमडी फ़ाइल बनाते हैं तो यह Rstudio में डिफ़ॉल्ट सेटिंग है। जब आप इसे बुनाते हैं। यह स्वचालित रूप से संदेह के बिना एक पोर्ट्रेट मोड मान लेगा।

    title: "Landscape and Portrait"
        author: "Jung-Han Wang"
        date: "Thursday, March 19, 2015"
        output: pdf_document
    
  2. जब आप पीडीएफ फ़ाइल को लैंडस्केप मोड में बुनाई करना चाहते हैं, तो केवल एक चीज जिसे आप जोड़ना चाहते हैं वह है वर्गीकरण: परिदृश्य

        title: "Landscape and Portrait"
        author: "Jung-Han Wang"
        date: "Thursday, March 19, 2015"
        output: pdf_document
        classoption: landscape
    
  3. यदि आप दोनों के मिश्रण चाहते हैं, तो आपको YAML में .tex फ़ाइल जोड़ने की आवश्यकता होगी। ऊपर उल्लिखित लिंक का संदर्भ देकर। आप यहां .tex कोड डाउनलोड कर सकते हैं। http://goo.gl/cptOqg या बस बस कोड कॉपी करें और इसे header.tex के रूप में सहेजें, फिर जीवन को आसान बनाने के लिए, इस .tex फ़ाइल को आरएमडी फ़ाइल के साथ बुनाई के साथ रखें। सुनिश्चित करें कि आपने इन दो चीजों को किया है: tex फ़ाइल की प्रतिलिपि बनाएँ और इसे rmd फ़ाइल के साथ ले जाएं। आरएमडी की शुरुआत को बदलने के लिए:

     title: "Landscape and Portrait"
        author: "Jung-Han Wang"
        date: "Thursday, March 19, 2015"
        output:
          pdf_document:
            includes:
              in_header: header.tex
    

इस मुद्दे के साथ खेले जाने के बाद यह सारांश है और अधिकतर बपतिस्मा देने वाले के जवाब से लाभान्वित हुआ।

मैंने अपने ब्लॉगर मेरे ब्लॉगर में कुछ स्नैपशॉट्स और उदाहरण शामिल किए।

उम्मीद है की यह मदद करेगा। सौभाग्य।


जैसा कि बैपटिस्ट ने उल्लेख किया है, यदि आप लाटेक्स पर्यावरण के भीतर आर कमांड संलग्न करते हैं, तो पैंडोक उन्हें पार्स नहीं करेगा और उन्हें जेनरेट किए गए लाटेक्स में रखेगा: यह त्रुटि का कारण बनता है। xtable के अच्छे और सरल फिक्स से परे, आप xtable आर पैकेज का उपयोग कर सकते हैं, जो आर आउटपुट से कामुक दिखने वाली लाटेक्स टेबल बनाने की संभावना प्रदान करता है। काम करने के लिए निम्नलिखित उदाहरण के लिए, आपको header.tex फ़ाइल में \usepackage{rotating} जोड़ने की आवश्यकता है:

---
title: "Mixing portrait and landscape"
output:
    pdf_document:
        keep_tex: true
        includes:
            in_header: header.tex
---
```{r, echo=FALSE}
library(xtable)
```

Portrait
```{r, results='asis', echo=FALSE}
print(xtable(summary(cars), caption="Landscape table"), comment=FALSE)
```

Landscape:
```{r, results='asis', echo=FALSE}
print(xtable(summary(cars), caption="Landscape table"),
      floating.environment="sidewaystable", comment=FALSE)
```

दूसरी तालिका सामान्य table बजाय, sidewaystable वातावरण के भीतर मुद्रित की जाएगी: इसलिए इसे एक अलग पृष्ठ में लैंडस्केप मोड में मुद्रित किया जाएगा। ध्यान दें कि lscape पैकेज या sideways वातावरण में लैंडस्केप मोड में रखे गए टेबल और आंकड़े हमेशा एक अलग पृष्ठ में रखे जाएंगे, इस महत्वपूर्ण दस्तावेज़ के पृष्ठ 91 देखें:

http://www.tex.ac.uk/tex-archive/info/epslatex/english/epslatex.pdf

चूंकि मुझे यह थोड़ा परेशान लगता है, इसलिए मैंने एक ही पृष्ठ के भीतर पोर्ट्रेट और लैंडस्केप टेबल दोनों को रखने का एक तरीका ढूंढने में कामयाब रहा (प्रक्रिया में मेरी पूरी दोपहर बर्बाद कर रहा था):

---
title: "Mixing portrait and landscape"
output:
    pdf_document:
        keep_tex: true
        includes:
            in_header: header.tex
---
```{r, echo=FALSE}
library(xtable)
```

Portrait:
```{r, results='asis', echo=FALSE}
print(xtable(summary(cars), caption="Portrait table."), comment=FALSE)
```

Landscape:
```{r, results='asis', echo=FALSE}
cat(paste0(
    "\\begin{table}[ht]\\centering\\rotatebox{90}{",
    paste0(capture.output(
      print(xtable(summary(cars)), floating=FALSE, comment=FALSE)),
      collapse="\n"),
    "}\\caption{Landscape table.}\\end{table}"))
```

लैंडस्केप टेबल के लिए, मैंने यहां प्रदान किए गए \rotatebox सुझाव का उपयोग किया:

http://en.wikibooks.org/wiki/LaTeX/Rotations

इसके लिए काम करने के लिए, मुझे केवल print(xtable(... साथ तालिका के print(xtable(... भाग को उत्पन्न करना print(xtable(... भाग, तो मुझे आउटपुट को कैप्चर करना होगा और "मैन्युअल रूप से" इसे table और rotatebox कमांड से घिरा करना होगा, सबकुछ rotatebox एक स्ट्रिंग आर आउटपुट ताकि पैंडोक उन्हें लाटेक्स वातावरण के रूप में नहीं देख सके। शुद्ध रमार्कडाउन समाधान के लिए ... शुभकामनाएं!





r-markdown