code: def visualize(
      cls, src: List[str], ref: List[List[str]], src_idx: int
  ) -> List[List[str]]:
      src_ref = [src] + ref
      rendered = [[] for _ in range(len(ref))]
      for i, (s, *r_list) in enumerate(zip(*src_ref)):
          src_tokens = s.split()
          ref_tokens = {
              str(ii): r.split() for ii, r in enumerate(r_list)
          }
          alignments = VizseqSrcRefTextAligner.align(
              src_tokens, ref_tokens
          )
          visualized = VizseqSrcRefTextAligner.to_span_html(
              ref_tokens, alignments, "ref", i, f"src_{src_idx}"
          )
          for ii in range(len(r_list)):
              sent_markup = Markup(" ".join(visualized[str(ii)]))
              rendered[ii].append(sent_markup)
      return rendered
  
file_path: vizseq/vizseq/_visualizers/seq_visualizer.py
imports: from typing import Dict, List
  from jinja2 import Markup
  from vizseq._aligners import VizseqSrcRefTextAligner, VizseqRefHypoTextAligner
label_desc: Use image node_id 1 for calling the VizSeqRefVisualizer obj's underlying member method code with example usage: obj.visualize(cls, src, ref, src_idx) and returns: rendered