r आर मार्कडाउन को पीडीएफ में कैसे परिवर्तित करें?




markdown knitr (7)

मैंने पहले आर मार्कडाउन को एचटीएमएल में परिवर्तित करने के लिए कमांड के बारे में पूछा है।

आर मार्कडाउन फ़ाइलों को पीडीएफ दस्तावेजों में परिवर्तित करने का एक अच्छा तरीका क्या है?

एक अच्छा समाधान सामग्री के जितना संभव हो सके संरक्षित करेगा (उदाहरण के लिए, छवियों, समीकरणों, एचटीएमएल टेबल, आदि)। समाधान को कमांड लाइन से चलाने में सक्षम होना चाहिए। एक अच्छा समाधान क्रॉस-प्लेटफ़ॉर्म भी होगा, और आदर्श रूप से मेकफ़ाइल साझा करना आसान बनाने के लिए निर्भरता को कम करता है।

विशेष रूप से, बहुत सारे विकल्प हैं:

  • चाहे आरएमडी को एमडी से एचटीएमएल में पीडीएफ में परिवर्तित करना है; या पीडीएफ के लिए एमडी के लिए आरएमडी; या पीडीएफ के लिए आरएमडी
  • यदि आर में markdown पैकेज का उपयोग करना है, तो कौन से विकल्प निर्दिष्ट करना है
  • pandoc का उपयोग pandoc , आर में बनाया गया पैकेज, या कुछ और

यहां एक उदाहरण आरएमडी फ़ाइल है जो संभावित रूप से किसी भी प्रस्तावित समाधान का उचित परीक्षण प्रदान करती है। इसका उपयोग इस ब्लॉग पोस्ट के आधार के रूप में किया गया था।


एक विकल्प के लिए जो आपको ब्राउज़र से प्रिंट करते समय प्राप्त होता है, wkhtmltopdf एक विकल्प प्रदान करता है।

उबंटू पर

sudo apt-get install wkhtmltopdf

और फिर HTML पर जाने के लिए पैंडोक उदाहरण के लिए एक ही आदेश:

RMDFILE=example-r-markdown  
Rscript -e "require(knitr); require(markdown); knit('$RMDFILE.rmd', '$RMDFILE.md'); markdownToHTML('$RMDFILE.md', '$RMDFILE.html', options=c('use_xhml'))"

और फिर

wkhtmltopdf example-r-markdown.html example-r-markdown.pdf

परिणामस्वरूप फ़ाइल this तरह दिखती है। ऐसा लगता है कि मैथजेक्स को संभालने वाला प्रतीत नहीं होता है ( इस मुद्दे पर चर्चा की गई है ), और पेज ब्रेक बदसूरत हैं। हालांकि, कुछ मामलों में, ऐसी शैली को अधिक लाटेक्स शैली प्रस्तुति पर प्राथमिकता दी जा सकती है।


अगर आप कुछ भी इंस्टॉल नहीं करना चाहते हैं तो आप एचटीएमएल आउटपुट कर सकते हैं। फिर एचटीएमएल फाइल खोलें - इसे ब्राउज़र विंडो में खोलना चाहिए, फिर प्रिंट करने के लिए राइट क्लिक करें। प्रिंट विंडो में, यदि आप मैक पर हैं तो नीचे दाएं कोने में "पीडीएफ के रूप में सहेजें" का चयन करें। देखा!


इन सरल चरणों का पालन करें:

1: रमार्कडाउन स्क्रिप्ट रन बुनाई में (Ctrl + Shift + K) 2: फिर HTML मार्कडाउन खोले जाने के बाद ब्राउज़र में खोलें (ऊपर बाईं तरफ) और HTML को आपके वेब ब्राउज़र में खोला गया है 3: फिर Ctrl + P का उपयोग करें और पीडीएफ के रूप में सहेजें।


मैंने आर स्टूडियो का सबसे आसान तरीका उपयोग किया, लेकिन यदि कमांड लाइन से नियंत्रण करना चाहते हैं, तो एक साधारण आर स्क्रिप्ट rmarkdown रेंडर कमांड (ऊपर उल्लिखित) का उपयोग करके चाल कर rmarkdown । यहां पूर्ण स्क्रिप्ट विवरण

#!/usr/bin/env R

# Render R markdown to PDF.
# Invoke with:
# > R -q -f make.R --args my_report.Rmd

# load packages
require(rmarkdown)

# require a parameter naming file to render
if (length(args) == 0) {
    stop("Error: missing file operand", call. = TRUE)
} else {
    # read report to render from command line
    for (rmd in commandArgs(trailingOnly = TRUE)) {
        # render Rmd to PDF
        if ( grepl("\\.Rmd$", rmd) && file.exists(rmd)) {
            render(rmd, pdf_document())
        } else {
            print(paste("Ignoring: ", rmd))
        }
    }
}

केवल दो कदम:

  1. यहां से नवीनतम रिलीज "पैंडोक" इंस्टॉल करें:

    https://github.com/jgm/pandoc/releases

  2. library(knitr) में फ़ंक्शन pandoc को कॉल करें library(knitr)

    library(knitr)
    pandoc('input.md', format = 'latex')
    

इस प्रकार, आप अपने "input.md" को "input.pdf" में परिवर्तित कर सकते हैं।


मुझे लगता है कि आपको वास्तव में pandoc की pandoc , जो कि इस महान कार्य को केवल इस कार्य के लिए डिज़ाइन और बनाया गया था :) पीडीएफ के अलावा, आप अपनी एमडी फ़ाइल को दूसरों के बीच pandoc परिवर्तित कर सकते हैं।

खैर, पांडोक का एक अद्यतित संस्करण स्थापित करना लिनक्स पर चुनौतीपूर्ण हो सकता है (क्योंकि आपको स्रोतों से निर्मित करने के लिए पूरे हैकेल haskell-platform आवश्यकता होगी), लेकिन विंडोज / मैक पर डाउनलोड के कुछ मेगाबाइट्स के साथ वास्तव में आसान है।

यदि आपके पास pandoc / बुना हुआ pandoc फ़ाइल है तो आप केवल pandoc को कॉल कर सकते हैं जैसे कि बैश या आर के भीतर system फ़ंक्शन के साथ। उसके बाद के पीओसी डेमो को मेरे छोटे पैकेज के Ṗandoc.convert फ़ंक्शन में कार्यान्वित किया जाता है ( जिसे आपको बहुत ऊब जाना चाहिए जैसा कि मैं हर मौके पर आपका ध्यान केंद्रित करने की कोशिश करता हूं )।


अद्यतन उत्तर (10 फरवरी 2013)

rmarkdown पैकेज : अब एक rmarkdown पैकेज github पर उपलब्ध है जो rmarkdown साथ interfaces। इसमें एक render फ़ंक्शन शामिल है। प्रलेखन यह स्पष्ट करता है कि अन्य स्वरूपों की एक श्रृंखला के बीच rmarkdown को पीडीएफ में कैसे परिवर्तित किया जाए। इसमें रमार्कडाउन फ़ाइल में आउटपुट प्रारूप शामिल हैं या रेंडर फ़ंक्शन में आउटपुट प्रारूप की आपूर्ति करना शामिल है। उदाहरण के लिए,

render("input.Rmd", "pdf_document")

कमांड लाइन: जब मैं कमांड लाइन से render हूं (उदाहरण के लिए, मेकफ़ाइल का उपयोग करके), मुझे कभी-कभी पैंडोक के साथ समस्याएं नहीं मिलती हैं। संभवतः, यह खोज पथ पर नहीं है। निम्नलिखित उत्तर बताता है कि आर पर्यावरण में पैंडोक कैसे जोड़ें ।

तो उदाहरण के लिए, मेरे कंप्यूटर पर ओएसएक्स चल रहा है, जहां मेरे पास RStudio के माध्यम से पैंडोक की एक प्रति है, मैं निम्न का उपयोग कर सकता हूं:

Rscript -e "Sys.setenv(RSTUDIO_PANDOC='/Applications/RStudio.app/Contents/MacOS/pandoc');library(rmarkdown);  library(utils); render('input.Rmd', 'pdf_document')"

पुराना उत्तर (लगभग 2012)

इसलिए, कई लोगों ने सुझाव दिया है कि पांडोक जाने का रास्ता है। पांडोक का एक अद्यतित संस्करण होने के महत्व के बारे में नीचे नोट्स देखें।

पांडोक का उपयोग करना

मैंने आर मार्कडाउन को एचटीएमएल (यानी, इस RMDFILE का एक संस्करण ) में कनवर्ट करने के लिए निम्न आदेश का उपयोग किया, जहां RMDFILE .rmd घटक के बिना आर .rmd फ़ाइल का नाम है (यह भी मानता है कि एक्सटेंशन है। .rmd और नहीं .Rmd )।

RMDFILE=example-r-markdown  
Rscript -e "require(knitr); require(markdown); knit('$RMDFILE.rmd', '$RMDFILE.md'); markdownToHTML('$RMDFILE.md', '$RMDFILE.html', options=c('use_xhml'))"

और फिर यह आदेश पीडीएफ में कनवर्ट करने के लिए

Pandoc -s example-r-markdown.html -o example-r-markdown.pdf

इसके बारे में कुछ नोट्स:

  • मैंने उदाहरण फ़ाइल में संदर्भ हटा दिया जो छवियों को होस्ट करने के लिए प्लॉट निर्यात करने के लिए निर्यात करता है।
  • मैंने इमेज पर होस्ट की गई एक छवि का संदर्भ हटा दिया। आंकड़े स्थानीय होने की आवश्यकता है।
  • markdownToHTML फ़ंक्शन में विकल्प का अर्थ है कि छवि संदर्भ HTML फ़ाइलों में संग्रहीत डेटा के लिए हैं (यानी, मैंने विकल्प सूची से 'base64_images' को हटा दिया है)।
  • परिणामी आउटपुट this तरह दिखता this । यदि मैंने एचटीएमएल फ़ाइल को ब्राउज़र से पीडीएफ पर प्रिंट किया है तो मुझे यह स्पष्ट रूप से एक बहुत ही लाटेक्स स्टाइल दस्तावेज़ बनाया गया है।

पांडोक के अद्यतित संस्करण प्राप्त करना

जैसा कि @daroczig द्वारा उल्लिखित है, पीडीएफ आउटपुट करने के लिए पांडोक का एक अद्यतित संस्करण होना महत्वपूर्ण है। 15 जून 2012 को उबंटू पर, मैं पैकेज प्रबंधक में पांडोक के संस्करण 1.8.1 के साथ फंस गया था, लेकिन यह परिवर्तन लॉग से लगता है कि पीडीएफ समर्थन के लिए आपको पांडोक के कम से कम संस्करण 1.9+ की आवश्यकता है।

इस प्रकार, मैंने caball-install । और फिर भाग गया:

cabal update
cabal install pandoc

पांडोक ~/.cabal/bin/pandoc में स्थापित किया गया था इस प्रकार, जब मैं pandoc चला गया pandoc यह अभी भी पुराना संस्करण देख रहा था। पथ में जोड़ने के लिए यहां देखें।





pandoc