From 484e38fdb30d8aa6deb94bc9a63ea5dd0f33fae0 Mon Sep 17 00:00:00 2001 From: xunbu Date: Sun, 19 Oct 2025 00:26:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96docx=E7=BF=BB=E8=AF=91v4.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ai_translator/docx_translator.py | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/docutranslate/translator/ai_translator/docx_translator.py b/docutranslate/translator/ai_translator/docx_translator.py index bd1e952..b8db153 100644 --- a/docutranslate/translator/ai_translator/docx_translator.py +++ b/docutranslate/translator/ai_translator/docx_translator.py @@ -66,6 +66,22 @@ def is_styled_whitespace_run(run: Run) -> bool: # 仅当 Run 的属性中包含我们定义的“显著”样式之一时,才返回 True。 return any(child.tag in SIGNIFICANT_STYLES for child in rPr) +# ---------- 新增修改部分 1: 增加 is_tab_run 辅助函数 ---------- +def is_tab_run(run: Run) -> bool: + """ + 检查一个 Run 是否主要代表一个制表符,应被视作格式边界。 + 仅当 Run 的文本内容为空或仅包含空白,且 XML 中存在 时, + 才将其视为纯格式化用途的 Run。 + """ + # .text 属性会将 转换成 '\t' + # 如果 .text 在去除空白后仍有内容,说明这个 Run 不仅仅是个制表符。 + if run.text.strip(): + return False + + xml = getattr(run.element, 'xml', '') + return '