2010-05-30 10 views
6

मैं जीएनयू/लिनक्स डिस्ट्रो (आर्क, यदि यह प्रासंगिक है) का उपयोग कर रहा हूं, Emacs v23.2.1, ईएसएस v5.9 और AucTeX v11.86।ईएसएस/ऑक्टेक्स/स्वीवे एकीकरण

मैं सेटअप AucTeX.Rnw फ़ाइलें पहचान करने के लिए करना चाहते हैं, तो मैं C-c C-c साथ .Rnw फाइलों पर LaTeX चलाने के लिए और .dvi फ़ाइल स्वचालित रूप से प्राप्त कर सकते हैं। मुझे लगता है कि यह .emacs फ़ाइल को संपादित करके काफी प्रबंधनीय है, लेकिन मुझे अभी भी Elisp पर दृढ़ समझ नहीं मिली है।

फिर भी एक और समस्या काफी कष्टप्रद है - किसी भी तरह, LaTeX preambule में \usepackage{Sweave} पहचान नहीं कर रहा है, इसलिए मैं वास्तव में (निर्देशिका जहां .Rnw फ़ाइल स्थित है के लिए Sweave.sty फ़ाइल की प्रतिलिपि करने (मेरे मामले /usr/share/R/texmf/Sweave.sty में स्थित में) की आवश्यकता ! और मैं तथ्य यह है कि यह विंडोज प्लेटफॉर्म पर आम बग है से निराश होता जा रहा हूँ)

मेरा प्रश्न दोनों समस्याओं के लिए नीचे फोड़े:

  • कितनी देर बनाने के लिए एक्स\usepackage{Sweave} पहचानें (Sweave.sty प्रतिलिपि के बिना प्रत्येक बार "घर" फ़ोल्डर में कॉपी करें) [संपादित करें: ऐसा करने में कामयाब रहा; एक प्रकार की कटार के जवाब के बाद टिप्पणी] देख
  • कैसे सेटअप AucTeX को .dvi

उत्तर

6

दो अलग अलग सवाल है कि करने के लिए .Rnw फ़ाइलों को संकलित करने के।

पहले के लिए, मेरे डेबियन आर पैकेज सुनिश्चित करते हैं कि $RHOME/share/texmf/ निर्देशिका से TeX फ़ाइल सिस्टम पेड़ में एक मुलायम लिंक है, उदा। /usr/share/texmf/tex/latex/R के रूप में।

दूसरे प्रश्न के लिए: डुनो। मैं स्वीवेव को एक छोटी शेल स्क्रिप्ट के माध्यम से चलाता हूं जिसे मैंने कई साल पहले तैयार किया था, भले ही मैं Emacs में सभी संपादन करता हूं।

संपादित करें, कुछ महीने बाद: AucTeX के बजाय ईएसएस का उपयोग करें। फिर M-n s (i.e Alt-n के बाद एस) स्वेव चरण चलाता है और M-n P लाटेक्स संकलन चलाता है, यदि आवश्यक हो तो बिबटेक्स को कॉल करें।

+0

पहले एक के बारे में जानकारी के लिए धन्यवाद। मैं 'sweave.sty' फ़ाइल को '/ usr/share/texmf-dist/tex/latex/sweave' में डालकर इसे करने में कामयाब रहा, इसलिए डेटाबेस को 'texconfig' से अद्यतन कर रहा था। तो यह मुझे # 2 के साथ छोड़ देता है। बीटीडब्ल्यू, मैंने आपकी स्क्रिप्ट को SO पर देखा, और मैं दौड़ने के लिए बैश कमांड को बाध्य करने के बारे में सोच रहा हूं। जब तक मैं AucTeX भाग को कैसे निष्पादित करता हूं, तब तक कामकाज के रूप में नहीं। – aL3xa

5

संक्षिप्त और कुशल Googling के बाद, मैं this link मिल जाती है और पहली नजर में, सब कुछ ठीक लगता है, लेकिन pdf फ़ाइल Sweaving के बाद ठीक से प्रदर्शित हो जाता है ... तो मैं एक और तरीका है चारों ओर इस समस्या को घेरने की कोशिश की: जब संदेह में, जाना bash! मैंने here उपलब्ध डिर्क की स्वीवे बैश स्क्रिप्ट से त्रुटि जांच फ़ंक्शन को बेकार कर दिया है। असल में, यह एक समाधान नहीं है: R CMD Sweave पर .Rnw फ़ाइल, इसलिए लेटेक्स, में आता है और pdflatex उसके बाद निष्पादित हो जाता है ...

मुझे लगता है कि मेरे लिए काम करता है एक bash स्क्रिप्ट पोस्ट करेंगे । मुझे यह अवश्य कहना चाहिए कि मैं एक उन्नत बैश प्रोग्रामर नहीं हूं, इसके अलावा मैं व्यवसाय द्वारा प्रोग्रामर भी नहीं हूं, इसलिए एक शानदार मौका है कि इस स्क्रिप्ट को अनुकूलित/सही तरीके से लिखा जा सकता है।यहाँ जाता है:

#!/bin/bash 

FILEBASE=${1%.*} 
FILEXT=${1##*.} 
FILEPATH=${1%/*} 

TEXFILE=$FILEBASE.tex 
PDFFILE=$FILEBASE.pdf 

# errorexit 

function errorexit() { 
    echo "Error: $1" 
    exit 1 
} 

# check if file exists 
if [ ! -f $1 ]; then 
    errorexit "File $1 not found!" 
else 
# check for filename length 
    if [ ${#1} -lt 1 ]; then 
    errorexit "Need to specify argument file!" 
    else 
    # if filelength OK, check extension 
    if [ $FILEXT != "Rnw" ]; then 
     errorexit "You must pass Sweave (.Rnw) file!" 
     # finally, run Sweave 
    else 
     cd $FILEPATH && R CMD Sweave $1 
     # latex $TEXFILE 
     pdflatex $TEXFILE 
     # xdg-open $PDFFILE 
    fi 
    fi 
fi 

फिर बचाने/कॉपी/echo $PATH फ़ोल्डर (मैं /usr/bin/ में मेरा रखने के लिए) में से किसी में इस स्क्रिप्ट ले जाते हैं, और यकीन है कि यह sweave नाम है, या जो भी नाम आप की तरह का चयन किया है, फिर डाल अपने .emacs में इन पंक्तियों के फ़ाइल:

(global-set-key (kbd "C-c s") 
     (lambda() 
      (interactive) 
      (shell-command (concat "sweave " buffer-file-name)))) 
बेशक

, आप अपनी आवश्यकताओं सूट, औरमें रखा स्क्रिप्ट नाम के साथ sweave बदलने के लिए सुनिश्चित करने के लिए कोई कीबाइंडिंग पर बदल सकता है 10।

ध्यान रखें कि यह कोई जवाब नहीं है, लेकिन एक कामकाज है। यदि आपको ऑक्टेक्स/ईएसएस/स्वीवे एकीकरण से निपटने का कोई तरीका मिला है, तो इसे पोस्ट करें, और मैं इसे एक चेकमार्क दूंगा।

इस कामकाज से पहले, मुझे M-n s को स्वीवे में करना पड़ा, उसके बाद C-c C-c जो लाटेक्स फ़ाइल संकलन के लिए ऑक्टेक्स में डिफ़ॉल्ट कीबाइंड है। निर्मित फाइल गलत है, इसलिए मुझे इसे बैश के साथ आज़मा देना पड़ा। यह मेरे लिए काम करता है, अगर आपके पास कोई सुझाव है, तो कृपया मुझे बताएं।

सधन्यवाद,
aL3xa

संपादित करें:
सम्मिलित किया गया cd $FILEPATH

संबंधित मुद्दे