def update_node(self, node, ref_block_nc, key): """Updates a given node with the information of an address_reference node given by the key.""" if key in node: key = node[key] try: ref = ref_block_nc[key] except KeyError: cspace = get_converter_namespace() try: if key in cspace['latex_labels']: return self.format_latex_ref(key) else: if ',' in key: return self.format_latex_ref(key) elif key in cspace['latex_bib']: return self.format_latex_ref(key) raise KeyError except KeyError: if len(self.converter.doc) > 1: return False self.msg( 'E100', node, ( key, node['_pos'][0], node['_pos'][1] ) ) else: node['_address'] = ref['_address'] for item in ref: if item[0] != '_': node[item] = ref[item] return True
def end(self, node): center = core.Element('center') caption = core.Element('caption') caption['_void'] = 'true' if 'id' in node: latex_labels = get_converter_namespace()['latex_labels'] if node['id'] in latex_labels: self.converter['LatexNC'].msg('E001', node, [node['id']]) else: latex_labels.append(node['id']) caption['id'] = node['id'] del node['id'] caption.extend_children(node) if 'src' in node: if '.tex' in node['src']: image = core.Void('input') image['args'] = node['src'] else: image = core.Void('includegraphics') image['args'] = node['src'] if 'width' in node: image['width'] = node['width'] del node['width'] else: image['width'] = '5.97in' del node['src'] center.append_child(image) node.append_child(center) node.append_child(caption) if node.attlen == 0: node['!htb'] = "" return node
def eval_text(self, text): """Perform replacement on text. """ macro = get_converter_namespace()['macro'] new_text = '' token = '' command = False index = 0 while index < len(text): if text[index:index + 2] in ['\\(', '\\)']: new_text += text[index + 1] index += 2 continue if text[index] == '\\' and command is False: command = True token += text[index] index += 1 continue elif text[index].isalpha(): token += text[index] index += 1 else: new_text, index = self.handle_token(text, token, new_text, index) token = '' command = False if token in macro: node = macro[token] if node['flag'] == 'set': new_text += node['value'] else: tmp, index = self.handle_set_delayed(text, index, node) new_text += tmp else: new_text += token return new_text
def handle_label(self, node): """Collect labels. """ latex_labels = get_converter_namespace()['latex_labels'] if node['id'] in latex_labels: self.msg('E001', node, [node['id']]) else: latex_labels.append(node['id'])
def handle_label(self, node): """Collect labels. """ latex_labels = get_converter_namespace()["latex_labels"] if node["id"] in latex_labels: self.msg("E001", node, [node["id"]]) else: latex_labels.append(node["id"])
def __init__(self, converter): NodeConverter.__init__(self, converter) namespace = get_converter_namespace() if 'latex_labels' not in namespace: namespace['latex_labels'] = list() self.handle = { 'equation': self.handle_equation, 'align': self.handle_align, }
def handle_token(self, text, token, new_text, index): """Helper function for eval_text. """ macro = get_converter_namespace()['macro'] char = text[index] if token in macro: node = macro[token] if node['flag'] == 'set': new_text += node['value'] new_text += self.handle_braces(char, text, index) index += 1 else: tmp, index = self.handle_set_delayed(text, index, node) new_text += tmp else: new_text += token new_text += self.handle_braces(char, text, index) index += 1 return new_text, index
def end(self, node): if 'id' in node: latex_labels = get_converter_namespace()['latex_labels'] if node['id'] in latex_labels: self.converter['LatexNC'].msg('E001', node, [node['id']]) else: latex_labels.append(node['id']) caption = core.Element('figcaption') self.num += 1 caption.append_child('Figure %d: ' % self.num) caption.extend_children(node) if 'src' in node: image = core.Void('img') image['src'] = node['src'] del node['src'] node.append_child(image) node.append_child(caption) return node
def start(self, node): block_ref = get_converter_namespace()["block_ref"] refname = node["_reference_name"] if refname in block_ref: pos1 = node["_pos"] pos2 = block_ref[refname]["_pos"] self.msg("E001", node, (refname, pos1[0], pos1[1], pos2[0], pos2[1])) block_ref[refname] = node parent = node.parent index = node.index del node.parent[node.index] try: if index - 1 > -1: return parent[index - 1] else: raise IndexError except IndexError: parent.append_child("") return parent[0]
def start(self, node): block_ref = get_converter_namespace()['block_ref'] refname = node['_reference_name'] if refname in block_ref: pos1 = node['_pos'] pos2 = block_ref[refname]['_pos'] self.msg('E001', node, (refname, pos1[0], pos1[1], pos2[0], pos2[1])) block_ref[refname] = node parent = node.parent index = node.index del node.parent[node.index] try: if index - 1 > -1: return parent[index - 1] else: raise IndexError except IndexError: parent.append_child('') return parent[0]
def start(self, node): macro = get_converter_namespace()['macro'] if 'class' in node and 'clear' in node['class']: keys = macro.keys() for key in keys: if macro[key]['flag'] == 'set': del macro[key] data = [item.strip() for item in node.data.split(',')] for item in data: if item in macro: del macro[item] parent = node.parent index = node.index del node.parent[node.index] try: if index - 1 > -1: return parent[index-1] else: raise IndexError except IndexError: parent.append_child('') return parent[0]
def start(self, node): macro = get_converter_namespace()['macro'] if 'class' in node and 'clear' in node['class']: keys = macro.keys() for key in keys: if macro[key]['flag'] == 'set': del macro[key] data = [item.strip() for item in node.data.split(',')] for item in data: if item in macro: del macro[item] parent = node.parent index = node.index del node.parent[node.index] try: if index - 1 > -1: return parent[index - 1] else: raise IndexError except IndexError: parent.append_child('') return parent[0]
def update_node(self, node, ref_block_nc, key): """Updates a given node with the information of an address_reference node given by the key.""" if key in node: key = node[key] try: ref = ref_block_nc[key] except KeyError: try: if key in get_converter_namespace()["latex_labels"]: return self.format_latex_ref(key) else: raise KeyError except KeyError: if len(self.converter.doc) > 1: return False self.msg("E100", node, (key, node["_pos"][0], node["_pos"][1])) else: node["_address"] = ref["_address"] for item in ref: if item[0] != "_": node[item] = ref[item] return True
def update_node(self, node, ref_block_nc, key): """Updates a given node with the information of an address_reference node given by the key.""" if key in node: key = node[key] try: ref = ref_block_nc[key] except KeyError: try: if key in get_converter_namespace()['latex_labels']: return self.format_latex_ref(key) else: raise KeyError except KeyError: if len(self.converter.doc) > 1: return False self.msg('E100', node, (key, node['_pos'][0], node['_pos'][1])) else: node['_address'] = ref['_address'] for item in ref: if item[0] != '_': node[item] = ref[item] return True
def eval_text(self, text): """Perform replacement on text. """ macro = get_converter_namespace()['macro'] new_text = '' token = '' command = False index = 0 while index < len(text): if text[index:index+2] in ['\\(', '\\)']: new_text += text[index+1] index += 2 continue if text[index] == '\\' and command is False: command = True token += text[index] index += 1 continue elif text[index].isalpha(): token += text[index] index += 1 else: new_text, index = self.handle_token( text, token, new_text, index ) token = '' command = False if token in macro: node = macro[token] if node['flag'] == 'set': new_text += node['value'] else: tmp, index = self.handle_set_delayed(text, index, node) new_text += tmp else: new_text += token return new_text
def start(self, node): if node['flag'] == 'set': node['value'] = self.eval_text(node['value']) get_converter_namespace()['macro'][node['name']] = node return node
def __getitem__(self, refname): """Return a node containing the reference. """ return get_converter_namespace()['block_ref'][refname]
def __init__(self, converter): NodeConverter.__init__(self, converter) namespace = get_converter_namespace() if 'block_ref' not in namespace: namespace['block_ref'] = dict()
def __init__(self, converter): NodeConverter.__init__(self, converter) namespace = get_converter_namespace() if 'macro' not in namespace: namespace['macro'] = dict()
def __init__(self, converter): NodeConverter.__init__(self, converter) namespace = get_converter_namespace() if "latex_labels" not in namespace: namespace["latex_labels"] = list() self.handle = {"equation": self.handle_equation, "align": self.handle_align}