更换了cdn源,修复了本地js字体缺失的问题
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
__version__="0.2.33"
|
__version__="0.2.34"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -135,11 +135,11 @@ async def _perform_translation(params: Dict[str, Any], file_contents: bytes, ori
|
|||||||
|
|
||||||
md_content = ft.export_to_markdown()
|
md_content = ft.export_to_markdown()
|
||||||
try:
|
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)
|
html_content = ft.export_to_html(title=current_state["original_filename_stem"], cdn=True)
|
||||||
except (httpx.TimeoutException, httpx.RequestError) as e:
|
except (httpx.TimeoutException, httpx.RequestError) as e:
|
||||||
print(f"连接cdn.jsdelivr.net失败,错误信息:{e}")
|
print(f"连接cdn.bootcdn.net失败,错误信息:{e}")
|
||||||
translater_logger.info("无法连接cdn.jsdelivr.net,使用本地js进行pdf渲染")
|
translater_logger.info("无法连接cdn.bootcdn.net,使用本地js进行pdf渲染")
|
||||||
html_content = ft.export_to_html(title=current_state["original_filename_stem"], cdn=False)
|
html_content = ft.export_to_html(title=current_state["original_filename_stem"], cdn=False)
|
||||||
end_time = time.time()
|
end_time = time.time()
|
||||||
duration = end_time - current_state["task_start_time"]
|
duration = end_time - current_state["task_start_time"]
|
||||||
|
|||||||
@@ -18,21 +18,7 @@
|
|||||||
|
|
||||||
{{markdown}}
|
{{markdown}}
|
||||||
</body>
|
</body>
|
||||||
|
{{renderMathInElement}}
|
||||||
<script>
|
|
||||||
document.addEventListener("DOMContentLoaded", function () {
|
|
||||||
renderMathInElement(document.body, {
|
|
||||||
delimiters: [
|
|
||||||
{left: '$$', right: '$$', display: true}, // 块级公式
|
|
||||||
{left: '\\[', right: '\\]', display: true}, // 块级公式
|
|
||||||
{left: '$', right: '$', display: false}, // 行内公式
|
|
||||||
{left: '\\(', right: '\\)', display: false} // 行内公式 (常用)
|
|
||||||
],
|
|
||||||
// • rendering keys, e.g.:
|
|
||||||
throwOnError: false
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
{{mermaid}}
|
{{mermaid}}
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ from docutranslate.agents import MDRefineAgent, MDTranslateAgent
|
|||||||
from docutranslate.cache import document_cacher_global
|
from docutranslate.cache import document_cacher_global
|
||||||
from docutranslate.converter import Document, ConverterMineru
|
from docutranslate.converter import Document, ConverterMineru
|
||||||
from docutranslate.utils.markdown_splitter import split_markdown_text, join_markdown_texts
|
from docutranslate.utils.markdown_splitter import split_markdown_text, join_markdown_texts
|
||||||
from docutranslate.utils.markdown_utils import uris2placeholder, placeholder2_uris, MaskDict
|
from docutranslate.utils.markdown_utils import uris2placeholder, placeholder2_uris, MaskDict, clean_markdown_math_block
|
||||||
from docutranslate.logger import translater_logger
|
from docutranslate.logger import translater_logger
|
||||||
from docutranslate.global_values import available_packages
|
from docutranslate.global_values import available_packages
|
||||||
from docutranslate.utils.resource_utils import resource_path
|
from docutranslate.utils.resource_utils import resource_path
|
||||||
@@ -50,13 +50,14 @@ class FileTranslater:
|
|||||||
self.timeout = timeout
|
self.timeout = timeout
|
||||||
self.file_suffix: str | None = None # 现在处理的文件后缀如".md"、".txt"
|
self.file_suffix: str | None = None # 现在处理的文件后缀如".md"、".txt"
|
||||||
self.cache = cache
|
self.cache = cache
|
||||||
self.cacher=document_cacher_global
|
self.cacher = document_cacher_global
|
||||||
|
|
||||||
def _markdown_format(self):
|
def _markdown_format(self):
|
||||||
# 该方法还需要改进
|
# 该方法还需要改进
|
||||||
# self.markdown=mdformat.text(self.markdown)
|
# self.markdown=mdformat.text(self.markdown)
|
||||||
self.markdown = self.markdown.replace(r'\(', r'\(')
|
self.markdown = self.markdown.replace(r'\(', r'\(')
|
||||||
self.markdown = self.markdown.replace(r'\)', r'\)')
|
self.markdown = self.markdown.replace(r'\)', r'\)')
|
||||||
|
self.markdown = clean_markdown_math_block(self.markdown)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def _mask_uris_in_markdown(self):
|
def _mask_uris_in_markdown(self):
|
||||||
@@ -89,8 +90,6 @@ class FileTranslater:
|
|||||||
def default_translate_agent(self, custom_prompt=None, to_lang="中文") -> MDTranslateAgent:
|
def default_translate_agent(self, custom_prompt=None, to_lang="中文") -> MDTranslateAgent:
|
||||||
return MDTranslateAgent(custom_prompt=custom_prompt, to_lang=to_lang, **self._default_agent_params())
|
return MDTranslateAgent(custom_prompt=custom_prompt, to_lang=to_lang, **self._default_agent_params())
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def _convert2markdown(self, document: Document, formula: bool, code: bool, artifact: Path = None) -> str:
|
def _convert2markdown(self, document: Document, formula: bool, code: bool, artifact: Path = None) -> str:
|
||||||
cached_result = self.cacher.get_cached_result(document, formula, code, convert_engin=self.convert_engin)
|
cached_result = self.cacher.get_cached_result(document, formula, code, convert_engin=self.convert_engin)
|
||||||
if cached_result:
|
if cached_result:
|
||||||
@@ -320,10 +319,40 @@ class FileTranslater:
|
|||||||
# language=html
|
# language=html
|
||||||
pico = f"<style>{resource_path("static/pico.css").read_text(encoding='utf-8')}</style>"
|
pico = f"<style>{resource_path("static/pico.css").read_text(encoding='utf-8')}</style>"
|
||||||
html_template = resource_path("template/markdown.html").read_text(encoding='utf-8')
|
html_template = resource_path("template/markdown.html").read_text(encoding='utf-8')
|
||||||
katex_css = f"<style>{resource_path("static/katex.css").read_text(encoding='utf-8')}</style>" if not cdn else r"""<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.22/dist/katex.min.css" integrity="sha384-5TcZemv2l/9On385z///+d7MSYlvIEw9FuZTIdZ14vJLqWphw7e7ZPuOiCHJcFCP" crossorigin="anonymous">"""
|
katex_css = f"<style>{resource_path("static/katex.css").read_text(encoding='utf-8')}</style>" if not cdn else r"""<link href="https://cdn.bootcdn.net/ajax/libs/KaTeX/0.16.9/katex.min.css" rel="stylesheet">"""
|
||||||
katex_js = f"<script>{resource_path("static/katex.js").read_text(encoding='utf-8')}</script>" if not cdn else r"""<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.22/dist/katex.min.js" integrity="sha384-cMkvdD8LoxVzGF/RPUKAcvmm49FQ0oxwDF3BGKtDXcEc+T1b2N+teh/OJfpU0jr6" crossorigin="anonymous"></script>"""
|
katex_js = f"<script>{resource_path("static/katex.js").read_text(encoding='utf-8')}</script>" if not cdn else r"""<script src="https://cdn.bootcdn.net/ajax/libs/KaTeX/0.16.9/katex.min.js"></script>"""
|
||||||
auto_render = f'<script>{resource_path("static/autoRender.js").read_text(encoding='utf-8')}</script>' if not cdn else r"""<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.22/dist/contrib/auto-render.min.js" integrity="sha384-hCXGrW6PitJEwbkoStFjeJxv+fSOOQKOPbJxSfM6G5sWZjAyWhXiTIIAmQqnlLlh" crossorigin="anonymous"></script>"""
|
auto_render = f'<script>{resource_path("static/autoRender.js").read_text(encoding='utf-8')}</script>' if not cdn else r"""<script src="https://cdn.bootcdn.net/ajax/libs/KaTeX/0.16.9/contrib/auto-render.min.js"></script>"""
|
||||||
|
# language=javascript
|
||||||
|
renderMathInElement = r"""
|
||||||
|
<script>
|
||||||
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
|
renderMathInElement(document.body, {
|
||||||
|
delimiters: [
|
||||||
|
{left: '$$', right: '$$', display: true},
|
||||||
|
{left: '\\[', right: '\\]', display: true},
|
||||||
|
{left: '$', right: '$', display: false},
|
||||||
|
{left: '\\(', right: '\\)', display: false}
|
||||||
|
],
|
||||||
|
throwOnError: false
|
||||||
|
})
|
||||||
|
});
|
||||||
|
</script>""" if cdn else r"""
|
||||||
|
<script>
|
||||||
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
|
renderMathInElement(document.body, {
|
||||||
|
delimiters: [
|
||||||
|
{left: '$$', right: '$$', display: true},
|
||||||
|
{left: '\\[', right: '\\]', display: true},
|
||||||
|
{left: '$', right: '$', display: false},
|
||||||
|
{left: '\\(', right: '\\)', display: false}
|
||||||
|
],
|
||||||
|
fonts: false,
|
||||||
|
throwOnError: false
|
||||||
|
})
|
||||||
|
});
|
||||||
|
</script>"""
|
||||||
mermaid = f'<script>{resource_path("static/mermaid.js").read_text(encoding='utf-8')}</script>'
|
mermaid = f'<script>{resource_path("static/mermaid.js").read_text(encoding='utf-8')}</script>'
|
||||||
|
|
||||||
if self.file_suffix == ".txt":
|
if self.file_suffix == ".txt":
|
||||||
content = html.escape(self.export_to_markdown()).replace("\n", "<br>")
|
content = html.escape(self.export_to_markdown()).replace("\n", "<br>")
|
||||||
else:
|
else:
|
||||||
@@ -336,6 +365,7 @@ class FileTranslater:
|
|||||||
katexJs=katex_js,
|
katexJs=katex_js,
|
||||||
autoRender=auto_render,
|
autoRender=auto_render,
|
||||||
markdown=content,
|
markdown=content,
|
||||||
|
renderMathInElement=renderMathInElement,
|
||||||
mermaid=mermaid,
|
mermaid=mermaid,
|
||||||
)
|
)
|
||||||
return render
|
return render
|
||||||
|
|||||||
@@ -161,5 +161,21 @@ def embed_inline_image_from_zip(zip_bytes: bytes, filename_in_zip: str, encoding
|
|||||||
return modified_md_content
|
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__':
|
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))
|
||||||
|
|||||||
Reference in New Issue
Block a user