mirror of
https://ghfast.top/https://github.com/zsjy/halo-theme-dream2.0-plus.git
synced 2025-03-15 18:59:40 +08:00
feat(katex): 支持公式
This commit is contained in:
parent
4efe429012
commit
0da46f418c
@ -188,6 +188,19 @@ const postContext = {
|
||||
localStorage.setItem(name, encrypt(JSON.stringify(commentIds)))
|
||||
}
|
||||
postContextInitial = true
|
||||
},
|
||||
/* 初始化公式 */
|
||||
initKatex() {
|
||||
let $mainContent = $('.main-content')
|
||||
if (!window.katex && $mainContent.length !== 0) {
|
||||
return
|
||||
}
|
||||
$mainContent.find('.katex--inline').each(function (index, domEle) {
|
||||
katex.render(domEle.innerText, domEle, { displayMode: false })
|
||||
})
|
||||
$mainContent.find('.katex--display').each(function (index, domEle) {
|
||||
katex.render(domEle.innerText, domEle, { displayMode: true })
|
||||
})
|
||||
}
|
||||
}
|
||||
window.postPjax = function (serialNumber) {
|
||||
|
2
templates/assets/js/post.min.js
vendored
2
templates/assets/js/post.min.js
vendored
@ -1 +1 @@
|
||||
(()=>{let t=!1;const a={initCodeBlock(){var e=$("*:not(figure) > pre > code");0!==e.length&&e.each(function(e){var t=$(this).parent();let i=$(this).attr("class"),n="",a=!1,o=!1;if(null!=i){var s=i.match(/[|<](.*)$/),l=i.match(/:select/);if(s||l){let e=0;l&&(e=l.index,s?s[1].endsWith(l[0])&&(s[1]=s[1].substring(0,s[1].length-l[0].length)):n=i.substring(9,l.index),a=!0),s&&(e=s.index<e?s.index:e,"<"===s[0][0]&&(o=!0),n=s[1]),$(this).attr("class",i.substring(0,e)),n=n||i.substring(9,e)}else n=i.substring(9)}let r=$(this).text().split("\n")||[],d=r.length-1,c=String(d).length,g=(1===c&&(c=2),"");for(var p=0;p<d;p++)g+=`<li ${a&&/^\s*\|\+\s+/.test(r[p])?'class="code-select"':""}>${String(p+1).padStart(c,0)}</li>`;a&&$(this).text($(this).text().replace(/(^\s*)\|\+\s/gm,"$1"));let h=`codeBlock${e}-`+(new Date).getTime(),f="";o&&(f=" close",$(this).parent().hide());l=`<div><i class="fa fa-angle-down${f}" data-code='#${h}'></i><i class="fa fa-clone btn-clipboard" title="复制代码" data-clipboard-target='#${h}'></i></div>`;$(this).attr("id",h),t.prepend(`<ul>${g}</ul>`),d>DreamConfig.code_fold_line?t.wrap('<figure class="fold hljs"></figure>').append('<div class="expand-done"><i class="fa fa-angle-double-up"></i></div>'):t.wrap('<figure class="hljs"></figure>'),t.parent().prepend(`<figcaption>${n}${l}</figcaption>`)})},initLiterature(){$(".literature-content>p:not([class]),.literature-content>mew-hide>p:not([class])").each(function(){0===$(this).children(":not(code,a,strong,em,ins,b,s,br,span.pwd)").length&&$(this).addClass("note")})},initLike(){Utils.initLikeButton(".admire .agree.like","posts")},initHighlighting(){hljs.initHighlightingOnLoad()},initShare(){if(window.DShare){let e=$(".cover-image").css("background-image");e=e&&e.substring(5,e.length-2),DShare.create(".dshare",{image:e,imageSelector:".main-content"})}},initClipboard(){window.clipboard||(window.clipboard=new ClipboardJS(".btn-clipboard"),clipboard.on("error",function(e){e.clearSelection(),Qmsg.error("您的浏览器不支持复制")}),clipboard.on("success",function(){Qmsg.success("复制成功")}))},foldImage(){var e;DreamConfig.img_fold_height&&((e=$(".article .gallery-item>[data-fancybox]>img")).parent().addClass("fold"),e.each(function(){const e=$(this).parent();this.complete?this.scrollHeight>=DreamConfig.img_fold_height?e.append('<div class="expand-done"><i class="fa fa-angle-double-up"></i></div>'):e.removeClass("fold"):this.onload=function(){this.scrollHeight>=DreamConfig.img_fold_height?e.append('<div class="expand-done"><i class="fa fa-angle-double-up"></i></div>'):e.removeClass("fold")}}))},initEvent(){var e;t||((e=$("body")).on("click","figure>figcaption .fa-angle-down",function(){var e=$(this);e.is(".close")?($(e.attr("data-code")).parent().slideDown(200),e.removeClass("close")):($(e.attr("data-code")).parent().slideUp(200),e.addClass("close"))}),e.on("click","figure > pre > .expand-done",function(){Utils.foldBlock($(this).parent().parent())}),e.on("click",".gallery-item .expand-done",function(e){e.stopPropagation(),Utils.foldBlock($(this).parent())}),Utils.initLikeEvent(".admire .agree.like","posts",e=>e.find("span").find("span")),window.onCommentSuccessEvent=(e,t)=>{var i=encrypt("mew-hide-"+t),n=(n=localStorage.getItem(i))?JSON.parse(decrypt(n)):[],e=String(e.postId);n.includes(e)||(n.push(e),$(`.main-content[data-target='${t}'][data-id='${e}'] mew-hide[hide]`).each(function(){$(this).before(decrypt(this.getAttribute("hide"))),$(this).remove(),commonContext.initGallery(),a.initCodeBlock(),a.initLiterature(),a.initHighlighting(),"true"===this.getAttribute("toc")&&commonContext.initTocAndNotice()}),localStorage.setItem(i,encrypt(JSON.stringify(n))))},t=!0)}};window.postPjax=function(t){0!==$(".main-content").length&&Object.keys(a).forEach(e=>window.pjaxSerialNumber===t&&a[e]())};{const i=["initEvent","initCodeBlock","initLiterature","initLike","foldImage"];Object.keys(a).forEach(e=>!window.pjaxSerialNumber&&i.includes(e)&&a[e]()),document.addEventListener("DOMContentLoaded",function(){Object.keys(a).forEach(e=>!window.pjaxSerialNumber&&!i.includes(e)&&a[e]())})}})();
|
||||
(()=>{let t=!1;const a={initCodeBlock(){var e=$("*:not(figure) > pre > code");0!==e.length&&e.each(function(e){var t=$(this).parent();let i=$(this).attr("class"),n="",a=!1,o=!1;if(null!=i){var s=i.match(/[|<](.*)$/),l=i.match(/:select/);if(s||l){let e=0;l&&(e=l.index,s?s[1].endsWith(l[0])&&(s[1]=s[1].substring(0,s[1].length-l[0].length)):n=i.substring(9,l.index),a=!0),s&&(e=s.index<e?s.index:e,"<"===s[0][0]&&(o=!0),n=s[1]),$(this).attr("class",i.substring(0,e)),n=n||i.substring(9,e)}else n=i.substring(9)}let r=$(this).text().split("\n")||[],d=r.length-1,c=String(d).length,g=(1===c&&(c=2),"");for(var p=0;p<d;p++)g+=`<li ${a&&/^\s*\|\+\s+/.test(r[p])?'class="code-select"':""}>${String(p+1).padStart(c,0)}</li>`;a&&$(this).text($(this).text().replace(/(^\s*)\|\+\s/gm,"$1"));let h=`codeBlock${e}-`+(new Date).getTime(),f="";o&&(f=" close",$(this).parent().hide());l=`<div><i class="fa fa-angle-down${f}" data-code='#${h}'></i><i class="fa fa-clone btn-clipboard" title="复制代码" data-clipboard-target='#${h}'></i></div>`;$(this).attr("id",h),t.prepend(`<ul>${g}</ul>`),d>DreamConfig.code_fold_line?t.wrap('<figure class="fold hljs"></figure>').append('<div class="expand-done"><i class="fa fa-angle-double-up"></i></div>'):t.wrap('<figure class="hljs"></figure>'),t.parent().prepend(`<figcaption>${n}${l}</figcaption>`)})},initLiterature(){$(".literature-content>p:not([class]),.literature-content>mew-hide>p:not([class])").each(function(){0===$(this).children(":not(code,a,strong,em,ins,b,s,br,span.pwd)").length&&$(this).addClass("note")})},initLike(){Utils.initLikeButton(".admire .agree.like","posts")},initHighlighting(){hljs.initHighlightingOnLoad()},initShare(){if(window.DShare){let e=$(".cover-image").css("background-image");e=e&&e.substring(5,e.length-2),DShare.create(".dshare",{image:e,imageSelector:".main-content"})}},initClipboard(){window.clipboard||(window.clipboard=new ClipboardJS(".btn-clipboard"),clipboard.on("error",function(e){e.clearSelection(),Qmsg.error("您的浏览器不支持复制")}),clipboard.on("success",function(){Qmsg.success("复制成功")}))},foldImage(){var e;DreamConfig.img_fold_height&&((e=$(".article .gallery-item>[data-fancybox]>img")).parent().addClass("fold"),e.each(function(){const e=$(this).parent();this.complete?this.scrollHeight>=DreamConfig.img_fold_height?e.append('<div class="expand-done"><i class="fa fa-angle-double-up"></i></div>'):e.removeClass("fold"):this.onload=function(){this.scrollHeight>=DreamConfig.img_fold_height?e.append('<div class="expand-done"><i class="fa fa-angle-double-up"></i></div>'):e.removeClass("fold")}}))},initEvent(){var e;t||((e=$("body")).on("click","figure>figcaption .fa-angle-down",function(){var e=$(this);e.is(".close")?($(e.attr("data-code")).parent().slideDown(200),e.removeClass("close")):($(e.attr("data-code")).parent().slideUp(200),e.addClass("close"))}),e.on("click","figure > pre > .expand-done",function(){Utils.foldBlock($(this).parent().parent())}),e.on("click",".gallery-item .expand-done",function(e){e.stopPropagation(),Utils.foldBlock($(this).parent())}),Utils.initLikeEvent(".admire .agree.like","posts",e=>e.find("span").find("span")),window.onCommentSuccessEvent=(e,t)=>{var i=encrypt("mew-hide-"+t),n=(n=localStorage.getItem(i))?JSON.parse(decrypt(n)):[],e=String(e.postId);n.includes(e)||(n.push(e),$(`.main-content[data-target='${t}'][data-id='${e}'] mew-hide[hide]`).each(function(){$(this).before(decrypt(this.getAttribute("hide"))),$(this).remove(),commonContext.initGallery(),a.initCodeBlock(),a.initLiterature(),a.initHighlighting(),"true"===this.getAttribute("toc")&&commonContext.initTocAndNotice()}),localStorage.setItem(i,encrypt(JSON.stringify(n))))},t=!0)},initKatex(){var e=$(".main-content");!window.katex&&0!==e.length||(e.find(".katex--inline").each(function(e,t){katex.render(t.innerText,t,{displayMode:!1})}),e.find(".katex--display").each(function(e,t){katex.render(t.innerText,t,{displayMode:!0})}))}};window.postPjax=function(t){0!==$(".main-content").length&&Object.keys(a).forEach(e=>window.pjaxSerialNumber===t&&a[e]())};{const i=["initEvent","initCodeBlock","initLiterature","initLike","foldImage"];Object.keys(a).forEach(e=>!window.pjaxSerialNumber&&i.includes(e)&&a[e]()),document.addEventListener("DOMContentLoaded",function(){Object.keys(a).forEach(e=>!window.pjaxSerialNumber&&!i.includes(e)&&a[e]())})}})();
|
@ -30,7 +30,7 @@ th:with="description=${isPost ? post != null ? post.status.excerpt : singlePage
|
||||
<link data-pjax rel="preload stylesheet" as="style"
|
||||
th:href="@{'/assets/lib/highlightjs@11.5.1/styles/' + ${theme.config.post.code_pretty} + '.min.css'}"/>
|
||||
<link data-pjax rel="preload stylesheet" as="style" th:href="@{/assets/css/post.min.css(mew=${theme.spec.version})}"/>
|
||||
<link th:if="${enableKatex}" data-pjax rel="preload stylesheet" as="style" th:href="@{/assets/lib/katex@0.12.0/katex.min.css(mew=${theme.spec.version})}"/>
|
||||
<link th:if="${enableKatex}" data-pjax rel="preload stylesheet" as="style" th:href="@{/assets/lib/katex@0.12.0/katex.min.css}"/>
|
||||
<link th:if="${enableShare}" data-pjax rel="preload stylesheet" as="style" th:href="@{/assets/css/dshare.min.css(mew=${theme.spec.version})}">
|
||||
</th:block>
|
||||
|
||||
|
@ -8,6 +8,7 @@
|
||||
<th:block th:if="${isPost}">
|
||||
<script th:if="${isPost}" data-pjax th:src="@{/assets/lib/highlightjs@11.5.1/highlight.min.js}"></script>
|
||||
<script th:if="${isPost}" data-pjax th:src="@{/assets/lib/clipboard@2.0.10/clipboard.min.js}"></script>
|
||||
<script th:if="${enableKatex}" data-pjax th:src="@{/assets/lib/katex@0.12.0/katex.min.js}"></script>
|
||||
<script th:if="${enableShare}" data-pjax th:src="@{/assets/js/dshare.min.js(mew=${theme.spec.version})}"></script>
|
||||
<script th:if="${isPost}" data-pjax th:src="@{/assets/js/post.min.js(mew=${theme.spec.version})}"></script>
|
||||
<script th:if="${isJournals}" data-pjax th:src="@{/assets/js/journals.min.js(mew=${theme.spec.version})}"></script>
|
||||
|
Loading…
x
Reference in New Issue
Block a user