def from_notebook(nb, master): """Convert an nbformat.NotebookNode to a Presentation object""" pres = Presentation(master) slides = [] for cell in nb.cells: if not cell.metadata.get("jupyterlab_powerpoint"): continue meta = cell.metadata.get("jupyterlab_powerpoint") slide_number = int(meta["slide"]) type = meta["type"] placeholder = meta["placeholder"] while slide_number > len(slides): slides.append(None) if slides[slide_number - 1] is None: slides[slide_number - 1] = pres.new_slide(type) slide = slides[slide_number - 1] part = slide.new_part(placeholder) if part.has_text_frame: part.text_frame.text = pandoc(cell["source"], "markdown", "opendocument") for slide in slides: if slide is None: raise Exception("Slide gap") return pres
def pandoc_convert_links(source): return pandoc(source, 'markdown', 'latex', extra_args=[ '--filter', filter_links, '--listings -H', listings, ])
def run(self): # check if there are spaces in the notebook name md_path = self.arguments[0] if ' ' in md_path: raise ValueError( "Due to issues with docutils stripping spaces from links, white " "space is not allowed in notebook filenames '{0}'".format( md_path)) # check if raw html is supported if not self.state.document.settings.raw_enabled: raise self.warning('"%s" directive disabled.' % self.name) # get path to markdown file md_filename = self.arguments[0] md_dir = os.path.join(setup.confdir, '..') md_abs_path = os.path.abspath(os.path.join(md_dir, md_filename)) with open(md_abs_path) as file: source = file.read() ptype = self.pandoc_from if 'from' in self.options: ptype = self.options['from'] if ptype is '': ptype = 'markdown' # if ptype != '': # arglist = ['pandoc', '--from=' + ptype, '--to=rst', md_abs_path] # else: # arglist = ['pandoc', '--to=rst', md_abs_path] # # p = subprocess.Popen(arglist, # stdout=subprocess.PIPE, # stderr=subprocess.PIPE # ) # # out, err = p.communicate() # # print(out) out = pandoc(source, ptype, 'rst') settings = OptionParser(components=(Parser, )).get_default_values() parser = Parser() document = new_document('DOC', settings) parser.parse(out, document) return [node for node in document]
def run(self): # check if there are spaces in the notebook name md_path = self.arguments[0] if ' ' in md_path: raise ValueError( "Due to issues with docutils stripping spaces from links, white " "space is not allowed in notebook filenames '{0}'".format(md_path)) # check if raw html is supported if not self.state.document.settings.raw_enabled: raise self.warning('"%s" directive disabled.' % self.name) # get path to markdown file md_filename = self.arguments[0] md_dir = os.path.join(setup.confdir, '..') md_abs_path = os.path.abspath(os.path.join(md_dir, md_filename)) with open(md_abs_path) as file: source = file.read() ptype = self.pandoc_from if 'from' in self.options: ptype = self.options['from'] if ptype is '': ptype = 'markdown' # if ptype != '': # arglist = ['pandoc', '--from=' + ptype, '--to=rst', md_abs_path] # else: # arglist = ['pandoc', '--to=rst', md_abs_path] # # p = subprocess.Popen(arglist, # stdout=subprocess.PIPE, # stderr=subprocess.PIPE # ) # # out, err = p.communicate() # # print(out) out = pandoc(source, ptype, 'rst') settings = OptionParser(components=(Parser,)).get_default_values() parser = Parser() document = new_document('DOC', settings) parser.parse(out, document) return [node for node in document]
def markdown2rst(source, extra_args=None): """Convert a markdown string to ReST via pandoc. This function will raise an error if pandoc is not installed. Any error messages generated by pandoc are printed to stderr. Parameters ---------- source : string Input string, assumed to be valid markdown. Returns ------- out : string Output as returned by pandoc. """ return pandoc(source, 'markdown', 'rst', extra_args=extra_args)
def markdown2rst(source, extra_args=None): """Convert a markdown string to ReST via pandoc. This function will raise an error if pandoc is not installed. Any error messages generated by pandoc are printed to stderr. Parameters ---------- source : string Input string, assumed to be valid markdown. Returns ------- out : string Output as returned by pandoc. """ return pandoc(source, "markdown", "rst", extra_args=extra_args)
def replacement(a): import textwrap w=a.group(0) theenv=a.group(1) tobetranslated=a.group(2) tobetranslated=textwrap.dedent(tobetranslated) if theenv in environmentMap: tobetranslated=tobetranslated.replace(r'\item',r'/item') #pandoc does not translate lines beginning with \item out=pandoc(tobetranslated, 'markdown', 'latex') out=out.replace(r'/item',r'\item') result = '/begin{' + theenv + '}\n'+ out + '\n\end{' + theenv + '}'; else: tobetranslated=tobetranslated.replace('\\begin','/begin') result = '/begin{' + theenv + '}'+ tobetranslated + '\end{' + theenv + '}'; #the transform \begin --> /begin is done in order to avoid the group to match again #print(result) return result
def markdown2latex(source, markup='markdown', extra_args=None): """Convert a markdown string to LaTeX via pandoc. This function will raise an error if pandoc is not installed. Any error messages generated by pandoc are printed to stderr. Parameters ---------- source : string Input string, assumed to be valid markdown. markup : string Markup used by pandoc's reader default : pandoc extended markdown (see http://johnmacfarlane.net/pandoc/README.html#pandocs-markdown) Returns ------- out : string Output as returned by pandoc. """ return pandoc(source, markup, 'latex', extra_args=extra_args)
def markdown2latex(source, markup="markdown", extra_args=None): """Convert a markdown string to LaTeX via pandoc. This function will raise an error if pandoc is not installed. Any error messages generated by pandoc are printed to stderr. Parameters ---------- source : string Input string, assumed to be valid markdown. markup : string Markup used by pandoc's reader default : pandoc extended markdown (see http://johnmacfarlane.net/pandoc/README.html#pandocs-markdown) Returns ------- out : string Output as returned by pandoc. """ return pandoc(source, markup, "latex", extra_args=extra_args)
def convert_pandoc(source, from_format, to_format, extra_args=None): """Convert between any two formats using pandoc. This function will raise an error if pandoc is not installed. Any error messages generated by pandoc are printed to stderr. Parameters ---------- source : string Input string, assumed to be valid in from_format. from_format : string Pandoc format of source. to_format : string Pandoc format for output. Returns ------- out : string Output as returned by pandoc. """ return pandoc(source, from_format, to_format, extra_args=extra_args)
def markdown2html_pandoc(source, extra_args=None): """Convert a markdown string to HTML via pandoc""" extra_args = extra_args or ['--mathjax'] return pandoc(source, 'markdown', 'html', extra_args=extra_args)
def markdown2html_pandoc(source, extra_args=None): """Convert a markdown string to HTML via pandoc""" extra_args = extra_args or ["--mathjax"] return pandoc(source, "markdown", "html", extra_args=extra_args)
def pandoc_convert_links(source): return pandoc(source, 'markdown', 'latex', extra_args=['--filter', filter_links])
def pandoc_convert_links(source): return pandoc(source, "markdown", "latex", extra_args=["--filter", filter_links])