docs: def order_reportnum_patterns_bylen(numeration_patterns):
      """Given a list of user-defined patterns for recognising the numeration
         styles of an institute's preprint references, for each pattern,
         strip out character classes and record the length of the pattern.
         Then add the length and the original pattern (in a tuple) into a new
         list for these patterns and return this list.
         @param numeration_patterns: (list) of strings, whereby each string is
          a numeration pattern.
         @return: (list) of tuples, where each tuple contains a pattern and
          its length.
      """
      def _compfunc_bylen(a, b):
          """Compares regexp patterns by the length of the pattern-text.
          """
          if a[0] < b[0]:
              return 1
          elif a[0] == b[0]:
              return 0
          else:
              return -1
      pattern_list = []
      for pattern in numeration_patterns:
          base_pattern = re_regexp_character_class.sub('1', pattern)
          pattern_list.append((len(base_pattern), pattern))
      pattern_list.sort(_compfunc_bylen)
      return pattern_list