docs: def generate(self, output_dir, work, matches_filename):
          """Generates HTML reports showing the text of each witness to `work`
          with its matches in `matches` highlighted.
  
          :param output_dir: directory to write report to
          :type output_dir: `str`
          :param work: name of work to highlight
          :type text_name: `str`
          :param matches_filename: file containing matches to highlight
          :type matches_filename: `str`
          :rtype: `str`
  
          """
          template = self._get_template()
          matches = pd.read_csv(matches_filename)
          for siglum in self._corpus.get_sigla(work):
              subm = matches[(matches[constants.WORK_FIELDNAME] != work) |
                             (matches[constants.SIGLUM_FIELDNAME] != siglum)]
              content = self._generate_base(work, siglum)
              content = self._highlight(content, subm)
              content = self._format_content(content)
              text_list = self._generate_text_list(subm)
              report_name = '{}-{}.html'.format(work, siglum)
              self._write(work, siglum, content, output_dir, report_name,
                          template, True, text_list=text_list)