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
Ejemplo n.º 4
0
 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"])
Ejemplo n.º 6
0
 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 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
Ejemplo n.º 9
0
 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 __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 start(self, node):
     if node['flag'] == 'set':
         node['value'] = self.eval_text(node['value'])
     get_converter_namespace()['macro'][node['name']] = node
     return node
 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}
 def __init__(self, converter):
     NodeConverter.__init__(self, converter)
     namespace = get_converter_namespace()
     if 'macro' not in namespace:
         namespace['macro'] = dict()