Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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
Exemplo n.º 6
0
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
Exemplo n.º 7
0
def _acknowledgements(tag, parent):
	result = latex.Env("acknowledgements")
	process_usr(tag, result, parent)
	result.usr['skip'] = ['h1']
	result << tolatex(tag.content, result)
	return result
Exemplo n.º 8
0
def _dedication(tag, parent):
	result = latex.Env("dedication")
	process_usr(tag, result, parent)
	result.usr['skip'] = ['h1']
	result << tolatex(tag.content, result)
	return result
Exemplo n.º 9
0
def _biography(tag, parent):
	result = latex.Env("biosketch")
	process_usr(tag, result, parent)
	result.usr['skip'] = ['h1']
	result << tolatex(tag.content, result)
	return result
Exemplo n.º 10
0
def _abstract(tag, parent):
	result = latex.Env("abstract")
	process_usr(tag, result, parent)
	result.usr['skip'] = ['h1']
	result << tolatex(tag.content, result)
	return result
Exemplo n.º 11
0
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)
Exemplo n.º 12
0
def center2latex(tag, parent):
	result = latex.Env("center")
	process_usr(tag, result, parent)
	result << tolatex(tag.content, result)
	return result
Exemplo n.º 13
0
def dl2latex(tag, parent):
	result = latex.Env("description")
	process_usr(tag, result, parent)
	result << tolatex(tag.content, result)
	return result
Exemplo n.º 14
0
def ol2latex(tag, parent):
	result = latex.Env("enumerate")
	process_usr(tag, result, parent)
	result << tolatex(tag.content, result)
	return result
Exemplo n.º 15
0
def ul2latex(tag, parent):
	result = latex.Env("itemize")
	process_usr(tag, result, parent)
	result << tolatex(tag.content, result)
	return result
Exemplo n.º 16
0
def article2latex(tag, parent):
	result = latex.Env("document")
	process_usr(tag, result, parent)
	result << tolatex(tag.content, result)
	return result