R Markdown को PDF में कैसे बदलें?


127

मैंने पहले R Markdown को HTML में बदलने के लिए कमांड के बारे में पूछा है ।

R Markdown फ़ाइलों को PDF दस्तावेज़ों में बदलने का एक अच्छा तरीका क्या है?

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

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

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

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


7
मेरा मानना ​​है कि पंडोक जाने का सबसे अच्छा तरीका होना चाहिए। आर में इसे बनाने के लिए मेरे लिए बहुत मायने नहीं रखता है, और मुझे नहीं लगता कि यह संभव भी है (यह हास्केल में लिखा गया है)। मेरे यहाँ कुछ बहुत ही शुरुआती काम हैं: github.com/yihui/knitr-book (दो शेल स्क्रिप्ट देखें ) knitऔर mdconvert.sh। यह एक सामान्य दृष्टिकोण के लिए कठिन हो सकता है क्योंकि LaTeX बहुत लचीला है; आप pandoc के लिए सभी प्रकार के टेम्प्लेट का उपयोग कर सकते हैं।
यिहुई एक्सई


markdowntopdf.com यह साइट वास्तव में बहुत अच्छी है। हालाँकि, लेटेक्स सपोर्ट नहीं है
पदावन

क्या हम RStudio v1.0 के लिए इस उत्तर को अपडेट कर सकते हैं?
एडम_जी

जवाबों:


69

अपडेटेड उत्तर (10 फरवरी 2013)

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

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

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

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

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

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

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

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

आर मार्कडाउन को एचटीएमएल में बदलने के लिए मैंने निम्नलिखित कमांड का उपयोग किया (यानी, इस मेकफाइल का एक प्रकार ), जहां घटक के RMDFILEबिना आर मार्कडाउन फ़ाइल का नाम है .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'))"

और फिर इस कमांड को pdf में बदलना है

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


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

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

पंडोक का अप-टू-डेट संस्करण प्राप्त करना

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

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

cabal update
cabal install pandoc

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


5
इस उत्तर के लिए धन्यवाद। मैं सिर्फ यह बताना चाहता हूं कि मेरा अनुभव यह था कि .md फाइल को .html फाइल के बजाय, एक बेहतर आउटपुट दिया गया। तो यह प्रयोग करने लायक है।
योवराम

यह सबसे अच्छी प्रक्रिया के रूप में अच्छी तरह से आया है। क्या "प्लॉट चंक ऑफ ..." से फिगर टेक्स्ट को किसी और चीज़ में बदलने का कोई तरीका है?
svenski

1
pandocसंस्करण १.१२ में भी मेरे अब पुराने Ubuntu १३.०४ में पुराना है।
krlmlr

22

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

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

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


+1 समारोह अच्छा लग रहा है; क्या आपके पास आर-मार्कड को पीडीएफ में बदलने के लिए अनुशंसित एक-लाइनर पैंडॉक कमांड है?
जेरोमे एंग्लीम

1
जोड़ना --tocकमांड लाइन पर उपयोगी होगा (परिणामस्वरूप आपके शीर्षकों के आधार पर सामग्री की एक nics तालिका) और अपनी आवश्यकताओं के लिए LaTeX टेम्पलेट को कस्टमाइज़ करना (जैसे कि वहाँ \listoffiguresऔर / या \listoftablesइत्यादि जोड़ना ) अद्भुत दस्तावेज़ों का परिणाम हो सकता है।
daroczig

3
किस चुनौती के बारे में apt-get install pandoc?
5

@sumid आप अप-टू-डेट भाग को याद कर सकते हैं (ठीक है, यदि आप परीक्षण का उपयोग नहीं कर रहे हैं)।
दरोगाचिव

हाँ, तुम सही हो - दो बार। मैं इसे याद किया और मैं भी का उपयोग कर परीक्षण कर रहा हूँ ;-) तो मैं में आसान अस्थायी परीक्षण की इजाजत दी रूप में क्या अनुभव sources.listऔर कर apt-get install -t testing pandocतो स्थापित करने haskell-platformऔर संकलन। (आमतौर पर मैं प्रयोगात्मक के साथ ऐसा कर मैं आशा के परीक्षण में उसी तरह काम करता है।।)
sumid

14

अभी (अगस्त 2014) आप R Markudio को PDF में R मार्कडाउन में बदलने के लिए उपयोग कर सकते हैं । मूल रूप से, RStudio Rmd को PDF में बदलने के लिए पैंडॉक का उपयोग करता है।

आप मेटाडेटा को इसमें बदल सकते हैं:

  1. सामग्री की तालिका जोड़ें
  2. आकृति विकल्प बदलें
  3. सिंटैक्स हाइलाइटिंग स्टाइल बदलें
  4. LaTeX विकल्प जोड़ें
  5. और बहुत सारे...

अधिक जानकारी के लिए - http://rmarkdown.rstudio.com/pdf_document_format.htmlयहाँ छवि विवरण दर्ज करें


1
उबंटू 14.04, पंडोक v1.17.1 में 'निट पीडीएफ' विकल्प उपलब्ध नहीं है। क्या कोई सेटिंग करनी होगी?
प्रदीप

आपके पास RStudio का कौन सा संस्करण है? क्या आपने एक नई रेकॉर्डड फ़ाइल बनाई है?
जोत ईएन

Rstudio - v 0.98.507
12-22 बजे प्रदीप


@ प्रदीप क्या बातचीत का नतीजा था?
1

10

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

उबंटू पर

sudo apt-get install wkhtmltopdf

और फिर HTML को प्राप्त करने के लिए pandoc उदाहरण के लिए समान कमांड:

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

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


मैं RStudio में अंतिम कमांड चलाने में असमर्थ हूं। मैंने system("wkhtmltopdf temp.html temp.pdf") किसी भी विचार की कोशिश की है कि कैसे ठीक किया जाए
उर्व शब्बीर

9

केवल दो चरण:

  1. नवीनतम रिलीज़ "पंडोक" यहाँ से स्थापित करें:

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

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

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

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


3

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

#!/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))
        }
    }
}

0

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


0

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

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.