1.5.2提纲好了

This commit is contained in:
跨越晨昏 2024-10-06 18:15:24 +08:00
parent f345be0894
commit 97fe6ed5bd
3 changed files with 43 additions and 114 deletions

View File

@ -150,9 +150,12 @@ class Syllabus(BlockProcessor):
return re.match(self.syllabus_re, block) return re.match(self.syllabus_re, block)
def run(self, parent, blocks): def run(self, parent, blocks):
# 处理匹配的块 syllabus = re.match(self.syllabus_re, blocks[0]) # 匹配提纲的号和内容
for num, block in enumerate(blocks): header = xml.etree.ElementTree.SubElement(parent, f'h{len(syllabus.group(1).split("."))}') # 按照提纲号等级创建标题
pass header.set('id', syllabus.group(1)) # 设置提纲ID
header.text = syllabus.group(1) + ' ' + syllabus.group(3) # 设置提纲内容
blocks[0] = ''
return False
class BoxBlockProcessor(BlockProcessor): class BoxBlockProcessor(BlockProcessor):
@ -201,9 +204,19 @@ class Basic(Extension):
r'\[(.*?)]-\((.*?)\)', tag='span', property_='title'), 'hide', 0 r'\[(.*?)]-\((.*?)\)', tag='span', property_='title'), 'hide', 0
) # [在指定的文本里面隐藏一段文本]-(只有鼠标放在上面才会显示隐藏文本) ) # [在指定的文本里面隐藏一段文本]-(只有鼠标放在上面才会显示隐藏文本)
md.inlinePatterns.register(Emoji(r':(.+?):'), 'emoji', 0) # 将emoji短代码转换为emoji字符 md.inlinePatterns.register(Emoji(r':(.+?):'), 'emoji', 0) # 将emoji短代码转换为emoji字符
md.inlinePatterns.register(Syllabus(r'(\d+(\.\d+)*)\s+(.*)'), 'syllabus', 0) # 渲染提纲 md.parser.blockprocessors.register(Syllabus(md.parser), 'syllabus', 11) # 渲染提纲
class Box(Extension):
"""
渲染外框
"""
def extendMarkdown(self, md):
md.registerExtension(self) # 注册扩展
md.parser.blockprocessors.register(BoxBlockProcessor(md.parser), 'box', 175)
def main(text: str) -> Tuple[str, Dict[str, List[str]]]: def main(text: str) -> Tuple[str, Dict[str, List[str]]]:
md = Markdown(extensions=[Basic()] + list(Extensions.values()), safe_mode=False) md = Markdown(extensions=[Basic(), Box()] + list(Extensions.values()), safe_mode=False)
return md.convert(text), md.Meta return md.convert(text), md.Meta

View File

@ -94,12 +94,10 @@
<li><a href="#7">7 提纲</a><ul> <li><a href="#7">7 提纲</a><ul>
<li><a href="#7.1">7.1 提纲号</a><ul> <li><a href="#7.1">7.1 提纲号</a><ul>
<li><a href="#7.1.1">7.1.1 提纲号示例</a></li> <li><a href="#7.1.1">7.1.1 提纲号示例</a></li>
<li><a href="#7.1.2">7.1.2 错误示范</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
</li> </li>
<li><a href="#4">4 错误示范</a></li>
<li><a href="#8">8 注释</a><ul> <li><a href="#8">8 注释</a><ul>
<li><a href="#8.1">8.1 强注释</a></li> <li><a href="#8.1">8.1 强注释</a></li>
<li><a href="#8.2">8.2 弱注释</a></li> <li><a href="#8.2">8.2 弱注释</a></li>
@ -107,7 +105,7 @@
</li> </li>
<li><a href="#9">9 列表</a><ul> <li><a href="#9">9 列表</a><ul>
<li><a href="#9.1">9.1 有序列表</a></li> <li><a href="#9.1">9.1 有序列表</a></li>
<li><a href="#9.2">9.2 无序列表klzzwxhklzzwxhklzzwxh:00800077- Cklzzwxh:0078- D</a></li> <li><a href="#9.2">9.2 无序列表</a></li>
</ul> </ul>
</li> </li>
<li><a href="#10">10 表格</a></li> <li><a href="#10">10 表格</a></li>
@ -119,115 +117,64 @@
<li><a href="#13.3">13.3 放置</a></li> <li><a href="#13.3">13.3 放置</a></li>
</ul> </ul>
</li> </li>
<li><a href="#14">14 扩展</a></li> <li><a href="#14">14 外框</a><ul>
<li><a href="#14.1">14.1 警告</a></li>
</ul>
</li>
</ul> </ul>
</div> </div>
<h1 id="crossdown">CrossDown</h1> <h1 id="crossdown">CrossDown</h1>
<p>自制的markdown,添加了一些自定义的语法klzzwxh:0001效果请见klzzwxh:0000</p> <p>自制的markdown,添加了一些自定义的语法klzzwxh:0001效果请见klzzwxh:0000</p>
<p>
<h1 id="1">1 基本语法</h1> <h1 id="1">1 基本语法</h1>
</p>
<p>
<h2 id="1.1">1.1 标题</h2> <h2 id="1.1">1.1 标题</h2>
</p>
<h1 id="_1">一级标题</h1> <h1 id="_1">一级标题</h1>
<h2 id="_2">二级标题</h2> <h2 id="_2">二级标题</h2>
<h3 id="_3">三级标题</h3> <h3 id="_3">三级标题</h3>
<h4 id="_4">四级标题</h4> <h4 id="_4">四级标题</h4>
<h5 id="_5">五级标题</h5> <h5 id="_5">五级标题</h5>
<h6 id="_6">六级标题</h6> <h6 id="_6">六级标题</h6>
<p>
<h2 id="1.2">1.2 样式</h2> <h2 id="1.2">1.2 样式</h2>
</p>
<p>
<h3 id="1.2.1">1.2.1 <em>斜体</em></h3> <h3 id="1.2.1">1.2.1 <em>斜体</em></h3>
</p>
<p>
<h3 id="1.2.2">1.2.2 <strong>粗体</strong></h3> <h3 id="1.2.2">1.2.2 <strong>粗体</strong></h3>
</p>
<p>
<h3 id="1.2.3">1.2.3 <strong><em>粗斜体</em></strong></h3> <h3 id="1.2.3">1.2.3 <strong><em>粗斜体</em></strong></h3>
</p>
<p>
<h3 id="1.2.4">1.2.4 <u>下划线</u></h3> <h3 id="1.2.4">1.2.4 <u>下划线</u></h3>
</p>
<p>
<h3 id="1.2.5">1.2.5 <s>删除线</s></h3> <h3 id="1.2.5">1.2.5 <s>删除线</s></h3>
</p>
<p>
<h3 id="1.2.6">1.2.6 <mark>高亮</mark></h3> <h3 id="1.2.6">1.2.6 <mark>高亮</mark></h3>
</p>
<p>
<h3 id="1.2.7">1.2.7 <ruby>在文本的正上方添加一行小文本<rt>主要用于标拼音</rt></ruby></h3> <h3 id="1.2.7">1.2.7 <ruby>在文本的正上方添加一行小文本<rt>主要用于标拼音</rt></ruby></h3>
</p>
<p>
<h3 id="1.2.8">1.2.8 <span title="只有鼠标放在上面才会显示隐藏文本">在指定的文本里面隐藏一段文本</span></h3> <h3 id="1.2.8">1.2.8 <span title="只有鼠标放在上面才会显示隐藏文本">在指定的文本里面隐藏一段文本</span></h3>
</p>
<p>
<h3 id="1.2.9">1.2.9 分割线</h3> <h3 id="1.2.9">1.2.9 分割线</h3>
</p>
<hr /> <hr />
<hr /> <hr />
<hr /> <hr />
<p>
<h2 id="1.3">1.3 链接</h2> <h2 id="1.3">1.3 链接</h2>
</p>
<p>
<h3 id="1.3.1">1.3.1 普通链接</h3> <h3 id="1.3.1">1.3.1 普通链接</h3>
</p>
<p><a href="链接地址">链接文本</a></p> <p><a href="链接地址">链接文本</a></p>
<p><a href="https://crossdark.com">CrossDark</a></p> <p><a href="https://crossdark.com">CrossDark</a></p>
<p><a href="https://crossdark.net/">https://crossdark.net/</a></p> <p><a href="https://crossdark.net/">https://crossdark.net/</a></p>
<p>
<h3 id="1.3.2">1.3.2 图片</h3> <h3 id="1.3.2">1.3.2 图片</h3>
</p>
<p><img alt="链接图片" src="链接地址" /></p> <p><img alt="链接图片" src="链接地址" /></p>
<p><img alt="sea" src="https://crossdark.com/wp-content/uploads/2024/05/1715259682-sea.jpg" /></p> <p><img alt="sea" src="https://crossdark.com/wp-content/uploads/2024/05/1715259682-sea.jpg" /></p>
<p>
<h3 id="1.3.3">1.3.3 变量链接</h3> <h3 id="1.3.3">1.3.3 变量链接</h3>
</p>
<p><a href="https://crossdark.com">链接文本</a></p> <p><a href="https://crossdark.com">链接文本</a></p>
<p>
<h1 id="2">2 <abbr title="长的文本">缩写</abbr></h1> <h1 id="2">2 <abbr title="长的文本">缩写</abbr></h1>
</p>
<p>
<h2 id="2.1">2.1 定义</h2> <h2 id="2.1">2.1 定义</h2>
</p>
<p>
<h2 id="2.2">2.2 赋值</h2> <h2 id="2.2">2.2 赋值</h2>
</p>
<p>直接在文本中使用 <abbr title="长的文本">缩写</abbr> 即可</p> <p>直接在文本中使用 <abbr title="长的文本">缩写</abbr> 即可</p>
<p>
<h1 id="3">3 锚点</h1> <h1 id="3">3 锚点</h1>
</p>
<p>{#锚点名}</p> <p>{#锚点名}</p>
<p>
<h1 id="4">4 代码块</h1> <h1 id="4">4 代码块</h1>
</p>
<p>
<h2 id="4.1">4.1 <code>单行</code></h2> <h2 id="4.1">4.1 <code>单行</code></h2>
</p>
<p>
<h3 id="4.1.1">4.1.1 LaTex</h3> <h3 id="4.1.1">4.1.1 LaTex</h3>
</p>
<p><code>$CO_2$</code></p> <p><code>$CO_2$</code></p>
<p><code>$H_2O$</code></p> <p><code>$H_2O$</code></p>
<p>
<h3 id="4.1.2">4.1.2 函数</h3> <h3 id="4.1.2">4.1.2 函数</h3>
</p>
<p><code>¥y=x*2+1¥</code> // 不定义范围</p> <p><code>¥y=x*2+1¥</code> // 不定义范围</p>
<p><code>¥y=x**2¥€-50,50€</code> // 定义了x范围</p> <p><code>¥y=x**2¥€-50,50€</code> // 定义了x范围</p>
<p><code>¥y=x**3¥€-50,50|-100,100€</code> // 定义了y范围</p> <p><code>¥y=x**3¥€-50,50|-100,100€</code> // 定义了y范围</p>
<p>
<h3 id="4.1.3">4.1.3 强调</h3> <h3 id="4.1.3">4.1.3 强调</h3>
</p>
<p><code>{强调文本}</code></p> <p><code>{强调文本}</code></p>
<p>
<h2 id="4.2">4.2 多行</h2> <h2 id="4.2">4.2 多行</h2>
</p>
<p>
<h3 id="4.2.1">4.2.1 YAML</h3> <h3 id="4.2.1">4.2.1 YAML</h3>
</p>
<div class="codehilite"><pre><span></span><code><span class="nt">A</span><span class="p">:</span> <div class="codehilite"><pre><span></span><code><span class="nt">A</span><span class="p">:</span>
<span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1. a</span> <span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1. a</span>
<span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">2. b</span> <span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">2. b</span>
@ -238,15 +185,11 @@
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">c</span> <span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">c</span>
</code></pre></div> </code></pre></div>
<p>
<h3 id="4.2.2">4.2.2 Python</h3> <h3 id="4.2.2">4.2.2 Python</h3>
</p>
<div class="codehilite"><pre><span></span><code><span class="nb">print</span><span class="p">(</span><span class="s1">&#39;CrossDown&#39;</span><span class="p">)</span> <div class="codehilite"><pre><span></span><code><span class="nb">print</span><span class="p">(</span><span class="s1">&#39;CrossDown&#39;</span><span class="p">)</span>
</code></pre></div> </code></pre></div>
<p>
<h3 id="4.2.3">4.2.3 Mermaid</h3> <h3 id="4.2.3">4.2.3 Mermaid</h3>
</p>
<div class="codehilite"><pre><span></span><code><span class="nf">graph</span><span class="w"> </span><span class="n">LR</span> <div class="codehilite"><pre><span></span><code><span class="nf">graph</span><span class="w"> </span><span class="n">LR</span>
<span class="w"> </span><span class="n">A</span><span class="o">--&gt;</span><span class="n">B</span> <span class="w"> </span><span class="n">A</span><span class="o">--&gt;</span><span class="n">B</span>
<span class="w"> </span><span class="n">A</span><span class="o">--&gt;</span><span class="n">C</span> <span class="w"> </span><span class="n">A</span><span class="o">--&gt;</span><span class="n">C</span>
@ -254,15 +197,11 @@
<span class="w"> </span><span class="n">C</span><span class="o">--&gt;</span><span class="n">D</span> <span class="w"> </span><span class="n">C</span><span class="o">--&gt;</span><span class="n">D</span>
</code></pre></div> </code></pre></div>
<p>
<h1 id="5">5 转义</h1> <h1 id="5">5 转义</h1>
</p>
<p>\ </p> <p>\ </p>
<p>\a </p> <p>\a </p>
<p>*</p> <p>*</p>
<p>
<h1 id="6">6 引用</h1> <h1 id="6">6 引用</h1>
</p>
<blockquote> <blockquote>
<p>一级引用</p> <p>一级引用</p>
<blockquote> <blockquote>
@ -280,58 +219,36 @@
</blockquote> </blockquote>
</blockquote> </blockquote>
</blockquote> </blockquote>
<p>引文内添加klzzwxhklzzwxhklzzwxh:00990096klzzwxh:0097</p> <p>引文内添加klzzwxhklzzwxhklzzwxh:00420039klzzwxh:0040</p>
</blockquote> </blockquote>
<p>
<h1 id="7">7 提纲</h1> <h1 id="7">7 提纲</h1>
</p>
<p>
<h2 id="7.1">7.1 提纲号</h2> <h2 id="7.1">7.1 提纲号</h2>
</p>
<p>以数字和点组成,通过空格与提纲名分隔,例如:</p> <p>以数字和点组成,通过空格与提纲名分隔,例如:</p>
<p>
<h3 id="7.1.1">7.1.1 提纲号示例</h3> <h3 id="7.1.1">7.1.1 提纲号示例</h3>
</p>
<p>点不能出现在开头或结尾,例如</p> <p>点不能出现在开头或结尾,例如</p>
<p>.<h3 id="7.1.2">7.1.2 错误示范</h3> <p>.7.1.2 错误示范</p>
</p>
<p>7.1.3. 错误示范</p> <p>7.1.3. 错误示范</p>
<p>不能出现两个及以上连续的点,例如:</p> <p>不能出现两个及以上连续的点,例如:</p>
<p>7..1&hellip;<h1 id="4">4 错误示范</h1> <p>7..1&hellip;4 错误示范</p>
</p>
<p>提纲号会被自动配置为锚点,可直接使用{7}76.1}</p> <p>提纲号会被自动配置为锚点,可直接使用{7}76.1}</p>
<p>
<h1 id="8">8 注释</h1> <h1 id="8">8 注释</h1>
</p>
<p>
<h2 id="8.1">8.1 强注释</h2> <h2 id="8.1">8.1 强注释</h2>
</p> <p>|=klzzwxhklzzwxhklzzwxh:00310026klzzwxh:0029=|</p>
<p>|=klzzwxhklzzwxhklzzwxh:00690064klzzwxh:0067=|</p>
<p>
<h2 id="8.2">8.2 弱注释</h2> <h2 id="8.2">8.2 弱注释</h2>
</p>
<!-- 这是注释 --> <!-- 这是注释 -->
<p>只有在 // 后面才会被移除</p> <p>只有在 // 后面才会被移除</p>
<p><code>// 代码中的注释弱不会被移除</code></p> <p><code>// 代码中的注释弱不会被移除</code></p>
<p>
<h1 id="9">9 列表</h1> <h1 id="9">9 列表</h1>
</p>
<p>
<h2 id="9.1">9.1 有序列表</h2> <h2 id="9.1">9.1 有序列表</h2>
</p>
<ol> <ol>
<li>a</li> <li>a</li>
<li>b</li> <li>b</li>
<li>c</li> <li>c</li>
<li>d</li> <li>d</li>
</ol> </ol>
<p> <h2 id="9.2">9.2 无序列表</h2>
<h2 id="9.2">9.2 无序列表klzzwxhklzzwxhklzzwxh:00800077- Cklzzwxh:0078- D</h2>
</p>
<p>
<h1 id="10">10 表格</h1> <h1 id="10">10 表格</h1>
</p>
<table> <table>
<thead> <thead>
<tr> <tr>
@ -353,31 +270,19 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
<p>
<h1 id="11">11 警告</h1> <h1 id="11">11 警告</h1>
</p>
<div class="admonition warning"> <div class="admonition warning">
<p class="admonition-title">警告标题</p> <p class="admonition-title">警告标题</p>
<p>警告内容</p> <p>警告内容</p>
</div> </div>
<p>
<h1 id="12">12 Emoji</h1> <h1 id="12">12 Emoji</h1>
</p>
<p>🚴</p> <p>🚴</p>
<p>这是一个笑脸😃图案</p> <p>这是一个笑脸😃图案</p>
<p>
<h1 id="13">13 脚注</h1> <h1 id="13">13 脚注</h1>
</p>
<p>
<h2 id="13.1">13.1 使用</h2> <h2 id="13.1">13.1 使用</h2>
</p>
<p>这是一个<sup id="fnref:脚注"><a class="footnote-ref" href="#fn:脚注">1</a></sup></p> <p>这是一个<sup id="fnref:脚注"><a class="footnote-ref" href="#fn:脚注">1</a></sup></p>
<p>
<h2 id="13.2">13.2 定义</h2> <h2 id="13.2">13.2 定义</h2>
</p>
<p>
<h2 id="13.3">13.3 放置</h2> <h2 id="13.3">13.3 放置</h2>
</p>
<p>通过一下代码可以将文章中所有的脚注定义集中于一处</p> <p>通过一下代码可以将文章中所有的脚注定义集中于一处</p>
<div class="footnote"> <div class="footnote">
<hr /> <hr />
@ -388,8 +293,11 @@
</ol> </ol>
</div> </div>
<p>否则所有定义将被集中在文章末尾</p> <p>否则所有定义将被集中在文章末尾</p>
<p> <h1 id="14">14 外框</h1>
<h1 id="14">14 扩展</h1> <h2 id="14.1">14.1 警告</h2>
</p> <p>!!!警告!!!</p>
<div style="display: inline-block; border: 1px solid red;">
<p>这是一条警告</p>
</div>
</body> </body>
</html> </html>

View File

@ -242,4 +242,12 @@ graph LR
否则所有定义将被集中在文章末尾 否则所有定义将被集中在文章末尾
14 扩展 14 外框
14.1 警告
!!!警告!!!
!!!
这是一条警告
!!!