##// END OF EJS Templates
lots of modification for latex
Matthias BUSSONNIER -
Show More
@@ -0,0 +1,65 b''
1 #!/usr/bin/env python
2 #-----------------------------------------------------------------------------
3 # Imports
4 #-----------------------------------------------------------------------------
5 from __future__ import print_function
6 import sys
7 import io
8
9 from converters.template import *
10 from converters.template import ConverterTemplate
11 from converters.html import ConverterHTML
12 # From IPython
13
14 # All the stuff needed for the configurable things
15 from IPython.config.application import Application
16 from IPython.utils.traitlets import List, Unicode, Type, Bool, Dict, CaselessStrEnum
17
18
19 class NbconvertApp(Application):
20
21
22 def __init__(self, **kwargs):
23 super(NbconvertApp, self).__init__(**kwargs)
24 self.classes.insert(0,ConverterTemplate)
25 # ensure those are registerd
26
27
28 def initialize(self, argv=None):
29 self.parse_command_line(argv)
30 cl_config = self.config
31 self.update_config(cl_config)
32
33
34
35 def run(self):
36 """Convert a notebook to html in one step"""
37 template_file = (self.extra_args or [None])[0]
38 ipynb_file = (self.extra_args or [None])[1]
39
40 template_file = sys.argv[1]
41
42 if template_file.startswith('latex'):
43 tex_environement=True
44 else:
45 tex_environement=False
46
47 C = ConverterTemplate(tplfile=sys.argv[1], tex_environement=tex_environement, config=self.config)
48 C.read(ipynb_file)
49
50 output,rest = C.convert()
51
52 print(output.encode('utf-8'))
53
54 def main():
55 """Convert a notebook to html in one step"""
56 app = NbconvertApp.instance()
57 app.initialize()
58 app.start()
59 app.run()
60 #-----------------------------------------------------------------------------
61 # Script main
62 #-----------------------------------------------------------------------------
63
64 if __name__ == '__main__':
65 main()
@@ -37,7 +37,7 b' texenv = Environment('
37 # IPython imports
37 # IPython imports
38 from IPython.nbformat import current as nbformat
38 from IPython.nbformat import current as nbformat
39 from IPython.config.configurable import Configurable
39 from IPython.config.configurable import Configurable
40 from IPython.utils.traitlets import ( Unicode, Any)
40 from IPython.utils.traitlets import ( Unicode, Any, List)
41
41
42 # Our own imports
42 # Our own imports
43 from IPython.utils.text import indent
43 from IPython.utils.text import indent
@@ -96,13 +96,10 b' inlining = {}'
96 inlining['css'] = header_body()
96 inlining['css'] = header_body()
97
97
98
98
99 def filter_data_type(output):
100 for fmt in ['html', 'pdf', 'svg', 'latex', 'png', 'jpg', 'jpeg' , 'text']:
101 if fmt in output:
102 return [fmt]
103
99
104
100
105 env.filters['filter_data_type'] = filter_data_type
101
102
106 env.filters['pycomment'] = python_comment
103 env.filters['pycomment'] = python_comment
107 env.filters['indent'] = indent
104 env.filters['indent'] = indent
108 env.filters['rm_fake'] = rm_fake
105 env.filters['rm_fake'] = rm_fake
@@ -136,7 +133,6 b" texenv.comment_start_string = '((='"
136 texenv.comment_end_string = '=))'
133 texenv.comment_end_string = '=))'
137 texenv.filters['escape_tex'] = escape_tex
134 texenv.filters['escape_tex'] = escape_tex
138
135
139 texenv.filters['filter_data_type'] = filter_data_type
140 texenv.filters['pycomment'] = python_comment
136 texenv.filters['pycomment'] = python_comment
141 texenv.filters['indent'] = indent
137 texenv.filters['indent'] = indent
142 texenv.filters['rm_fake'] = rm_fake
138 texenv.filters['rm_fake'] = rm_fake
@@ -164,7 +160,13 b' def haspyout_transformer(nb,_):'
164 class ConverterTemplate(Configurable):
160 class ConverterTemplate(Configurable):
165 """ A Jinja2 base converter templates"""
161 """ A Jinja2 base converter templates"""
166
162
167 display_data_priority = ['pdf', 'svg', 'png', 'jpg', 'text']
163 display_data_priority = List(['html', 'pdf', 'svg', 'latex', 'png', 'jpg', 'jpeg' , 'text'],
164 config=True,
165 help= """
166 A list of ast.NodeTransformer subclass instances, which will be applied
167 to user input before code is run.
168 """
169 )
168 #-------------------------------------------------------------------------
170 #-------------------------------------------------------------------------
169 # Instance-level attributes that are set in the constructor for this
171 # Instance-level attributes that are set in the constructor for this
170 # class.
172 # class.
@@ -173,6 +175,13 b' class ConverterTemplate(Configurable):'
173
175
174
176
175 infile_dir = Unicode()
177 infile_dir = Unicode()
178 def display_data_priority_changed(self, name, old, new):
179 print('== changed', name,old,new)
180
181 def filter_data_type(self,output):
182 for fmt in self.display_data_priority:
183 if fmt in output:
184 return [fmt]
176
185
177 def __init__(self, tplfile='fullhtml', preprocessors=[], config=None,tex_environement=False, **kw):
186 def __init__(self, tplfile='fullhtml', preprocessors=[], config=None,tex_environement=False, **kw):
178 """
187 """
@@ -186,11 +195,13 b' class ConverterTemplate(Configurable):'
186 """
195 """
187 self.env = texenv if tex_environement else env
196 self.env = texenv if tex_environement else env
188 self.ext = '.tplx' if tex_environement else '.tpl'
197 self.ext = '.tplx' if tex_environement else '.tpl'
189 self.template = self.env.get_template(tplfile+self.ext)
190 self.nb = None
198 self.nb = None
191 self.preprocessors = preprocessors
199 self.preprocessors = preprocessors
192 self.preprocessors.append(haspyout_transformer)
200 self.preprocessors.append(haspyout_transformer)
193 super(ConverterTemplate, self).__init__(config=config, **kw)
201 super(ConverterTemplate, self).__init__(config=config, **kw)
202 self.env.filters['filter_data_type'] = self.filter_data_type
203 self.template = self.env.get_template(tplfile+self.ext)
204
194
205
195
206
196 def process(self):
207 def process(self):
@@ -6,6 +6,7 b' import sys'
6 import io
6 import io
7 from converters.template import *
7 from converters.template import *
8
8
9
9 template_file = sys.argv[1]
10 template_file = sys.argv[1]
10
11
11 if template_file.startswith('latex'):
12 if template_file.startswith('latex'):
@@ -14,6 +14,7 b' tex/%.tplx: %.tpl'
14 -e 's/}}/)))/g' \
14 -e 's/}}/)))/g' \
15 -e 's/{#/((=/g' \
15 -e 's/{#/((=/g' \
16 -e 's/#}/=))/g' \
16 -e 's/#}/=))/g' \
17 -e "s/tpl'/tplx'/g" \
17 $^ >> $@
18 $^ >> $@
18
19
19
20
@@ -1,5 +1,5 b''
1 ((= autogenerated file do not edit =))
1 ((= autogenerated file do not edit =))
2 ((*- extends 'null.tpl' -*))
2 ((*- extends 'null.tplx' -*))
3
3
4 ((=display data priority=))
4 ((=display data priority=))
5
5
@@ -1,15 +1,10 b''
1 ((*- extends 'null.tplx' -*))
1 ((*- extends 'display_priority.tplx' -*))
2
2
3 ((* block in_prompt *))
3 ((* block in_prompt *))((* endblock in_prompt *))
4 # In[(((cell.prompt_number if cell.prompt_number else ' ')))]:
5 ((* endblock in_prompt *))
6
4
7 ((* block output_prompt *))
5 ((* block output_prompt *))((* endblock output_prompt *))
8 # Out[(((cell.prompt_number)))]:((* endblock output_prompt *))
9
6
10 ((* block codecell *))
7 ((* block codecell *))\begin{codecell}((( super() )))
11 \begin{codecell}
12 ((( super() )))
13 \end{codecell}
8 \end{codecell}
14 ((* endblock *))
9 ((* endblock *))
15
10
@@ -35,23 +30,32 b' it introduces a new line'
35 ((= .... =))
30 ((= .... =))
36
31
37
32
33 ((*- block output_group -*))
34 \begin{codeoutput}
35 ((( super() )))
36 \end{codeoutput}((* endblock *))
37
38
38 ((* block pyout *))
39 ((* block pyout *))
39 ((( output.text| indent | pycomment)))
40 ((( output.text)))
40 ((* endblock pyout *))
41 ((* endblock pyout *))
41
42
43 ((* block data_text *))
44 \begin{verbatim}
45 ((( output.text )))
46 \end{verbatim}
47 ((* endblock *))
48
42 ((* block stream *))
49 ((* block stream *))
43 ((( output.text| indent | pycomment)))
50 \begin{verbatim}
51 ((( output.text)))
52 \end{verbatim}
44 ((* endblock stream *))
53 ((* endblock stream *))
45
54
46
55
47
56
48
57
49 ((* block display_data scoped *))
58 ((* block markdowncell scoped *))((( cell.source | markdown2latex )))
50 # image file:
51 ((* endblock display_data *))
52
53 ((* block markdowncell scoped *))
54 ((( cell.source | markdown2latex )))
55 ((* endblock markdowncell *))
59 ((* endblock markdowncell *))
56
60
57 ((* block headingcell scoped *))
61 ((* block headingcell scoped *))
@@ -68,8 +72,7 b' unknown type (((cell.type)))'
68
72
69
73
70
74
71 ((* block body *))
75 ((* block body *))\begin{document}
72 \begin{document}
73 ((( super() )))
76 ((( super() )))
74 \end{document}
77 \end{document}
75 ((* endblock*))
78 ((* endblock*))
General Comments 0
You need to be logged in to leave comments. Login now