From 64bfdf4bb11f0fa3c4c55af9b4fa5139bedfca34 Mon Sep 17 00:00:00 2001 From: xunbu Date: Mon, 2 Jun 2025 21:10:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=8D=A2=E4=BA=86cdn=E6=BA=90?= =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E5=A4=8D=E4=BA=86=E6=9C=AC=E5=9C=B0js?= =?UTF-8?q?=E5=AD=97=E4=BD=93=E7=BC=BA=E5=A4=B1=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docutranslate/__init__.py | 2 +- docutranslate/app.py | 6 ++-- docutranslate/template/markdown.html | 16 +--------- docutranslate/translater.py | 44 ++++++++++++++++++++++----- docutranslate/utils/markdown_utils.py | 18 ++++++++++- 5 files changed, 59 insertions(+), 27 deletions(-) diff --git a/docutranslate/__init__.py b/docutranslate/__init__.py index 61961bd..1c8bac4 100644 --- a/docutranslate/__init__.py +++ b/docutranslate/__init__.py @@ -1,4 +1,4 @@ -__version__="0.2.33" +__version__="0.2.34" diff --git a/docutranslate/app.py b/docutranslate/app.py index a068f76..4d62f47 100644 --- a/docutranslate/app.py +++ b/docutranslate/app.py @@ -135,11 +135,11 @@ async def _perform_translation(params: Dict[str, Any], file_contents: bytes, ori md_content = ft.export_to_markdown() try: - await httpx_client.head("https://cdn.jsdelivr.net/npm/katex@0.16.22/dist/contrib/auto-render.min.js", timeout=3) + await httpx_client.head("https://cdn.bootcdn.net/ajax/libs/KaTeX/0.16.9/contrib/auto-render.min.js", timeout=3) html_content = ft.export_to_html(title=current_state["original_filename_stem"], cdn=True) except (httpx.TimeoutException, httpx.RequestError) as e: - print(f"连接cdn.jsdelivr.net失败,错误信息:{e}") - translater_logger.info("无法连接cdn.jsdelivr.net,使用本地js进行pdf渲染") + print(f"连接cdn.bootcdn.net失败,错误信息:{e}") + translater_logger.info("无法连接cdn.bootcdn.net,使用本地js进行pdf渲染") html_content = ft.export_to_html(title=current_state["original_filename_stem"], cdn=False) end_time = time.time() duration = end_time - current_state["task_start_time"] diff --git a/docutranslate/template/markdown.html b/docutranslate/template/markdown.html index ba56c8c..1f5037b 100644 --- a/docutranslate/template/markdown.html +++ b/docutranslate/template/markdown.html @@ -18,21 +18,7 @@ {{markdown}} - - +{{renderMathInElement}} {{mermaid}} " if not cdn else r"""""" - auto_render = f'' if not cdn else r"""""" + katex_css = f"" if not cdn else r"""""" + katex_js = f"" if not cdn else r"""""" + auto_render = f'' if not cdn else r"""""" + # language=javascript + renderMathInElement = r""" + """ if cdn else r""" + """ mermaid = f'' + if self.file_suffix == ".txt": content = html.escape(self.export_to_markdown()).replace("\n", "
") else: @@ -336,6 +365,7 @@ class FileTranslater: katexJs=katex_js, autoRender=auto_render, markdown=content, + renderMathInElement=renderMathInElement, mermaid=mermaid, ) return render diff --git a/docutranslate/utils/markdown_utils.py b/docutranslate/utils/markdown_utils.py index 3d0cec0..7f3d227 100644 --- a/docutranslate/utils/markdown_utils.py +++ b/docutranslate/utils/markdown_utils.py @@ -161,5 +161,21 @@ def embed_inline_image_from_zip(zip_bytes: bytes, filename_in_zip: str, encoding return modified_md_content +def clean_markdown_math_block(markdown): + """清除公式块的多余空格字符""" + + def replace_block(match: re.Match): + return f"{match.group(1).strip()}\n{match.group(2).strip()}\n{match.group(3).lstrip()}" + + pattern = re.compile(r"(^\s*\$\$\s*)\n([\s\S]+?)\n(^\s*\$\$\s*$)", re.MULTILINE) + cleaned_text = pattern.sub(replace_block, markdown) + return cleaned_text + + if __name__ == '__main__': - pass + markdown = r""" +$$ +R T _ { k } ^ { i } ( t ) = \frac { \sum _ { t ^ { \prime } \in [ t - W , t ] } R R _ { k } ^ { i } ( t ^ { \prime } ) \times D R _ { k } ^ { i } ( t ^ { \prime } ) } { \sum _ { t ^ { \prime } \in [ t - W , t ] } D R _ { k } ^ { i } ( t ^ { \prime } ) } +$$ +""" + print(clean_markdown_math_block(markdown))