code: def make_multisat(nucsat_tuples):
      
      nucsat_tuples = [tup for tup in nucsat_tuples]  # unpack the iterable, so we can check its length
      assert len(nucsat_tuples) > 1, \
          "A multisat relation bundle must contain more than one relation"
  
      result = "\dirrel\n\t"
      first_relation, remaining_relations = nucsat_tuples[0], nucsat_tuples[1:]
      
      relname, nuc_types, elements = first_relation
      first_nucleus_pos = current_nucleus_pos = nuc_types.index('N')
      result_segments = []
      
      for i, nuc_type in enumerate(nuc_types):
          if nuc_type == 'N':
              result_segments.append(NUC_TEMPLATE.substitute(nucleus=elements[i]))
          else:
              result_segments.append(SAT_TEMPLATE.substitute(satellite=elements[i], relation=relname))
      
      for (relname, nuc_types, elements) in remaining_relations:
          for i, nuc_type in enumerate(nuc_types):
              if nuc_type == 'N':  # all relations share the same nucleus, so we don't need to reprocess it.
                  continue
              else:
                  result_segment = SAT_TEMPLATE.substitute(satellite=elements[i], relation=relname)
                  if i < first_nucleus_pos:  # satellite comes before the nucleus
                      result_segments.insert(current_nucleus_pos, result_segment)
                      current_nucleus_pos += 1
                  else:
                      result_segments.append(result_segment)
      
      return result + '\n\t'.join(result_segments)
docs: Creates a rst.sty Latex string representation of a multi-satellite RST subtree
      (i.e. a set of nucleus-satellite relations that share the same nucleus.