From 2017c80724415edb8d2b72528c656904dfaea85f Mon Sep 17 00:00:00 2001 From: crossdark Date: Fri, 25 Oct 2024 19:25:12 +0800 Subject: [PATCH] =?UTF-8?q?3=20=E4=BD=BF=E7=94=A8pymdownx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CrossDown/Core.py | 24 ++++++++++++++++++------ README.html | 37 ++++++++++++++++++++++--------------- README.md | 10 +++++++++- requirements.txt | 9 ++++++--- 4 files changed, 55 insertions(+), 25 deletions(-) diff --git a/CrossDown/Core.py b/CrossDown/Core.py index 65a8aee..a6ed85b 100644 --- a/CrossDown/Core.py +++ b/CrossDown/Core.py @@ -1,6 +1,5 @@ -from re import Match - from markdown.extensions import Extension, extra, admonition, meta, sane_lists, toc, wikilinks, codehilite, legacy_attrs +from pymdownx.arithmatex import ArithmatexExtension from pygments.formatters import HtmlFormatter @@ -48,14 +47,18 @@ class HighlightHtmlFormatter(HtmlFormatter): Extensions = { + # 自带 '基本扩展': extra.ExtraExtension(fenced_code={'lang_prefix': ''}), '警告扩展': admonition.AdmonitionExtension(), '元数据': meta.MetaExtension(), '能列表': sane_lists.SaneListExtension(), '目录': toc.TocExtension(), '内部链接': wikilinks.WikiLinkExtension(), - '代码高亮': codehilite.CodeHiliteExtension(guess_lang=False, pygments_formatter=HighlightHtmlFormatter), - '属性设置': legacy_attrs.LegacyAttrExtension() + # '代码高亮': codehilite.CodeHiliteExtension(guess_lang=False, pygments_formatter=HighlightHtmlFormatter), + '属性设置': legacy_attrs.LegacyAttrExtension(), + + # pymdownx + '超级数学': ArithmatexExtension(), } @@ -68,7 +71,6 @@ class PreProcess(Preprocessor): def run(self, lines: List[str]) -> List[str]: new_lines = [] for line in lines: # 逐行遍历 - print(line) for value in re.findall(r'\{\[(.+?)]}', line): # 找到变量 if value in self.variable: # 变量已定义 line = re.sub(fr'\{{\[{value}]}}', self.variable[value], line) # 替换变量为值 @@ -351,6 +353,15 @@ class CodeLine(Treeprocessor): code.text = key +class CodeBlock(Treeprocessor): + """ + 渲染单行代码 + """ + def run(self, root: xml.etree.ElementTree.Element): + for code in root: + print(code.text) + + class Pre(Extension): """预处理""" def __init__(self, variable: Variable): @@ -465,6 +476,7 @@ class Code(Extension): """ md.registerExtension(self) # 注册扩展 md.treeprocessors.register(CodeLine(variable=self.variable), 'code_line', 0) # 渲染单行代码块 + md.treeprocessors.register(CodeBlock(), 'code_block', 1000) # 渲染多行代码块 def main(text: str, variable: Variable = None) -> Tuple[str, Variable]: @@ -476,5 +488,5 @@ def main(text: str, variable: Variable = None) -> Tuple[str, Variable]: """ if variable is None: variable = {} - md = Markdown(extensions=[Pre(variable=variable), Basic(), Box(), Anchor()] + list(Extensions.values()) + [Code(variable=variable)]) + md = Markdown(extensions=[Pre(variable=variable), Basic(), Anchor()] + list(Extensions.values()) + [Code(variable=variable)]) return md.convert(text), md.Meta diff --git a/README.html b/README.html index 784a1f5..cfb5dc7 100644 --- a/README.html +++ b/README.html @@ -76,6 +76,7 @@
  • 4.2.4 shell
  • 4.2.5 latex
  • 4.2.6 HTML
  • +
  • 4.2.7 未知语言
  • @@ -123,7 +124,7 @@

    CrossDown

    自制的markdown,添加了一些自定义的语法 - 效果请见README.html

    + 效果请见

    1 基本语法

    1.1 标题

    一级标题

    @@ -212,36 +213,42 @@

    4.2.5 latex

    -
    \documentclass{article}  
    -    \title{我的第一个LaTeX文档}  
    -    \author{作者姓名}  
    -    \date{\today}  
    +    
    \documentclass{article}  
    +    \title{我的第一个LaTeX文档}  
    +    \author{作者姓名}  
    +    \date{\today}  
         
    -    \begin{document}  
    +    \begin{document}  
         
    -    \maketitle  
    +    \maketitle  
         
         这是我的第一个LaTeX文档。它包含了一个标题、作者信息、日期和一个简单的正文部分。  
         
    -    \section{引言}  
    +    \section{引言}  
         
         这是引言部分,可以简要介绍文档的主题和目的。  
         
    -    \section{正文}  
    +    \section{正文}  
         
         这是正文部分,可以详细阐述你的观点或研究内容。你可以根据需要添加更多的章节和子章节。  
         
    -    \subsection{子章节示例}  
    +    \subsection{子章节示例}  
         
         这是一个子章节的示例,用于展示如何在LaTeX文档中创建层次结构。  
         
    -    \end{document}
    +    \end{document}
         

    4.2.6 HTML

    *斜体***粗体**~下划线~~~删除线~~==高亮==
         
    +

    4.2.7 未知语言

    +
    #! usr/bin/python3.11
    +    def main():
    +        print('CrossDown')
    +    
    +

    5 转义

    \

    \a

    @@ -382,10 +389,10 @@

    否则所有定义将被集中在文章末尾

    14 外框

    14.1 警告

    -

    这是一个

    警告
    ……

    -
    -

    这是一条警告

    -
    +

    这是一个!!!警告!!!……

    +

    !!! + 这是一条警告 + !!!

    14.2 提醒

    这是一个!!提醒!!……

    !! diff --git a/README.md b/README.md index 4bc5575..082df29 100644 --- a/README.md +++ b/README.md @@ -158,7 +158,7 @@ ls 4.2.5 latex -```latex +```latex-rd \documentclass{article} \title{我的第一个LaTeX文档} \author{作者姓名} @@ -191,6 +191,14 @@ ls *斜体***粗体**~下划线~~~删除线~~==高亮== ``` +4.2.7 未知语言 + +``` +#! usr/bin/python3.11 +def main(): + print('CrossDown') +``` + 5 转义 \\ diff --git a/requirements.txt b/requirements.txt index c23cca1..efbb0cd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,7 @@ Markdown>=3.7 -matplotlib>=3.9.2 -numpy>=2.1.1 -pygments>=2.18.0 \ No newline at end of file +matplotlib~=3.8.2 +numpy~=1.26.2 +pygments>=2.18.0 +CrossDown~=2.2.0 +setuptools~=70.1.1 +emoji~=2.13.2 \ No newline at end of file