[अनुवाद] Waf का उपयोग करके लेटेक्स दस्तावेजों का निर्माण

यह वाफ़ मल्टीफंक्शनल बिल्ड सिस्टम पर एक लेख का संशोधित और संवर्धित अनुवाद है।

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

डार्क टाइम्स: मेकफाइल


शुरुआत में, मैंने कमांड के एक अनुक्रम के साथ मेकफाइल का उपयोग किया, जिसने परियोजना के साथ निर्देशिका की प्रतिलिपि बनाई, एक अस्थायी निर्देशिका में स्थानांतरित किया, और फिर आवश्यक आदेशों को निष्पादित किया।
PROJECTNAME := thesisIntro<br/>
TMPDIR := / tmp / latexBuild.$ ( PROJECTNAME ) / <br/>
<br/>
view: pdf<br/>
-cd $ ( TMPDIR ) && open -a Preview introduction.pdf<br/>
<br/>
pdf: setup<br/>
-cd $ ( TMPDIR ) && pdflatex introduction<br/>
<br/>
setup:<br/>
-rm -fr $ ( TMPDIR ) <br/>
-mkdir $ ( TMPDIR ) <br/>
-cp -R * $ ( TMPDIR ) <br/>
<br/>
clean:<br/>
-rm -fr $ ( TMPDIR ) <br/>

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

नया वैकल्पिक: वाफ


कुछ महीने पहले, मैंने एलन लाएलएल द्वारा एक ब्लॉग पोस्ट देखी, जिसमें उन्होंने वफ़ बिल्ड सिस्टम का उपयोग करके अपने अनुभव के बारे में बात की थी। वाफ़ पायथन में लिखा गया है और एक वास्तविक प्रोग्रामिंग भाषा के समर्थन के साथ एक बिल्ड सिस्टम के रूप में स्थित है और यह एक शक्तिशाली उपकरण है, जो मेरी राय में पूरी तरह से सच है। Waf को एक एकल पाइथन स्क्रिप्ट के रूप में वितरित किया जाता है, जो पहली बार में लाइब्रेरी को एक छिपी निर्देशिका में अनपैक कर देता है और काम करना शुरू कर देता है। यह कई प्रोग्रामिंग भाषाओं के लिए समर्थन के साथ आता है, जिसमें Go, Python, LaTeX और यहां तक ​​कि अच्छे पुराने C. शामिल हैं। नीचे दी गई स्क्रिप्ट्स में waf के साथ समस्याओं के बिना काम करना चाहिए, संस्करण 1.6 से शुरू होता है, जिसमें सभी आवश्यक विशेषताएं शामिल हैं।

Waf को सेट करना एक wycript नाम की अजगर स्क्रिप्ट लिखना है , जिसे आपकी परियोजना के साथ डायरेक्टरी में रखा गया है। फ़ाइल में आपके प्रोजेक्ट की असेंबली के बारे में विवरण है। लाटेक्स दस्तावेज़ के लिए जो मैं वर्तमान में लिख रहा हूं, मैं निम्नलिखित सामग्री के साथ wscript का उपयोग करता हूं :
#! /usr/bin/env python <br/>
<br/>
top = '.' <br/>
out = '/tmp/wafbuild-dphilconf' <br/>
<br/>
def configure ( conf ) :<br/>
conf. check_tool ( 'tex' ) <br/>
conf. find_program ( 'dot' , var= "DOT" ) <br/>
if not conf. env . PDFLATEX :<br/>
conf. fatal ( 'could not find the program pdflatex' ) <br/>
<br/>
def view_pdf ( bld ) :<br/>
bld. exec_command ( "open -a Preview \" {0}/dphilconf2010.pdf \" " . format ( out ) ) <br/>
<br/>
def build ( bld ) :<br/>
# , .dot- pdf <br/>
for x in bld. path . ant_glob ( '*.dot' ) :<br/>
tg = bld ( rule= '${DOT} -Tpdf -o${TGT[0].get_bld().abspath()} ${SRC[0].abspath()}' , source=x, target=x. change_ext ( '.pdf' ) ) <br/>
<br/>
bld. add_group ( ) <br/>
<br/>
obj = bld ( <br/>
features = 'tex' ,<br/>
type = 'pdflatex' ,<br/>
source = 'dphilconf2010.tex' ,<br/>
) <br/>
<br/>
if bld. options . view :<br/>
bld. add_post_fun ( view_pdf ) <br/>
<br/>
def options ( opt ) :<br/>
opt. tool_options ( 'tex' ) <br/>
<br/>
# <br/>
opt. add_option ( '--view' , action= 'store_true' , default= False , help = 'View the document' ) <br/>

विवरण: वफ़ कॉन्फ़िगर


इससे पहले कि मैं पहली बार कोई दस्तावेज़ बनाना शुरू करूँ, मैं चलाता हूँ
 अजगर वफ़ कॉन्फ़िगर

विधानसभा के लिए निर्देशिका सेट करने के लिए। अगर मैं परिणामी पीडीएफ को देखना चाहता हूं, तो मैं सिर्फ Theview विकल्प जोड़ता हूं

एक विशिष्ट wscript फ़ाइल में एक कॉन्फ़िगर कॉन्फ़िगरेशन फ़ंक्शन होता है जिसे तब कहा जाता है जब उपयोगकर्ता वफ़ कॉन्फ़िगर करता है । हमारे फ़ंक्शन में, हम यह सुनिश्चित करते हैं कि टेक्स के साथ काम करने के लिए उपकरण हैं (लाइन conf.check_tool ('टेक्स') इसके लिए जिम्मेदार है) और pdflatex उपयोगिता। इसके अलावा, निर्माण करने के लिए, हमें डॉट कमांड लाइन उपयोगिता की आवश्यकता है, जिसका अस्तित्व हम भी जांचते हैं। यहां एक वफ़ कॉन्फिगर ऑपरेशन से विशिष्ट आउटपुट का एक उदाहरण दिया गया है:
 शीर्ष पर: / उपयोगकर्ता / jnwhiteh / ड्रॉपबॉक्स / शैक्षणिक / DPhilConf2010 
 के लिए बाहर सेट: / tmp / wafbuild-dphilconf 
 प्रोग्राम टेक्स के लिए जाँच: / usr / टेक्सबिन / टेक्स 
 प्रोग्राम लेटेक्स के लिए जाँच: / usr / टेक्सबिन / लेटेक्स 
 प्रोग्राम pdflatex के लिए जाँच: / usr / टेक्सबिन / pdflatex 
 प्रोग्राम बिबटेक्स के लिए जाँच: / usr / टेक्सबिन / बिबटेक्स 
 प्रोग्राम के लिए जाँच की जा रही है DVips: / usr / टेक्सबिन / DVips 
 कार्यक्रम के लिए जाँच कर रहा है DVipdf: नहीं मिला 
 प्रोग्राम ps2pdf के लिए जाँच: नहीं मिला 
 प्रोग्राम मेइंडेक्स के लिए जाँच: / usr / टेक्सबिन / मेइंडेक्स 
 प्रोग्राम के लिए जाँच की जा रही है pdf2ps: नहीं मिली 
 प्रोग्राम डॉट के लिए जाँच: / usr / लोकल / बिन / डॉट 
 'कॉन्फ़िगर' सफलतापूर्वक समाप्त (0.088)

जैसा कि आप देख सकते हैं, कॉन्फ़िगरेशन स्क्रिप्ट ने सभी आवश्यक प्रोग्राम ढूंढे और बिल्ड सिस्टम को कॉन्फ़िगर किया।

विवरण: वफ़ निर्माण


बिल्ड फ़ंक्शन काफी सीधा और समझ में आता है: पहले हम निर्देशिका में सभी .dot फाइलों पर पुनरावृति करते हैं, उनमें से प्रत्येक के लिए एक बिल्ड नियम जोड़ते हैं। यह नियम एक .dot फ़ाइल से .pdf फ़ाइल में मैपिंग बनाता है और जहाँ भी इन .pdf फ़ाइलों को मूल LaTeX दस्तावेज़ में शामिल किया जाता है, निर्माण प्रणाली एक निर्भरता जोड़ती है। नतीजतन, जब आप स्रोत .dot फ़ाइल को बदलते हैं, तो इस छवि के लिए .pdf फाइलें और मुख्य दस्तावेज़ स्वचालित रूप से फिर से बनाया जाएगा।

Bld.add_group () को कॉल इंगित करता है कि पहले समूह के तत्वों को दूसरे के तत्वों से पहले बनाया जाना चाहिए। दूसरे समूह में असेंबली नियम होते हैं जो लेटेक्स पैकेज के कार्यक्रमों का उपयोग करते हैं। निर्माण उपकरण (pdflatex) और स्रोत दस्तावेज़ का नाम परिभाषित किया गया है।

बिल्ड प्रक्रिया का अंतिम स्पर्श दृश्य विकल्प की जाँच कर रहा है। यदि यह विकल्प मौजूद है, तो हम सिस्टम को बताते हैं कि असेंबली के बाद उपयोगकर्ता-निर्धारित फ़ंक्शन view_pdf को कॉल करना आवश्यक है। यह फ़ंक्शन केवल सिस्टम कमांड को लॉन्च करता है और परिणामस्वरूप पीडीएफ फाइल खोलता है।

दृश्य विकल्प विकल्प फ़ंक्शन के अंदर परिभाषित किया गया है और उपयोगकर्ता द्वारा --view कमांड लाइन तर्क का उपयोग करके सेट किया गया है

यह सब एक साथ रखना


यदि आप उपरोक्त wscript का उपयोग करना चाहते हैं, तो आपको इसमें स्रोत दस्तावेज़ का नाम बदलने की आवश्यकता है। इसके बाद, आपको दस्तावेज़ बनाने के लिए वफ़ कॉन्फिगरेशन और वफ़ बिल्ड के बाद चलना चाहिए। आपका दस्तावेज़ सरल हो सकता है, इसलिए आप वेट रिपॉजिटरी से LaTeX के लिए संबंधित wscript का एक उदाहरण देख सकते हैं।

Waf का उपयोग करके एक दस्तावेज बनाने का लाभ यह है कि मूल दस्तावेज़ की निर्भरता स्वचालित रूप से ट्रैक की जाती है (सिस्टम स्रोत टेक्स फ़ाइलों को स्कैन करता है), इसलिए जिन फ़ाइलों पर दस्तावेज़ निर्भर करता है (ग्राफिक्स सहित फाइलें) में कोई भी बदलाव अंतिम पीडीएफ को फिर से बनाने का कारण होगा।

संदर्भ:

Source: https://habr.com/ru/post/In111623/


All Articles