Markdown与数学公式

news2024/11/24 20:27:57

在写偏理科的文章的时候,多多少少会涉及到一些公式、函数的输入,本篇就来讲讲如何在 Markdown 中书写数学公式。

在此之前,我们先介绍下 LaTex 和 MashJax,Markdown 就是基于它们来实现数学公式的输入。

LaTex 简介

LaTex (读作 /ˈ lɑ ː tɛx/ 或 /ˈ leɪtɛx/ ),可以理解为是非常专业的排版工具,是国际上数学、物理、计算机等科技领域的专业排版工具,是科学文献交流和出版的事实标准。

LaTex 尤其适合处理篇幅较长、结构严谨的文档(例如学术论文),并且十分擅长处理复杂的表格和数学公式的排版,画个象棋图、分子结构式、电路图甚至乐谱都不在话下。

缺点:学习门槛高。如果不是数学、物理、计算机等领域的人来折腾这个,可能得一段时间才能上手。

简单介绍到这,如果你想深入了解下,不然看看这个教程:LaTeX 入门与进阶

MashJax 简介

MathJax 是一款运行在浏览器中的开源数学符号渲染引擎,使用 MathJax 可以方便的在浏览器中显示数学公式,不需要使用图片。

而 Typora 就是使用 MashJax 来解析 LaTex 的数学公式的,这一点也在文档里写了:

数学公式块

那么如何输入数学公式呢?数学公式比较特殊,得在数学公式块里才能正常渲染出结果,纯文本或者代码块是不行的。

在 Typora 中打开数学公式块的方法有:

  • 菜单栏 → 段落 → 公式块
  • 快捷键 Ctrl + Shift + M
  • 输入 $$ ,然后回车

效果:出现了一个输入框,后续就在这里输入公式

注意:

  • 并不是所有编辑器都支持(例如知乎和公众号就不行),如果遇到了不支持的情况很正常。
  • 在 VSCode 里也可以直接用这个数学公式块。

快速入门

直接看个例子,例如输入根号 2,语法为:

\sqrt{2}

效果:

2 \sqrt{2} 2

内联公式

如果你想输入的公式比较少,可以在一行内搞定,可以使用内联公式。首先在 Typora 中启用该设置:

启用后,建议重启下 Typora。

内联公式示例:

来输入一个根号2:$\sqrt{2}$

效果:来输入一个根号2: 2 \sqrt{2} 2

接下来介绍一些常见的公式语法。

在线编辑器

如果你的 Markdown 编辑器不支持,但又想快速尝试下,可以使用 LaTex 在线编辑器,一搜一大堆,例如:https://www.latexlive.com

常用公式语法

这里列出部分公式语法,更多的请参考文末的“参考资料”。

常见运算符

作用Markdown 代码效果
上标x^2x2
下标y_1y1
分式\frac{1}{2} 1 2 \frac{1}{2} 21
省略号\cdots ⋯ \cdots
矢量\vec{a} a ⃗ \vec{a} a
积分\int{x}dx ∫ x d x \int{x}dx xdx
积分(带范围)\int_{1}^{2}{x}dx ∫ 1 2 x d x \int_{1}^{2}{x}dx 12xdx
极限\lim{a+b} lim ⁡ a + b \lim{a+b} lima+b
极限(带范围)\lim_{n\rightarrow+\infty} lim ⁡ n → + ∞ \lim_{n\rightarrow+\infty} limn+
累加\sum{a} ∑ a \sum{a} a
累加(带范围)\sum_{n=1}^{100}{a_n} ∑ n = 1 100 a n \sum_{n=1}^{100}{a_n} n=1100an
累乘\prod{x} ∏ x \prod{x} x
累乘(带范围)\prod_{n=1}^{99}{x_n} ∏ n = 1 99 x n \prod_{n=1}^{99}{x_n} n=199xn
向下取整\lfloor x \rfloor ⌊ x ⌋ \lfloor x \rfloor x
向上取整\lceil x \rceil ⌈ x ⌉ \lceil x \rceil x

三角函数

Markdown 代码效果
\sin sin ⁡ \sin sin
\cos cos ⁡ \cos cos

其他符号以此类推,就不一一列举了

对数函数

Markdown 代码效果
\ln2 ln ⁡ 2 \ln2 ln2
\log_28 log ⁡ 2 8 \log_28 log28
\lg10 lg ⁡ 10 \lg10 lg10

关系运算符

说明Markdown 代码效果
加减号\pm ± \pm ±
乘(或笛卡尔积)\times × \times ×
点乘\cdot ⋅ \cdot
\div ÷ \div ÷
不等号\neq ≠ \neq =
等价\equiv ≡ \equiv
小于等于\leq ≤ \leq
大于等于\geq ≥ \geq
并集\cup ∪ \cup
交集\cap ∩ \cap

其它特殊字符

Markdown 代码效果
\forall ∀ \forall
\infty ∞ \infty
\emptyset ∅ \emptyset
\exists ∃ \exists
\nabla ∇ \nabla
\bot ⊥ \bot
\angle ∠ \angle
\because ∵ \because
\therefore ∴ \therefore

空格,换行

示例:

a \quad b

效果:

a b a \quad b ab


也可以用一个斜线表示空格(注意反斜线后面要有空格)。语法:

a \  b

效果:

a   b a \ b a b

换行

用两个反斜线表示换行(注意两个反斜线后面要有空格)。示例:

1 + 1 = 2
\\ 
2 + 2 = 4

效果:

1 + 1 = 2 2 + 2 = 4 1 + 1 = 2 \\ 2 + 2 = 4 1+1=22+2=4

注意:有些 Markdown 编辑器还未支持该语法,例如本博客使用的 MathJax。

我查了下文档,说是还未实现该功能,但是马上就会实现了。

文档地址:Automatic Line Breaking — MathJax 3.2 documentation

花括号

示例:

c(u)=\begin{cases} \sqrt\frac{1}{N}, u=0\\ \sqrt\frac{2}{N}, u\neq0\end{cases}  

效果:

c ( u ) = { 1 N , u = 0 2 N , u ≠ 0 c(u)=\begin{cases} \sqrt\frac{1}{N}, u=0\\ \sqrt\frac{2}{N}, u\neq0\end{cases} c(u)= N1 ,u=0N2 ,u=0

希腊字母

Markdown 代码效果(大写)Markdown 代码效果(小写)
AA\alpha α \alpha α
BB\beta β \beta β
\Gamma Γ \Gamma Γ\gamma γ \gamma γ
\Delta Δ \Delta Δ\delta δ \delta δ
EE\epsilon ϵ \epsilon ϵ
\varepsilon ε \varepsilon ε
ZZ\zeta ζ \zeta ζ
HH\eta η \eta η
\Theta Θ \Theta Θ\theta θ \theta θ
II\iota ι \iota ι
KK\kappa κ \kappa κ
\Lambda Λ \Lambda Λ\lambda λ \lambda λ
MM\mu μ \mu μ
NN\nu ν \nu ν
\Xi Ξ \Xi Ξ\xi ξ \xi ξ
OO\omicron ο \omicron ο
\Pi Π \Pi Π\pi π \pi π
PP\rho ρ \rho ρ
\Sigma Σ \Sigma Σ\sigma σ \sigma σ
TT\tau τ \tau τ
\Upsilon Υ \Upsilon Υ\upsilon υ \upsilon υ
\Phi Φ \Phi Φ\phi ϕ \phi ϕ
\varphi φ \varphi φ
XX\chi χ \chi χ
\Psi Ψ \Psi Ψ\psi ψ \psi ψ
\Omega Ω \Omega Ω\omega ω \omega ω

矩阵

语法:

\begin{matrix}
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9 
\end{matrix} \tag{1}

效果:

1 2 3 4 5 6 7 8 9 (1) \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{matrix} \tag{1} 147258369(1)

带括号的矩阵:

\left[
\begin{matrix}
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9 
\end{matrix} \right]\tag{2}

效果:

[ 1 2 3 4 5 6 7 8 9 ] (2) \left[ \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{matrix} \right]\tag{2} 147258369 (2)

Madoko

Markdown 和 Latex 代表了写作语言的两极:Markdown 追求极致的简洁,只有最少的格式控制;而 Latex 追求极致的可控,可以实现无限复杂的格式,也对语法有着严格的限制。

而这两极之间一直遗留着广阔的空白地带,是否有这样一种写作语言,在实现精美排版的同时,保持着足够的简洁和易用呢?Madoko 便是为了这一目的而生。

Madoko 是一款开源的在线编辑器,当然你也可以通过 Node 的方式本地安装并运行。

GitHub 地址:https://github.com/koka-lang/madoko

中文翻译:https://github.com/HHpetra/MadokoReferenceChinese

发布注意事项

有些平台不支持 LaTex,那么如果想要发布带有 LaTex 公式的博客到这些平台,就得先处理下,例如截图。

为此,有人做了一个工具,将 Markdown 中的 LaTeX 转化为本地图片,这个工具叫 mdtex,开源在 GitHub:github.com/rreusser/mdtex-cli

具体步骤可以参考:Markdown 一次编辑全平台发布方案,支持 LaTeX 公式! - 知乎

我用的博客框架是 VuePress,使用了插件 markdown-it-mathjax3 后能正常渲染出结果(例如本文的数学公式都能正常显示),具体步骤可以参考我的另一篇博客:显示数学公式块

参考资料

107 页的PDF 文件:“一份不太简短的 LATEX2e 介绍” 3.1 节 数学公式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1973306.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JDK-java.nio包详解

JDK-java.nio包详解 概述 一直以来Java三件套(集合、io、多线程)都是最热门的Java基础技术点,我们要深入掌握好这三件套才能在日常开发中得心应手,之前有编写集合相关的文章,这里出一篇文章来梳理一下io相关的知识点。…

MyBatis 源码学习 | Day 1 | 了解 MyBatis

什么是 MyBatis 在对一项技术进行深入学习前,我们应该先对它有个初步的认识。MyBatis 是一个 Java 持久层框架,用于简化数据库的操作。它通过 XML 或注解的方式配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通…

跑深度学习模型I:一文正确使用CUDA

1. 安装显卡驱动NVIDIA 如果出现这个问题,是NVIDIA环境配置原因。一定要注意配置系统环境变量正确。 C:\Users\2605304845>nvcc --version nvcc 不是内部或外部命令,也不是可运行的程序 或批处理文件。 - CSDN文库 2. 安装CUDA 安装时注意版本对应…

C语言--函数

1. 函数定义 语法: 类型标识符 函数名(形式参数) {函数体代码 } (1)类型标识符 --- 数据类型(函数要带出的结果的类型) 注:数组类型不能做函数返回结果的类型,如果函…

pt模型转onnx模型,onnx模型转engine模型,pt模型转engine模型详细教程(TensorRT,jetpack)

背景 背景是需要在nvidia jetpack4.5.1的arm64设备上跑yolov8,用TensorRT加速,需要用*.engine格式的模型,但是手头上的是pt格式模型,众所周知小板子的内存都很小,连安装ultralytics依赖库的容量都没有,所以我想到在wi…

【开源】嵌入式Linux(IMX6U)应用层综合项目(1)--云平台调试APP

目录 1.简介 1.1功能介绍 1.2技术栈介绍 1.3演示视频 1.4硬件介绍 2.软件设计 2.1连接阿里云 2.2云平台调试UI 2.3Ui_main.c界面切换处理文件 2.4.main函数 3.结尾(附网盘链接) 1.简介 此文章并不是教程,只能当作笔者的学习分享&…

go中的值传递和指针传递

文章目录 1、& 和 *2、空指针3、nil4、用值传递还是指针传递?5、补充 1、& 和 * &后跟一个变量名,得到的是这个变量的内存地址*int类型的变量,代表这个变量里存的值是int类型的变量的内存地址数据类型的指针类型,即在…

顺序表的实现【数据结构】

1.线性表 线性表(linear list)是n个具有相同特性的数据元素的有线序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表有:顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构,也就是说是连续的一条线…

医院设置(洛谷)

设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口。圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接点之间的距离为 11。…

C语言实现 -- 单链表

C语言实现 -- 单链表 1.顺序表经典算法1.1 移除元素1.2 合并两个有序数组 2.顺序表的问题及思考3.链表3.1 链表的概念及结构3.2 单链表的实现 4.链表的分类 讲链表之前,我们先看两个顺序表经典算法。 1.顺序表经典算法 1.1 移除元素 经典算法OJ题1:移除…

在服务器上使用Dockerfile创建springboot项目的镜像和踩坑避雷

1. 准备个文件夹 这是我的路径 /usr/local/springboot/docker-daka/docker_files2. 将jar包上传 springboot项目打包——maven的package 这是整个项目打包的模式,也可以分离依赖、配置和程序进行打包,详情看我这篇文章: springboot依赖 配…

java基础 之 集合与栈的使用(四)

文章目录 Queue栈Stack队列和栈的区别小扩展自己写个简单的队列自己写个简单的栈使用栈来实现个队列使用队列来实现个栈写在最后 前文回顾: 戳这里 → java基础 之 集合与栈的使用(一) 戳这里 → java基础 之 集合与栈的使用(二&a…

windows中node版本的切换(nvm管理工具),解决项目兼容问题 node版本管理、国内npm源镜像切换(保姆级教程,值得收藏)

前言 在工作中,我们可能同时在进行2个或者多个不同的项目开发,每个项目的需求不同,进而不同项目必须依赖不同版本的NodeJS运行环境,这种情况下,对于维护多个版本的node将会是一件非常麻烦的事情,nvm就是为…

【Git】git 从入门到实战系列(二)—— git 介绍以及安装方法 (文末附带视频录制操作步骤)

文章目录 一、前言二、git 是什么三、版本控制系统是什么四、本地 vs 集中式 vs 分布式本地版本控制系统集中式版本控制系统分布式版本控制系统 五、安装 git 一、前言 本系列上一篇文章【Git】git 从入门到实战系列(一)—— Git 的诞生,Lin…

Linux系统编程 --- 基础IO

形成共识原理: 1、文件 内容 属性 2、文件分为打开的文件和没打开的文件 3、打开的文件:谁打开?进程!--- 本质是研究进程和文件的关系! 文件被打开,必须先被加载到内存! 一个进程可以打开…

PyTorch 训练自定义功能齐全的神经网络模型的详细教程

在前面的文章中,老牛同学介绍了不少大语言模型的部署、推理和微调,也通过大模型演示了我们的日常的工作需求场景。我们通过大语言模型,实实在在的感受到了它强大的功能,同时也从中受益颇多。 今天,老牛同学想和大家一…

【Android Studiio】default activity 原生安卓和uniapp默认启动分析

文章目录 思路: 一、原生安卓二、uniapp 探究方向:找到Default Activity 思路: 在Android开发中,"default activity"这个概念通常指的是应用启动时默认会加载和显示的那个Activity。AndroidManifest.xml文件是Android…

基于Selenium实现操作网页及操作windows桌面应用

Selenium操作Web页面 Why? 通常情况下,网络安全相关领域,更多是偏重于协议和通信。但是,如果协议通信过程被加密或者无法了解其协议构成,是无法直接通过协议进行处理。此时,可以考虑模拟UI操作,进而实现相…

声音和数据之间的调制解调 —— 电报机和电传打字机如何影响计算机的演变

注:机翻,未校对。 The Squeal of Data The through line between the telegraph and the computer is more direct than you might realize. Its influence can be seen in common technologies, like the modem. 电报和计算机之间的直通线比你想象的要…

基于IOT架构的数据采集监控平台!

LP-SCADA数据采集监控平台是蓝鹏测控推出的一款聚焦于工业领域的自动化数据采集监控系统, 助力数字工厂建设的统一监控平台。 为企业提供从下到上的完整的生产信息采集与集成服务,从而为企业综合自动化、工厂数字化及完整的"管控一体化”的解决方案…