def code2latex(tag, parent): lang = get_lang(tag, parent) if "pre" in parent.usr: page = latex.Env("minipage", args=[latex.Group(["0.95", latex.Cmd("linewidth", inline=True)])], inline=False) process_usr(tag, page, parent) result = latex.Env("lstlisting", args=[("mathescape",)]) process_usr(tag, result, parent) result << convert_code(tag.content, lang, "arg" in parent.usr) page << result pre = latex.Group() pre << latex.Cmd("newbox", ["\\mybox"]) box = latex.Env("lrbox", ["\\mybox"]) box << latex.Cmd("noindent") box << page pre << box pre << latex.Cmd("colorbox", ["code_bg", latex.Cmd("usebox", [latex.Cmd("mybox")])]) return pre else: #color = latex.Cmd("colorbox", ["code_bg"], inline=True) result = latex.Cmd("protect\\lstinline", args=[("mathescape, columns=fixed",)], inline=True, d_open=u'!', d_close=u'!') process_usr(tag, result, parent) group = latex.Group() process_usr(tag, group, result) group << convert_code(tag.content, lang, "arg" in parent.usr).replace('\n', ' ') result.args.append(group) #color.args.append(result) return result #color
def _abstract(tag, parent): result = latex.Group() process_usr(tag, result, parent) p = tag.get('p') if len(p) > 0: abst = latex.Env("abstract") process_usr(p[0], abst, result) abst << tolatex(p[0].content[1][1:], abst) result << abst if len(p) > 1: keys = latex.Env("IEEEkeywords") process_usr(p[1], keys, result) keys << tolatex(p[1].content[2:], result) result << keys return result
def figure2latex(tag, parent): width = None if "style" in tag.attrs and tag.attrs["style"]: width = tag.attrs["style"].get("width") if not width: width = tag.attrs["style"].get("max-width") if "%" in width: width = float(width[0:-1])/100.0 else: width = None figure = latex.Env("figure", args=[("ht!",)]) process_usr(tag, figure, parent) if width: if 'width' in figure.usr: figure.usr['width'] *= width else: figure.usr['width'] = width figure << latex.Cmd("centering") figure << latex.Cmd("advance\\leftskip-1cm") figure << latex.Cmd("advance\\rightskip-1cm") figure << tolatex(tag.content, figure) if 'id' in tag.attrs: figure << latex.Cmd("label", args=[tag.attrs['id']], inline=True) latex_figures.append(tag.attrs['id']) if tag.attrs['id'] in latex_unresolved: for elem in latex_unresolved[tag.attrs['id']]: elem.content = ["Fig. "] + elem.content del latex_unresolved[tag.attrs['id']] else: latex_figures.append('') return figure
def _references(tag, parent): result = latex.Env("thebibliography", [len(tag.content)]) process_usr(tag, result, parent) if 'skip' in result.usr and result.usr['skip']: result.usr['skip'].append('h1') else: result.usr['skip'] = ['h1'] result << tolatex(tag.content, result) return result
def table2latex(tag, parent): cnt = [] cap = None for elem in tag.content: if isinstance(elem, html.Tag) and elem.name == "caption": cap = elem else: cnt.append(elem) result = latex.Env("table", args=[("ht!",)]) process_usr(tag, result, parent) table = latex.Env("tabular") cols = 0 for td in tag["tr"][0].content: if isinstance(td, html.Tag): if "colspan" in td.attrs: cols += int(td.attrs["colspan"]) else: cols += 1 table.args = [" | ".join(["c" for _ in range(0, cols)])] process_usr(tag, table, result) table << tolatex(cnt, table) result << latex.Cmd("small") result << latex.Cmd("centering") result << table if cap is not None: result << tolatex(cap, result) if 'id' in tag.attrs: result << latex.Cmd("label", args=[tag.attrs['id']], inline=True) latex_tables.append(tag.attrs["id"]) if tag.attrs['id'] in latex_unresolved: for elem in latex_unresolved[tag.attrs['id']]: elem.content = ["Tbl. "] + elem.content del latex_unresolved[tag.attrs['id']] return result
def _bio(tag, parent): content = [] img = None name = None for c in tag.content: if isinstance(c, html.STag) and c.name == "img" and not img: img = c elif isinstance(c, html.Tag) and c.name == "b": name = c.content[0] else: content.append(c) result = latex.Env("IEEEbiography") process_usr(tag, result, parent) result.args = [(latex.Group([tolatex(img, result)], "", "{", "}"),), tolatex(name, result)] result << tolatex(content, result) return result
def _acknowledgements(tag, parent): result = latex.Env("acknowledgements") process_usr(tag, result, parent) result.usr['skip'] = ['h1'] result << tolatex(tag.content, result) return result
def _dedication(tag, parent): result = latex.Env("dedication") process_usr(tag, result, parent) result.usr['skip'] = ['h1'] result << tolatex(tag.content, result) return result
def _biography(tag, parent): result = latex.Env("biosketch") process_usr(tag, result, parent) result.usr['skip'] = ['h1'] result << tolatex(tag.content, result) return result
def _abstract(tag, parent): result = latex.Env("abstract") process_usr(tag, result, parent) result.usr['skip'] = ['h1'] result << tolatex(tag.content, result) return result
def img2latex(tag, parent): if "src" in tag.attrs: src = tag.attrs["src"] path = os.path.dirname(src) outsrc = os.path.join(latex_outpath, src) if not os.path.exists(os.path.dirname(outsrc)): try: os.makedirs(os.path.dirname(outsrc)) except OSError as exc: # Guard against race condition if exc.errno != errno.EEXIST: raise if ".svg" in src: width = 1.0 if 'width' in parent.usr: width = parent.usr['width'] if "style" in tag.attrs and tag.attrs["style"]: attr = tag.attrs["style"].get("width") if not attr: attr = tag.attrs["style"].get("max-width") if "," in attr: width *= float(attr[attr.index(",")+1:-2])/100.0 elif "%" in attr: width *= float(attr[0:-1])/100.0 outsrc = outsrc.replace(".svg", ".pdf") intime = os.path.getmtime(src) if os.path.exists(src) else 0 outtime = os.path.getmtime(outsrc) if os.path.exists(outsrc) else 0 if intime > outtime: print("inkscape -D -z --file=\"" + src + "\" --export-pdf=\"" + outsrc + "\" --export-latex") os.system("inkscape -D -z --file=\"" + src + "\" --export-pdf=\"" + outsrc + "\" --export-latex") src = src.replace(".svg", ".pdf_tex") result = latex.Group() result << latex.Cmd("graphicspath", [path+'/'], d_open='{{', d_close='}}') process_usr(tag, result, parent, True) if width: page = latex.Env("minipage", args=[latex.Group([str(width), latex.Cmd("columnwidth", inline=True)])], inline=True) process_usr(tag, page, parent) page << latex.Cmd("centering", inline=False) page << latex.Cmd("def", inline=True) page << latex.Cmd("svgwidth", args=["\\columnwidth"], inline=False) page << latex.Cmd("input", args=[src]) result << page else: result << latex.Cmd("def", inline=True) result << latex.Cmd("svgwidth", args=["\\columnwidth"], inline=False) result << latex.Cmd("input", args=[src], inline=False) return result else: copyfile(src, outsrc) result = latex.Cmd("includegraphics") process_usr(tag, result, parent, True) result.args = [("width=1.0\\columnwidth",), src] return result else: return default2latex(tag, parent)
def center2latex(tag, parent): result = latex.Env("center") process_usr(tag, result, parent) result << tolatex(tag.content, result) return result
def dl2latex(tag, parent): result = latex.Env("description") process_usr(tag, result, parent) result << tolatex(tag.content, result) return result
def ol2latex(tag, parent): result = latex.Env("enumerate") process_usr(tag, result, parent) result << tolatex(tag.content, result) return result
def ul2latex(tag, parent): result = latex.Env("itemize") process_usr(tag, result, parent) result << tolatex(tag.content, result) return result
def article2latex(tag, parent): result = latex.Env("document") process_usr(tag, result, parent) result << tolatex(tag.content, result) return result