成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

前端整合MathjaxJS的配置筆記

tangr206 / 2530人閱讀

這篇文章是我給Pinghsu主題添加數(shù)學(xué)公式功能的一個(gè)小教程,包含我大量的官方文檔閱讀后的實(shí)踐,跟著這篇配置教程走,你可以做到給任何一個(gè)需要數(shù)學(xué)公式的站點(diǎn)添加支持。

教程如標(biāo)題所述是針對(duì) Mathjax 的實(shí)踐,我簡(jiǎn)單了解一下 KaTex ,也是個(gè)不錯(cuò)的選擇。

MathJax簡(jiǎn)介

MathJax是一款運(yùn)行在瀏覽器中的開(kāi)源的數(shù)學(xué)符號(hào)渲染引擎,使用MathJax可以方便的在瀏覽器中顯示數(shù)學(xué)公式,不需要使用圖片。目前,MathJax可以解析Latex、MathML和ASCIIMathML的標(biāo)記語(yǔ)言。(Wiki)

引入MathJax

在頁(yè)腳處,引入官方的cdn

官方cdn的js在國(guó)內(nèi)訪問(wèn)慢,所以我們一般引入的是國(guó)內(nèi)的公共資源cdn提供的js,這里特別感謝BootCDN

但這個(gè)js還是會(huì)調(diào)用到 cdn.mathjax.org 里的一些配置js文件,我們最好在head內(nèi)加一個(gè)dns-prefetch,用于網(wǎng)頁(yè)加速,了解更多可以訪問(wèn)我另外一篇文章:here



外聯(lián)config說(shuō)明

我們引入MathJax,發(fā)現(xiàn)鏈接后面多了個(gè)?config=TeX-AMS-MML_HTMLorMML

這個(gè)多出來(lái)的東西其實(shí)是告訴MathJax,我們要用到的叫TeX-AMS-MML_HTMLorMML.js的配置文件,其用來(lái)控制顯示數(shù)學(xué)公式的HTMl顯示輸出

這個(gè)配置文件其實(shí)也可以通過(guò)指定URL獲取,官方例子如下

MathJax.js也用到其他js,這些js都來(lái)自官方的cdn里,所以這也是解釋了上面為什么我們需要對(duì)官方cdn進(jìn)行加速

下面是官方更詳細(xì)的TeX-AMS-MML_HTMLorMML配置文件的說(shuō)明

This configuration file is the most general of the pre-defined configurations. It loads all the important MathJax components, including the TeX and MathML preprocessors and input processors, the AMSmath, AMSsymbols, noErrors, and noUndefined TeX extensions, both the native MathML and HTML-with-CSS output processor definitions, and the MathMenu and MathZoom extensions.

In addition, it loads the mml Element Jax, the TeX and MathML input jax main code (not just the definition files), as well as the toMathML extension, which is used by the Show Source option in the MathJax contextual menu. The full version also loads both the HTML-CSS and NativeMML output jax main code, plus the HTML-CSS mtable extension, which is normally loaded on demand.

更多配置文件信息請(qǐng)看:here

內(nèi)聯(lián)config說(shuō)明

與會(huì)同時(shí),官方其實(shí)還提供了一個(gè)能讓我們內(nèi)聯(lián)一個(gè)配置選項(xiàng)的功能

很簡(jiǎn)單就是使用標(biāo)簽對(duì),但注意的是需要聲明類型type="text/x-mathjax-config"。要想讓這個(gè)內(nèi)聯(lián)配置生效就得放在MathJax.js之前,例子如下


其中MathJax.Hub.Config()里的配置選項(xiàng)是本篇文章的重點(diǎn)

識(shí)別公式

我們可以通過(guò)MathJax.Hub.Config()tex2jax去實(shí)現(xiàn)公式識(shí)別

官方例子,如下


其中inlineMath識(shí)別的單行內(nèi)的數(shù)學(xué)公式,我們可以通過(guò)$ ... $( ... )去識(shí)別這種數(shù)學(xué)公式

效果如下:

When $a e 0$, there are two solutions to $(ax^2 + bx + c = 0)$

那么displayMath就是識(shí)別整個(gè)獨(dú)立段落的數(shù)學(xué)公式并且居中顯示,我們可以通過(guò)$$ ... $$[ ... ]去識(shí)別這種數(shù)學(xué)公式

效果如下:

$$
x = {-b pm sqrt{b^2-4ac} over 2a}
$$

在中文世界里,我們往往喜歡用()或者[]去備注或者圈住重要的字段,所以在一般情況下我們并不需要( ... )[ ... ]去識(shí)別公式

但也會(huì)有遇到兩個(gè)$$的情況造成誤傷,別急,先看完,你就知道怎么解決了

區(qū)域選擇性識(shí)別 約束識(shí)別范圍

我們的數(shù)學(xué)公式通常是在文章里,那么如何實(shí)現(xiàn)只在文章的標(biāo)簽對(duì)里面去做公式識(shí)別,如下

var mathId = document.getElementById("post-content");
MathJax.Hub.Config({
    tex2jax: {
        inlineMath: [ ["$","$"], ["(",")"] ],
        displayMath: [ ["$$","$$"], ["[","]"] ]
    }
});
MathJax.Hub.Queue(["Typeset",MathJax.Hub,mathId]);

默認(rèn)情況下,MathJax.Hub.Queue(["Typeset",MathJax.Hub])是對(duì)整個(gè)DOM樹(shù)進(jìn)行識(shí)別的

我們要約束識(shí)別范圍,官方文檔告訴我們MathJax.Hub.Queue的第三個(gè)參數(shù)就是識(shí)別范圍,上面的代碼就是告訴我們要在id為post-content的標(biāo)簽內(nèi)去做公式識(shí)別

避開(kāi)特殊標(biāo)簽和Class

還有其他方法嗎?

有,那就是避開(kāi)一些特殊的標(biāo)簽或者Class,如下

MathJax.Hub.Config({
    tex2jax: {
        inlineMath:  [ ["$", "$"] ],
        displayMath: [ ["$$","$$"] ],
        skipTags: ["script", "noscript", "style", "textarea", "pre","code","a"],
        ignoreClass:"class1"
    }
});
MathJax.Hub.Queue(["Typeset",MathJax.Hub]);

其中skipTags用來(lái)避開(kāi)一些特殊的標(biāo)簽,這里避開(kāi)是script,noscript,style,textarea,pre,code,a的標(biāo)簽內(nèi)

ignoreClass用來(lái)避開(kāi)標(biāo)簽內(nèi)聲明的CSS Class屬性,這里避開(kāi)的是帶有class="class1"的標(biāo)簽內(nèi)

如果我們不想讓mathjax識(shí)別評(píng)論里的公式就可以用ignoreClass

如果有多個(gè)Class需要避開(kāi),我們可以通過(guò) | 來(lái)區(qū)分,寫(xiě)成ignoreClass: "class1|class2"就可以了

更多

獲取更多tex2jax的配置信息訪問(wèn):here

美化數(shù)學(xué)公式 去掉藍(lán)框

上圖所示的是,點(diǎn)擊該公式時(shí)周?chē)幸蝗λ{(lán)色的邊框,我們可以通過(guò)添加CSS去掉,如下

.MathJax{outline:0;}

如果要改變字體大小,如下

.MathJax span{font-size:15px;}

公式太長(zhǎng)的時(shí)候會(huì)溢出,解決如下

.MathJax_Display{overflow-x:auto;overflow-y:hidden;}
擴(kuò)展功能

為了更好實(shí)現(xiàn)美化數(shù)學(xué)公式,我們需要擴(kuò)展一下MathJax.Hub.Config(),如下

MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX", "output/HTML-CSS"],
    tex2jax: {
        inlineMath:  [ ["$", "$"] ],
        displayMath: [ ["$$","$$"] ],
        skipTags: ["script", "noscript", "style", "textarea", "pre","code","a"],
        ignoreClass:"class1"
    },
    "HTML-CSS": {
    }
});
MathJax.Hub.Queue(["Typeset",MathJax.Hub]);

我們可以在HTML-CSS添加可用字體,如下

"HTML-CSS": {
    availableFonts: ["STIX","TeX"]
}

我們要關(guān)閉下圖的公式右擊菜單

也是在HTML-CSS添加設(shè)置,如下

"HTML-CSS": {
    showMathMenu: false
}
去掉加載信息

Mathjax.js在加載的時(shí)候,我們可以在網(wǎng)頁(yè)左下角看到加載情況,可以直接在MathJax.Hub.Config()里配置去掉,如下

MathJax.Hub.Config({
    showProcessingMessages: false,
    messageStyle: "none"
});
整理

這里我整理兩份可以整合到主題的代碼,請(qǐng)根據(jù)自己的需要修改,簡(jiǎn)單注釋了一下

整理一


整理二


配合的css

.MathJax_Display{overflow-x:auto;overflow-y:hidden;}
.MathJax{outline:0;}
InstantClick回調(diào)

代碼如下

適用于整理一的代碼

適用于整理二的代碼

結(jié)語(yǔ)

寫(xiě)了好久···

我還會(huì)再寫(xiě)一篇關(guān)于數(shù)學(xué)公式語(yǔ)法···

歡迎訪問(wèn)我的博客:https://www.linpx.com/

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/81466.html

相關(guān)文章

  • moquette改造筆記(一):整合到SpringBoot

    摘要:整合到本文更加注重代碼實(shí)踐,對(duì)于配置相關(guān)的知識(shí)會(huì)一筆帶過(guò),不做過(guò)多的詳解。筆者是上傳到私服,然后通過(guò)導(dǎo)入。接口是預(yù)留給開(kāi)發(fā)者根據(jù)不同事件處理業(yè)務(wù)邏輯的接口。改造筆記二優(yōu)化邏輯 Moquette簡(jiǎn)介 Mqtt作為物聯(lián)網(wǎng)比較流行的協(xié)議現(xiàn)在已經(jīng)被大范圍使用,其中也有很多開(kāi)源的MQTT BROKEN。Moquette是用java基于netty實(shí)現(xiàn)的輕量級(jí)的MQTT BROKEN. Moquet...

    young.li 評(píng)論0 收藏0
  • ueditor筆記

    摘要:下載完后的包三將集成到項(xiàng)目第一步新建一個(gè)項(xiàng)目,并把引入到項(xiàng)目中。項(xiàng)目中配置其它上傳其它上傳如視頻上傳等等參考圖片上傳,修改即可。一、ueditor是什么 UEditor 是由百度「FEX前端研發(fā)團(tuán)隊(duì)」開(kāi)發(fā)的所見(jiàn)即所得富文本web編輯器,具有輕量,可定制,注重用戶體驗(yàn)等特點(diǎn),開(kāi)源基于MIT協(xié)議,允許自由使用和修改代碼。 二、ueditor的下載 下載網(wǎng)址:https://ueditor.ba...

    番茄西紅柿 評(píng)論0 收藏0
  • Spring Boot學(xué)習(xí)筆記(五)整合MyBatis實(shí)現(xiàn)數(shù)據(jù)庫(kù)訪問(wèn)

    摘要:關(guān)閉進(jìn)程問(wèn)題順利解決。問(wèn)題泄也是一個(gè)奇葩的問(wèn)題,百度一下,原來(lái)碰到的人挺多,原因就是高版本的驅(qū)動(dòng)會(huì)有數(shù)據(jù)庫(kù)和系統(tǒng)時(shí)區(qū)差異我用的版本是,所以碰到了,修改下配置,執(zhí)行時(shí)區(qū)就可以了或者用回版本,該版本不會(huì)存在時(shí)區(qū)問(wèn)題。 本文主要在上一篇Spring Boot學(xué)習(xí)筆記(四)構(gòu)建RESTful API標(biāo)準(zhǔn)工程實(shí)例的基礎(chǔ)上,整合MyBatis,實(shí)現(xiàn)簡(jiǎn)單的MySql數(shù)據(jù)庫(kù)訪問(wèn) 引入依賴 這里主要依賴...

    Tony 評(píng)論0 收藏0
  • Spring學(xué)習(xí)筆記

    摘要:介紹并不局限于某一層是對(duì)象的容器幫我們管理項(xiàng)目中的所有對(duì)象搭建導(dǎo)包直接新建項(xiàng)目,一般的都有,除了依賴準(zhǔn)備類書(shū)寫(xiě)配置書(shū)寫(xiě)代碼測(cè)試中的概念反轉(zhuǎn)控制創(chuàng)建對(duì)象的方式反轉(zhuǎn)了從我們自己創(chuàng)建對(duì)象反轉(zhuǎn)給程序來(lái)創(chuàng)建依賴注入將必須的屬性注入到對(duì)象當(dāng)中是實(shí)現(xiàn)思想 1.spring介紹 spring并不局限于某一層.spring是對(duì)象的容器,幫我們管理項(xiàng)目中的所有對(duì)象 2.spring搭建 1.導(dǎo)包(idea...

    FleyX 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<