2009-06-24 20 views
52

मैं प्रणाली(), अनावश्यक उपयोग करने वाले सभी कचरा pdflatex स्क्रीन पर डालता है कहने के लिए (C++) मेरे भीतर से कार्यक्रम pdflatex फोन कर रहा हूँ इस मामले में थोड़ा परेशान है।भागो pdflatex चुपचाप

तो ... कैसे मैं लंबा आउटपुट त्याग करने के लिए प्रोत्साहित करते हैं pdflatex करते हैं? यह और भी बेहतर हो सकता है अगर केवल त्रुटियों दिखाई होगा ...

+1

टेक्सास एसई पर रिलेटेक्स: http://tex.stackexchange.com/questions/27878/pdflatex-bash-script-to-supress-all-output-except-error-messages –

उत्तर

22

बस, सभी उत्पादन पर ध्यान न दें/dev/बातिल को pdflatex stdout अनुप्रेषित करने के लिए:

system("pdflatex yourdocument >/dev/null"); 

आप शुरुआत में \nonstopmode जोड़ सकते हैं त्रुटियों का सामना करते समय भी जारी रखने के लिए टेक्स को निर्देश देने के लिए अपने दस्तावेज़ का।

अपने कार्यक्रम के लिए त्रुटि संदेश, पाइप pdflatex उत्पादन हो और ! के साथ शुरू है, उदा पंक्तियों के आसपास त्रुटियों के लिए देखने के लिए

FILE *outputf = popen("pdflatex yourdocument", "r"); 

// ... read and analyze output from outputf ... 

pclose(outputf); 
+2

मुझे यकीन नहीं है कि पीडीएफएलएक्सएक्स करता है , लेकिन कई कमांड लाइन प्रोग्राम दोनों stdout (जिसे आपके ">/dev/null") और stderr (जो नहीं होगा) पर कैप्चर किया जाएगा। * दोनों * को चुप करने के लिए, अपने मौजूदा सिस्टम() स्ट्रिंग के बाद "2> और 1" जोड़ें। –

+2

इसके अलावा: विंडोज़ पर, आवश्यक डिवाइस को केवल "एनयूएल" (नोट 1 "एल") कहा जाता है, न कि "/ dev/null"। "2> और 1" भाग * निक्स के लिए काम करता है। –

+0

इसके साथ समस्या यह है कि यदि आपको कोई त्रुटि है, तो pdflatex रोकता है, इनपुट की प्रतीक्षा करता है, लेकिन आप इसे कभी समझ नहीं पाएंगे। विल रॉबर्टसन के जवाब बेहतर है (हालांकि pdflatex अभी भी कुछ लाइनों आउटपुट) – Shahbaz

61

दुर्भाग्य से (ला) टेक्स वास्तव में stdout और sterr, (मुझे लगता है) जल्दी 80 के दशक में अपनी मूल के कारण के नियमों का पालन नहीं करता है। लेकिन कुछ स्विच हैं जिन्हें आप दिखाए जा रहे जानकारी की मात्रा को बदलने के लिए बुला सकते हैं।

निष्पादन -interaction=nonstopmode या -interaction=batchmode सिंटैक्स त्रुटि के मामले में भी गैर-रोकथाम व्यवहार के लिए स्विच के साथ निष्पादित करें। nonstopmode सभी सामान्य लाइनों को प्रिंट करेगा, यह बस रुक जाएगा नहीं। batchmode सभी को दबाएगा लेकिन कुछ हद तक घोषणात्मक रेखाएं ("यह पीडीएफटीएक्स v3.14 ...") है।

इन्हें \batchmode और \nonstopmode के साथ दस्तावेज़ में भी शामिल किया जा सकता है, लेकिन यह आपके द्वारा वर्णित स्थिति के लिए कम उपयोगी है।

+0

आप से क्या मतलब है "वास्तव में' stdout' और 'stderr' के नियमों का पालन नहीं करता है?" क्या यह अन्य आउटपुट धाराओं का उपयोग करता है? –

+0

@ मैथ्यू थोड़ी देर हो गया है क्योंकि मैंने इसे देखा है, लेकिन मेरी याददाश्त यह है कि केवल रीडायरेक्ट करने का प्रयास करें, कहें, त्रुटि संदेश कहीं भी काम नहीं करते हैं। लेकिन मुझे गलत हो सकता है; अस्पष्ट होने के लिए खेद है। –

+0

@Matthew Leingang: दुर्घटना से मैंने पाया [पुन:? सायलेंसिंग लेटेक्स (शांत/बैच मोड)] (http://newsgroups.derkeiler.com/Archive/Comp/comp.text.tex/2007-09/msg00520.html); मुझे विश्वास है कि स्पष्ट करता है? चीयर्स! – sdaau

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