我想用org模式写一本技术书。我正在寻找一种方法将外部文件中的现有代码插入到babel代码块中,这样可以在导出到pdf时提供良好的格式。
例如
#+BEGIN_SRC python "./code/foo.py"
# insert_line (45,50)
#+END_SRC
然后会在foo.py
#+BEGIN_SRC python
def times_two(x):
y = x*2
return y
print times_two(5)
#+END_SRC
有没有这样做?
答案 0 :(得分:2)
我认为这样的事情可行:
#+include: "./code/foo.py" :lines "45-50"
答案 1 :(得分:2)
您可以使用shell脚本使用:wrap标头打印出行。例如,在这里我打印wos.py脚本的第9-18行。如果设置:export也不会导出shell脚本。
#+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
如果你没有sed,你可以写一个做同样事情的小蟒蛇脚本。只需记住将行号换一,然后将结果设置为代码。
#+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