Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/dev' into dev

Vanessa 2 gadi atpakaļ
vecāks
revīzija
1994998530
3 mainītis faili ar 33 papildinājumiem un 5 dzēšanām
  1. 1 1
      kernel/conf/search.go
  2. 26 4
      kernel/model/export.go
  3. 6 0
      kernel/model/transaction.go

+ 1 - 1
kernel/conf/search.go

@@ -71,7 +71,7 @@ func NewSearch() *Search {
 		HTMLBlock:  true,
 
 		Limit:         64,
-		CaseSensitive: false,
+		CaseSensitive: true,
 
 		Name:   true,
 		Alias:  true,

+ 26 - 4
kernel/model/export.go

@@ -926,11 +926,24 @@ func exportMarkdownContent(id string) (hPath, exportedMd string) {
 }
 
 func processKaTexMacros(n *ast.Node) {
-	if ast.NodeInlineMathContent != n.Type && ast.NodeMathBlockContent != n.Type {
+	if ast.NodeInlineMathContent != n.Type && ast.NodeMathBlockContent != n.Type && ast.NodeTextMark != n.Type {
+		return
+	}
+	if ast.NodeTextMark == n.Type && !n.IsTextMarkType("inline-math") {
+		return
+	}
+
+	var mathContent string
+	if ast.NodeTextMark == n.Type {
+		mathContent = n.TextMarkInlineMathContent
+	} else {
+		mathContent = string(n.Tokens)
+	}
+	mathContent = strings.TrimSpace(mathContent)
+	if "" == mathContent {
 		return
 	}
 
-	mathContent := string(n.Tokens)
 	macros := map[string]string{}
 	if err := gulu.JSON.UnmarshalJSON([]byte(Conf.Editor.KaTexMacros), &macros); nil != err {
 		logging.LogWarnf("parse katex macros failed: %s", err)
@@ -961,7 +974,11 @@ func processKaTexMacros(n *ast.Node) {
 		mathContent = strings.ReplaceAll(mathContent, usedMacro, expanded)
 	}
 	mathContent = unescapeKaTexSupportedFunctions(mathContent)
-	n.Tokens = []byte(mathContent)
+	if ast.NodeTextMark == n.Type {
+		n.TextMarkInlineMathContent = mathContent
+	} else {
+		n.Tokens = []byte(mathContent)
+	}
 }
 
 func exportTree(tree *parse.Tree, wysiwyg, expandKaTexMacros bool) (ret *parse.Tree) {
@@ -1062,6 +1079,11 @@ func exportTree(tree *parse.Tree, wysiwyg, expandKaTexMacros bool) (ret *parse.T
 		case ast.NodeInlineMathContent, ast.NodeMathBlockContent:
 			n.Tokens = bytes.TrimSpace(n.Tokens) // 导出 Markdown 时去除公式内容中的首尾空格 https://github.com/siyuan-note/siyuan/issues/4666
 			return ast.WalkContinue
+		case ast.NodeTextMark:
+			if n.IsTextMarkType("inline-math") {
+				n.TextMarkInlineMathContent = strings.TrimSpace(n.TextMarkInlineMathContent)
+				return ast.WalkContinue
+			}
 		case ast.NodeFileAnnotationRef:
 			refIDNode := n.ChildByType(ast.NodeFileAnnotationRefID)
 			if nil == refIDNode {
@@ -1211,7 +1233,7 @@ func exportTree(tree *parse.Tree, wysiwyg, expandKaTexMacros bool) (ret *parse.T
 			}
 		}
 
-		if expandKaTexMacros && (ast.NodeInlineMathContent == n.Type || ast.NodeMathBlockContent == n.Type) {
+		if expandKaTexMacros && (ast.NodeInlineMathContent == n.Type || ast.NodeMathBlockContent == n.Type || (ast.NodeTextMark == n.Type && n.IsTextMarkType("inline-math"))) {
 			processKaTexMacros(n)
 		}
 

+ 6 - 0
kernel/model/transaction.go

@@ -883,6 +883,12 @@ func (tx *Transaction) doUpdate(operation *Operation) (ret *TxErr) {
 				// 剔除空白的行级公式
 				unlinks = append(unlinks, n)
 			}
+		} else if ast.NodeTextMark == n.Type {
+			if n.IsTextMarkType("inline-math") {
+				if "" == strings.TrimSpace(n.TextMarkInlineMathContent) {
+					unlinks = append(unlinks, n)
+				}
+			}
 		} else if ast.NodeBlockRef == n.Type {
 			sql.CacheRef(subTree, n)
 		} else if ast.NodeTextMark == n.Type && n.IsTextMarkType("block-ref") {