2016-04-13 14 views
2

org dosyasına ekle Teknik kitabı yazmak için org modunu kullanmak istiyorum. Varolan kodu harici dosyadan pdf'ye dışa aktarırken güzel biçimlendirme veren bir babel kod bloğuna yerleştirmenin bir yolunu arıyorum. ÖrneğinKod snippet'ini

#+BEGIN_SRC python "./code/foo.py" 
    # insert_line (45,50) 
#+END_SRC 

sonra bana foo.py

#+BEGIN_SRC python 
def times_two(x): 
    y = x*2 
    return y 

print times_two(5)  
#+END_SRC 

yılında 50 hat 45 aşağıdakilerden eşdeğer zaten bunu yapmanın var mı verecekti?

cevap

1

Bir ile satırları yazdırmak için bir kabuk komut dosyasını kullanabilirsiniz: başlığını sarın. Örneğin, burada wos.py komut dosyasının 9-18 satırlarını yazdırıyorum. Ayarladığınızda kabuk komut dosyası dışa aktarılmaz: dışa aktarma da.

#+BEGIN_SRC sh :wrap src python :exports results 
sed -n 9,18p wos.py 
#+END_SRC 

#+RESULTS: 
#+BEGIN_src python 
class HTTPSudsPreprocessor(urllib2.BaseHandler): 
    def __init__(self, SID): 
     self.SID = SID 

    def http_request(self, req): 
     req.add_header('cookie', 'SID="'+self.SID+'"') 
     return req 

    https_request = http_request 

#+END_src 

Eğer sed değil iseniz, aynı şeyi yapan küçük bir python komut dosyası yazabilirsiniz. Sadece satır numaralarını birer birer kaydırmayı ve sonuçları kod olarak değiştirmeyi unutmayın.

#+BEGIN_SRC python :results code :exports results 
with open("wos.py") as f: 
    print("".join(f.readlines()[8:17]))  
#+END_SRC 

#+RESULTS: 
#+BEGIN_SRC python 
class HTTPSudsPreprocessor(urllib2.BaseHandler): 
    def __init__(self, SID): 
     self.SID = SID 

    def http_request(self, req): 
     req.add_header('cookie', 'SID="'+self.SID+'"') 
     return req 

    https_request = http_request 

#+END_SRC 
+0

Çalıştığım halde python komut dosyasını çalıştırıyorum gibi görünmüyor. Bana sadece 'Yok' veriyor. Aynı betiği terminalde çalıştırdım ve gayet iyi çalışıyor. Garip ... – Dan

+0

İhtiyacınız olabilir: sonuçlar çıktı kodu. Varsayılanımı değerden çıktıya değiştirdim. –

0

Böyle bir şey işe yarayabilir: kılavuzuna

#+include: "./code/foo.py" :lines "45-50" 

Linki: http://orgmode.org/manual/Include-files.html

+1

Bu işe yarıyor gibi gözüküyor, ancak ben 'BEGIN_SRC' ile elde edilen güzel biçimlendirmeyi alamıyorum. Ve eğer 'begin'r' begin_src' içinde kullanırsam, o zaman dosyayı alamaz ancak 'include' deyimini yazdıramaz. – Dan

+2

@Dan, biçimlendirmeyi almak için, 'src' belirtmeniz gerekir, örn., # # Include: "./code/foo.py": satır "45-50" src python -n 'işaretleme python ve satır numaralarını ekle. –