@@ -416,9 +416,8 @@ def handle_start_new_item(self, index, paragraph):
416
416
else :
417
417
level_id = int (level .level_id )
418
418
current_level_id = int (self .current_span .numbering_level .level_id )
419
- if level_id > current_level_id or self . inside_parent_span ( paragraph ) :
419
+ if level_id > current_level_id :
420
420
# Add a new span + item to hold this new level
421
-
422
421
next_numbering_span = NumberingSpan (
423
422
numbering_level = level ,
424
423
numbering_definition = num_def ,
@@ -428,6 +427,7 @@ def handle_start_new_item(self, index, paragraph):
428
427
next_numbering_item = NumberingItem (
429
428
numbering_span = next_numbering_span ,
430
429
)
430
+
431
431
next_numbering_span .children .append (next_numbering_item )
432
432
self .current_item .append_child (next_numbering_span )
433
433
self .current_span = next_numbering_span
@@ -462,6 +462,28 @@ def handle_start_new_item(self, index, paragraph):
462
462
)
463
463
self .current_item_index = index
464
464
self .current_span .append_child (self .current_item )
465
+ elif self .inside_parent_span (paragraph ):
466
+ parent_span = self .find_parent_numbering_span (paragraph )
467
+ parent_span_last_item = parent_span .children [- 1 ]
468
+
469
+ next_numbering_span = NumberingSpan (
470
+ numbering_level = level ,
471
+ numbering_definition = num_def ,
472
+ parent = parent_span ,
473
+ )
474
+
475
+ self .numbering_span_stack .append (next_numbering_span )
476
+ next_numbering_item = NumberingItem (
477
+ numbering_span = next_numbering_span ,
478
+ )
479
+
480
+ next_numbering_span .children .append (next_numbering_item )
481
+ # add this span to the parent list, which mean that parent list may be a different list
482
+ parent_span_last_item .append_child (next_numbering_span )
483
+
484
+ self .current_span = next_numbering_span
485
+ self .current_item = next_numbering_item
486
+ self .current_item_index = index
465
487
466
488
def find_previous_numbering_span_with_lower_level (self , level_id ):
467
489
previous_span = None
@@ -484,6 +506,23 @@ def find_previous_numbering_span_by_num_def(self, paragraph):
484
506
self .numbering_span_stack .pop ()
485
507
return previous_span
486
508
509
+ def find_parent_numbering_span (self , paragraph ):
510
+ previous_span = None
511
+
512
+ num_id = paragraph .numbering_definition .abstract_num_id
513
+ parent_id = self .child_parent_num_map .get (num_id , None )
514
+ if not parent_id :
515
+ return previous_span
516
+
517
+ while self .numbering_span_stack :
518
+ previous_span = self .numbering_span_stack [- 1 ]
519
+ if previous_span .numbering_definition .abstract_num_id == parent_id :
520
+ # we found the parent span of the paragraph item
521
+ break
522
+ self .numbering_span_stack .pop ()
523
+
524
+ return previous_span
525
+
487
526
def handle_paragraph (self , index , paragraph ):
488
527
level = self .get_numbering_level (paragraph )
489
528
num_def = None
0 commit comments