独家揭秘:CSDN富文本模式(非Markdown模式)下插入数学公式

版权声明:本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址http://blog.csdn.net/lzuacm。 https://blog.csdn.net/yanglr2010/article/details/81192211

版权声明:本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址http://blog.csdn.net/lzuacm。 

在CSDN上写技术博客时,经常是要插入数学公式的,比如想要说清楚一个算法或单纯要讲一个数学理论。

CSDN新版本博文编辑器支持两种模式,一种是富文本模式,即兼容旧版本的模式; 另一种是Markdown模式。Markdown模式下插入数学公式使用$···$(行内公式)或$$···$$(会设置成居中对齐)即可,下面主要介绍富文本模式下如何插入数学公式并解释为什么能这样做。

用Chrome(或 IE)浏览器打开一篇富文本模式下写成的博文,按F12,搜索"mathjax",可以找到如下代码~

<script type="text/javascript" src="https://static-blog.csdn.net/mdeditor/public/res/bower-libs/MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>

没错,CSDN富文本模式下能显示LaTex格式的数学公式,并且是基于MathJax的。

富文本模式中插入数学公式主要有下面两种方式:

行间(inline)模式:即在正文中插入数学内容,公式前后分别插入 \(和\) ,即\( ··· \)

独立(display)模式:独立成行,没有编号,公式前后分别插入 \(和\),即\[ ··· \],会默认设置成居中。

事实上,Tex和LaTex对这两种模式的支持如下表所示。目前,CSDN富文本模式支持LaTex的两种写法,但只支持Tex的后一种写法(双$符号的写法)。

Tex命令

LaTex命令

行间(inline)公式

$···$

\(···\)

无编号独立公式

$$···$$

\[···\]

如果LaTex公式中包含双引号,后引号用英文状态下的",前引号需换为两个反引号``;单引号类似 - 后引号用英文状态下的',前引号需换为一个反引号`。

下面,总结一下,富文本模式下插入LaTex公式的方法主要有两种:

1.使用编辑器自带的按钮插入公式

点击编辑菜单的"Σ"按钮,

会弹出一个公式插入的编辑器:

如果点"确定按钮"会插入公式的图片,并不推荐使用。当然也可只把它看成公式预览的工具,然后在正文中按上述两种插入公式方法中的一种写入LaTex代码即可。

其中CSDN富文本模式支持的LaTex公式有如下几种写法:

1.行间公式,使用\(···\),比如:\(a_i\)

实际显示结果为:

\(a_i\)

2.使用\[···\]插入无编号独立公式,比如:\[a_i\],

实际显示结果为:

\[a_i\]

3.使用双美元符号插入无编号独立公式,比如:$$a_i$$,

实际显示结果为:

$$a_i$$

2.直接按上述两种插入公式方法中之一写入LaTex代码,然后使用公式预览工具来验证正误

事实上,csdn富文本模式下点击"Σ"使用的就是内嵌的codecogs提供的LaTex编辑器~

下面给出两个公式预览工具:

codecogs提供的LaTex编辑器 http://latex.codecogs.com/eqneditor/editor.php (或其镜像:http://latex.91maths.com/,打开速度超快)。

比如,要插入如下分段函数:

先使用公式预览工具来测试和验证~

在公式预览工具中输入的内容为:

a^n=\left\{ \begin{array}{rcl} 
a^\frac{n}{2} \cdot a^\frac{n}{2}  & (n = 2 \cdot k, n \in Z) \\ 
a^\frac{n-1}{2} \cdot a^\frac{n-1}{2}\cdot a  & (n = 2 \cdot k + 1, n \in Z) 
\end{array} \right.

而在CSDN富文本模式下需删除公式块中间的换行或空行(可使用Windows自带的记事本-notepad辅助删除空行),然后插入到博文中,此栗中要插入CSND编辑器的相应代码为:

\(a^n=\left\{ \begin{array}{rcl} a^\frac{n}{2} \cdot a^\frac{n}{2}  & (n = 2 \cdot k, n \in Z) \\ a^\frac{n-1}{2} \cdot a^\frac{n-1}{2}\cdot a  & (n = 2 \cdot k + 1, n \in Z) \end{array} \right.\)

\(a^n=\left\{ \begin{array}{rcl} 
a^\frac{n}{2} \cdot a^\frac{n}{2}  & (n = 2 \cdot k, n \in Z) \\ 
a^\frac{n-1}{2} \cdot a^\frac{n-1}{2}\cdot a  & (n = 2 \cdot k + 1, n \in Z) 
\end{array} \right.\)

如果要写成独立公式,则内容为:

$$a^n=\left\{ \begin{array}{rcl} 
a^\frac{n}{2} \cdot a^\frac{n}{2}  & (n = 2 \cdot k, n \in Z) \\ 
a^\frac{n-1}{2} \cdot a^\frac{n-1}{2}\cdot a  & (n = 2 \cdot k + 1, n \in Z) 
\end{array} \right.$$

ps: 有一点要切,数学公式的开头符号结尾符号格式需保持一致(比如:开头的\(和结尾的\)都不加任何格式、都斜体、都粗体是可以的),否则MathJax对公式的渲染会失效~

附上实际显示效果:

\(a^n=\left\{ \begin{array}{rcl} a^\frac{n}{2} \cdot a^\frac{n}{2}  & (n = 2 \cdot k, n \in Z) \\ a^\frac{n-1}{2} \cdot a^\frac{n-1}{2}\cdot a  & (n = 2 \cdot k + 1, n \in Z) \end{array} \right.\)

实际显示LaTex公式时,点击鼠标右键,可以看到一些公式的菜单选项(如下图)。

另外本人还测试了下MathJax中AsiiMathML的语法,使用反引号`嵌入ASCIIMath格式的数学公式无效,估计是被禁用了~

就酱,下面是本文在富文本模式下插入公式的两篇博文范例

C++版 - Leetcode 69. Sqrt(x) 解题报告【C库函数sqrt(x)模拟-求平方根】 - CSDN

https://blog.csdn.net/lzuacm/article/details/51335995

C++版 - 剑指Offer 面试题11:数的整数次方(Leetcode50. Pow(x, n))【C库函数pow模拟】题解 - CSDN

https://blog.csdn.net/lzuacm/article/details/51335538

如有疑问或改进意见,欢迎在评论区交流~

猜你喜欢

转载自blog.csdn.net/yanglr2010/article/details/81192211