<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Loading

      editormd解析公式遇到的問題

      場景描述

      我們公司有需要 將 md 渲染 呈現到網頁上的需求,內部使用了 editor.md來完成該功能。
      但在使用的過程中 碰到了如下問題

      1. 部分特定的 latex 公式解析不正確
        如下 latex部分
      $$
      NV_{n} = NV_{0} \times P_{0} \times P_{1} \times P_{2} \times \dots \times P_{n}
      $$
      

      這種情況下 editor.md 的解析會直接報錯,原因是在 之前調用 marked() 進行 markdown 解析的時候, 將 _ 轉義成了<em>
      2. 不同方式初始化 editor.md 會導致不同的 latex 渲染效果

      //方式一
      editormd.markdownToHTML("test-editormd-view", {
        //markdown        : markdown ,//+ "\r\n" + $("#append-test").text(),
        //htmlDecode      : true,       // 開啟 HTML 標簽解析,為了安全性,默認不開啟
      
        //toc             : false,
        //tocm            : true,    // Using [TOCM]
        tocContainer    : "#custom-toc-container", // 自定義 ToC 容器層
        //gfm             : false,
        //tocDropdown     : true,
        // markdownSourceCode : true, // 是否保留 Markdown 源碼,即是否刪除保存源碼的 Textarea 標簽
        emoji           : true,
        taskList        : true,
        tex             : true,  // 默認不解析
        flowChart       : true,  // 默認不解析
        sequenceDiagram : true,  // 默認不解析
      });
      
      
      //方式二
      editormd("test-editormd-view2", {
                          htmlDecode      : "style,script,iframe",  // you can filter tags decode
                          readOnly        : true,
                          styleActiveLine : false,   // disable active line
                          tex             : true,  // 默認不解析
                          path : '../lib/',
                      });
      

      造成此原因的情況是 源代碼中這兩種方式會調用不同的 katex 處理細節

      editormd.$katex.render(tex.text(), tex[0]); // 1503  當你使用editormd的時候被調用
      
      katex.render(tex.html().replace(/&lt;/g, "<").replace(/&gt;/g, ">"), tex[0]);     //4018 當你使用editormd.markdownToHTML的時候被調用
      

      解決過程

      • 針對情況二

        • 我們嘗試了 將兩端的代碼統一為 tex.text() 調用
      • 針對情況一

        • 我們首先 將有問題的 latex 公式復制至最新的 katex 在線解析器中,用于排除 katex 類庫無法解析的問題。
        • 公式在 katex 中可以被解析,故嘗試升級 katex 版本號,升至最新再次預覽。
        • 依然不行,在調用 katex 渲染處打斷點 (editormd.js#4017),輸出日志得到 如下
        • <p> <span class="editormd-tex"> NV<em>{n} = NV</em>{0} \times P<em>{0} \times P</em>{1} \times P<em>{2} \times \dots \times P</em>{n} </span> </p>
        • 閱讀源代碼發現 解析的 tex 是由上游的 marked 解析得到的,再次斷點,得到如下日志
        • <p> <span class="editormd-tex"> NV<em>{n} = NV</em>{0} \times P<em>{0} \times P</em>{1} \times P<em>{2} \times \dots \times P</em>{n} </span> </p>
        • 發現從源頭就出現了錯誤的解析,查看 marked 版本號,發現是 0.3.x ,故嘗試升級 marked
        • marked 升級到最新后,發現 如下問題
          • api 不兼容,最新的 marked 與 老版本 marked 存在大量 api 兼容性問題
          • 嘗試新建工程,只用 marked 解析,驗證是否 可以得到正確的 解析結果
            • 驗證過程中,關于 _ 的驗證得到了預期的結果,但形如 ABC**How To Use:**The Demo 這樣的文本 出現了不一致的解析
        • marked 升級無法解決該問題,轉變方向

      解決方案

      1. 不使用$$進行行內公式渲染,使用 latex 代碼塊進行公式的書寫,
      • 優點:簡單,無需改動代碼
      • 缺點: 復雜公式無法內嵌在行內。影響排版
      1. 基于 marked 二次開發 markdown 編輯器,并結合社區 marked-katex 來完成公式的渲染(我們選擇的方案)
      • 優點:方便升級,可以基于 marked 提供的擴展接口進行升級
      • 缺點:需要理解 marked 相關 api。
      posted @ 2024-07-25 19:03  jnzhcn  閱讀(146)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 一区二区三区激情都市| 宁蒗| 国产一二三四区中| 色视频在线观看免费视频| 国产精品一区二区久久岳| 无码一区二区三区久久精品| 亚洲中文字幕在线无码一区二区| 老师破女学生处特级毛ooo片| 国产精品久久久久影院色| 亚洲中文在线精品国产| 四川丰满少妇无套内谢| 国内精品大秀视频日韩精品| 2020国产欧洲精品网站| 亚洲av色精品一区二区| 国产福利微视频一区二区| 性色在线视频精品| 亚洲人午夜精品射精日韩| 精品 无码 国产观看| 日韩精品中文字幕国产一| 日日噜噜夜夜狠狠视频| 万安县| 久久99久久99精品免视看国产成人| 香蕉乱码成人久久天堂爱| 国产美女久久久亚洲综合| 欧美日韩精品一区二区视频| 热re99久久精品国产99热| 国产三级精品三级在线区| 红杏av在线dvd综合| 久久综合色之久久综合色| bt天堂新版中文在线| 一本大道久久香蕉成人网| 丝袜美腿亚洲综合第一页| 国内精品无码一区二区三区| 亚洲av成人免费在线| 在线精品国产中文字幕| 一本一本久久aa综合精品| 夜夜爽77777妓女免费看| 国产视频最新| 色狠狠综合天天综合综合| 韩国av无码| 日本精品aⅴ一区二区三区|