From a661e290301c8dd36a27be7b7748e1736b618012 Mon Sep 17 00:00:00 2001 From: qiancai Date: Fri, 29 May 2026 17:41:48 +0800 Subject: [PATCH 1/4] Update merge_by_toc.py --- scripts/merge_by_toc.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/scripts/merge_by_toc.py b/scripts/merge_by_toc.py index 6c40b6bdde001..589627cafcfe5 100755 --- a/scripts/merge_by_toc.py +++ b/scripts/merge_by_toc.py @@ -205,6 +205,26 @@ def replace_heading(match): return replace_heading +# remove / tags for PDF output +sticky_header_table_pattern = re.compile(r'^\s*\s*$') + +def remove_sticky_header_table(text): + lines = text.split('\n') + result = [] + i = 0 + while i < len(lines): + if sticky_header_table_pattern.match(lines[i]): + prev_blank = len(result) > 0 and result[-1].strip() == '' + next_blank = i + 1 < len(lines) and lines[i + 1].strip() == '' + if prev_blank and next_blank: + i += 2 + else: + i += 1 + else: + result.append(lines[i]) + i += 1 + return '\n'.join(result) + # remove copyable snippet code def remove_copyable(match): return "" @@ -224,6 +244,7 @@ def remove_copyable(match): chapter = replace_variables(chapter, variables) chapter = replace_link_wrap(chapter, name) chapter = copyable_snippet_pattern.sub(remove_copyable, chapter) + chapter = remove_sticky_header_table(chapter) chapter = extract_custom_ids_and_clean(chapter) chapter = replace_custom_id_links(chapter) # This block is to filter xxx From 43544e0f689d52b7a5fc011a95d3c1012668ff3c Mon Sep 17 00:00:00 2001 From: qiancai Date: Fri, 29 May 2026 17:51:48 +0800 Subject: [PATCH 2/4] resolve comments --- scripts/merge_by_toc.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/merge_by_toc.py b/scripts/merge_by_toc.py index 589627cafcfe5..87bef21a99233 100755 --- a/scripts/merge_by_toc.py +++ b/scripts/merge_by_toc.py @@ -206,7 +206,7 @@ def replace_heading(match): # remove / tags for PDF output -sticky_header_table_pattern = re.compile(r'^\s*\s*$') +sticky_header_table_pattern = re.compile(r'^\s*\s*$') def remove_sticky_header_table(text): lines = text.split('\n') @@ -225,6 +225,7 @@ def remove_sticky_header_table(text): i += 1 return '\n'.join(result) + # remove copyable snippet code def remove_copyable(match): return "" From 34e7d90488d77ce4ff75975e3ee7ad549e1a6191 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Wed, 3 Jun 2026 18:02:44 +0800 Subject: [PATCH 3/4] Update scripts/merge_by_toc.py Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- scripts/merge_by_toc.py | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/merge_by_toc.py b/scripts/merge_by_toc.py index 87bef21a99233..779a7ba17a37c 100755 --- a/scripts/merge_by_toc.py +++ b/scripts/merge_by_toc.py @@ -226,6 +226,7 @@ def remove_sticky_header_table(text): return '\n'.join(result) + # remove copyable snippet code def remove_copyable(match): return "" From d02a47610e7502b6bed49cfd3558c5fbdbdf690a Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Wed, 3 Jun 2026 18:03:24 +0800 Subject: [PATCH 4/4] Update scripts/merge_by_toc.py --- scripts/merge_by_toc.py | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/merge_by_toc.py b/scripts/merge_by_toc.py index 779a7ba17a37c..87bef21a99233 100755 --- a/scripts/merge_by_toc.py +++ b/scripts/merge_by_toc.py @@ -226,7 +226,6 @@ def remove_sticky_header_table(text): return '\n'.join(result) - # remove copyable snippet code def remove_copyable(match): return ""