mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 11:39:01 +01:00 
			
		
		
		
	fix(export/markdown): double slashes breaking math expressions (closes #1649)
This commit is contained in:
		
							parent
							
								
									d03ee26408
								
							
						
					
					
						commit
						3a1f1ceedb
					
				| @ -278,14 +278,14 @@ describe("Markdown export", () => { | |||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     it("converts inline math expressions into proper Markdown syntax", () => { |     it("converts inline math expressions into proper Markdown syntax", () => { | ||||||
|         const html = /*html*/`<p>The equation is <span class="math-tex">\\(e=mc^{2}\\)</span>.</p>`; |         const html = /*html*/String.raw`<span class="math-tex">\(H(X, Y) = \sum_{i=1}^{M} \sum_{j=1}^{L} p(x_i, y_j) \log_2 \frac{1}{p(x_i, y_j)} = - \sum_{i=1}^{M} \sum_{j=1}^{L} p(x_i, y_j) \log_2 p(x_i, y_j) \frac{\text{bits}}{\text{symbol}}\)</span></span>`; | ||||||
|         const expected = `The equation is\u00a0$e=mc^{2}$.`; |         const expected = String.raw`$H(X, Y) = \sum_{i=1}^{M} \sum_{j=1}^{L} p(x_i, y_j) \log_2 \frac{1}{p(x_i, y_j)} = - \sum_{i=1}^{M} \sum_{j=1}^{L} p(x_i, y_j) \log_2 p(x_i, y_j) \frac{\text{bits}}{\text{symbol}}$`; | ||||||
|         expect(markdownExportService.toMarkdown(html)).toBe(expected); |         expect(markdownExportService.toMarkdown(html)).toBe(expected); | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     it("converts display math expressions into proper Markdown syntax", () => { |     it("converts display math expressions into proper Markdown syntax", () => { | ||||||
|         const html = /*html*/`<span class="math-tex">\\[\sqrt{x^{2}+1}\\]</span>`; |         const html = /*html*/String.raw`<span class="math-tex">\[H(X, Y) = \sum_{i=1}^{M} \sum_{j=1}^{L} p(x_i, y_j) \log_2 \frac{1}{p(x_i, y_j)} = - \sum_{i=1}^{M} \sum_{j=1}^{L} p(x_i, y_j) \log_2 p(x_i, y_j) \frac{\text{bits}}{\text{symbol}}\]</span></span>`; | ||||||
|         const expected = `$$\sqrt{x^{2}+1}$$`; |         const expected = String.raw`$$H(X, Y) = \sum_{i=1}^{M} \sum_{j=1}^{L} p(x_i, y_j) \log_2 \frac{1}{p(x_i, y_j)} = - \sum_{i=1}^{M} \sum_{j=1}^{L} p(x_i, y_j) \log_2 p(x_i, y_j) \frac{\text{bits}}{\text{symbol}}$$`; | ||||||
|         expect(markdownExportService.toMarkdown(html)).toBe(expected); |         expect(markdownExportService.toMarkdown(html)).toBe(expected); | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -208,19 +208,28 @@ function buildFigureFilter(): Rule { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function buildMathFilter(): Rule { | function buildMathFilter(): Rule { | ||||||
|  |     const MATH_INLINE_PREFIX = "\\("; | ||||||
|  |     const MATH_INLINE_SUFFIX = "\\)"; | ||||||
|  | 
 | ||||||
|  |     const MATH_DISPLAY_PREFIX = "\\["; | ||||||
|  |     const MATH_DISPLAY_SUFFIX = "\\]"; | ||||||
|  | 
 | ||||||
|     return { |     return { | ||||||
|         filter(node) { |         filter(node) { | ||||||
|             return node.nodeName === "SPAN" && node.classList.contains("math-tex"); |             return node.nodeName === "SPAN" && node.classList.contains("math-tex"); | ||||||
|         }, |         }, | ||||||
|         replacement(content) { |         replacement(_, node) { | ||||||
|  |             // We have to use the raw HTML text, otherwise the content is escaped too much.
 | ||||||
|  |             const content = (node as HTMLElement).innerText; | ||||||
|  | 
 | ||||||
|             // Inline math
 |             // Inline math
 | ||||||
|             if (content.startsWith("\\\\(") && content.endsWith("\\\\)")) { |             if (content.startsWith(MATH_INLINE_PREFIX) && content.endsWith(MATH_INLINE_SUFFIX)) { | ||||||
|                 return `$${content.substring(3, content.length - 3)}$`; |                 return `$${content.substring(MATH_INLINE_PREFIX.length, content.length - MATH_INLINE_SUFFIX.length)}$`; | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             // Display math
 |             // Display math
 | ||||||
|             if (content.startsWith(String.raw`\\\[`) && content.endsWith(String.raw`\\\]`)) { |             if (content.startsWith(MATH_DISPLAY_PREFIX) && content.endsWith(MATH_DISPLAY_SUFFIX)) { | ||||||
|                 return `$$${content.substring(4, content.length - 4)}$$`; |                 return `$$${content.substring(MATH_DISPLAY_PREFIX.length, content.length - MATH_DISPLAY_SUFFIX.length)}$$`; | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             // Unknown.
 |             // Unknown.
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Elian Doran
						Elian Doran