docs: def _process_equation(value, fmt):
      """Processes the equation.  Returns a dict containing eq properties."""
  
      # pylint: disable=global-statement
      global Nreferences  # Global references counter
      global cursec       # Current section
  
      # Parse the equation
      attrs = value[0]
  
      # Initialize the return value
      eq = {'is_unnumbered': False,
            'is_unreferenceable': False,
            'is_tagged': False,
            'attrs': attrs}
  
      # Bail out if the label does not conform
      if not LABEL_PATTERN.match(attrs[0]):
          eq['is_unnumbered'] = True
          eq['is_unreferenceable'] = True
          return eq
  
      # Process unreferenceable equations
      if attrs[0] == 'eq:': # Make up a unique description
          attrs[0] = attrs[0] + str(uuid.uuid4())
          eq['is_unreferenceable'] = True
          unreferenceable.append(attrs[0])
  
      # For html, hard-code in the section numbers as tags
      kvs = PandocAttributes(attrs, 'pandoc').kvs
      if numbersections and fmt in ['html', 'html5'] and 'tag' not in kvs:
          if kvs['secno'] != cursec:
              cursec = kvs['secno']
              Nreferences = 1
          kvs['tag'] = cursec + '.' + str(Nreferences)
          Nreferences += 1
  
      # Save to the global references tracker
      eq['is_tagged'] = 'tag' in kvs
      if eq['is_tagged']:
          # Remove any surrounding quotes
          if kvs['tag'][0] == '"' and kvs['tag'][-1] == '"':
              kvs['tag'] = kvs['tag'].strip('"')
          elif kvs['tag'][0] == "'" and kvs['tag'][-1] == "'":
              kvs['tag'] = kvs['tag'].strip("'")
          references[attrs[0]] = kvs['tag']
      else:
          Nreferences += 1
          references[attrs[0]] = Nreferences
  
      # Adjust equation depending on the output format
      if fmt in ['latex', 'beamer']:
          if not eq['is_unreferenceable']:  # Code in the tags
              value[-1] += r'\tag{%s}\label{%s}' % \
                (references[attrs[0]].replace(' ', r'\ '), attrs[0]) \
                if eq['is_tagged'] else r'\label{%s}'%attrs[0]
      elif fmt in ('html', 'html5'):
          pass  # Insert html in process_equations() instead
      else:  # Hard-code in the number/tag
          if isinstance(references[attrs[0]], int):  # Numbered reference
              value[-1] += r'\qquad (%d)' % references[attrs[0]]
          else:  # Tagged reference
              assert isinstance(references[attrs[0]], STRTYPES)
              text = references[attrs[0]].replace(' ', r'\ ')
              if text.startswith('$') and text.endswith('$'):  # Math
                  tag = text[1:-1]
              else:  # Text
                  tag = r'\text{%s}' % text
              value[-1] += r'\qquad (%s)' % tag
  
      return eq