code: def horiz_string(*args, **kwargs):
      import unicodedata
      precision = kwargs.get('precision', None)
      sep = kwargs.get('sep', '')
      if len(args) == 1 and not isinstance(args[0], six.string_types):
          val_list = args[0]
      else:
          val_list = args
      val_list = [unicodedata.normalize('NFC', ensure_unicode(val))
                  for val in val_list]
      all_lines = []
      hpos = 0
      for sx in range(len(val_list)):
          val = val_list[sx]
          str_ = None
          if precision is not None:
              if util_type.HAVE_NUMPY:
                  try:
                      if isinstance(val, np.ndarray):
                          str_ = np.array_str(val, precision=precision,
                                              suppress_small=True)
                  except ImportError:
                      pass
          if str_ is None:
              str_ = six.text_type(val_list[sx])
          lines = str_.split('\n')
          line_diff = len(lines) - len(all_lines)
          if line_diff > 0:
              all_lines += [' ' * hpos] * line_diff
          for lx, line in enumerate(lines):
              all_lines[lx] += line
              hpos = max(hpos, len(all_lines[lx]))
          for lx in range(len(all_lines)):
              hpos_diff = hpos - len(all_lines[lx])
              all_lines[lx] += ' ' * hpos_diff + sep
      all_lines = [line.rstrip(' ') for line in all_lines]
      ret = '\n'.join(all_lines)
      return ret