docs: def find_numeration(line):
      """Given a reference line, attempt to locate instances of citation
         'numeration' in the line.
         @param line: (string) the reference line.
         @return: (string) the reference line after numeration has been checked
          and possibly recognized/marked-up.
      """
      patterns = (
          # vol,page,year
          re_numeration_vol_page_yr,
          re_numeration_vol_nucphys_page_yr,
          re_numeration_nucphys_vol_page_yr,
          # With sub volume
          re_numeration_vol_subvol_nucphys_yr_page,
          re_numeration_vol_nucphys_yr_subvol_page,
          # vol,year,page
          re_numeration_vol_yr_page,
          re_numeration_nucphys_vol_yr_page,
          re_numeration_vol_nucphys_series_yr_page,
          # vol,page,year
          re_numeration_vol_series_nucphys_page_yr,
          re_numeration_vol_nucphys_series_page_yr,
          # year,vol,page
          re_numeration_yr_vol_page,
      )
  
      for pattern in patterns:
          match = pattern.match(line)
          if match:
              info = match.groupdict()
              series = info.get('series', None)
              if not series:
                  series = extract_series_from_volume(info['vol'])
              if not info['vol_num']:
                  info['vol_num'] = info['vol_num_alt']
              if not info['vol_num']:
                  info['vol_num'] = info['vol_num_alt2']
              return {'year': info.get('year', None),
                      'series': series,
                      'volume': info['vol_num'],
                      'page': info['page'] or info['jinst_page'],
                      'page_end': info['page_end'],
                      'len': match.end()}
  
      return None