MarkDown插入数学公式

最近想学下数学方面的东西,但发现公式的插入是比较头疼的事情。在Markdown的环境下,有一个latex数学公式官网的写法,用起来很是强大,只要引入下面的js就可以。

1
<script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML' async></script>

$$...$$包括,行内公式用$...$包括
比如想写一个 $$x_{11}$$ ,具体的写法如下:

1
$$x_{11}$$

常用的希腊字母写法

|字母|公式||字母|公式|
|$$\alpha$$|$$\alpha$$||$$\pi$$|$$\pi$$|
|$$\beta$$|$$\beta$$||$$\Sigma$$|$$\Sigma$$|
|$$\gamma$$|$$\gamma$$||$$\Gamma$$|$$\Gamma$$|
|$$\delta$$|$$\delta$$||$$\Delta$$|$$\Delta$$|
|$$\epsilon$$|$$\epsilon$$||$$\varphi$$|$$\varphi$$|
|$$\eta$$|$$\eta$$||$$\upsilon$$|$$\upsilon$$|
|$$\phi$$|$$\phi$$||$$\Phi$$|$$\Phi$$|
|$$\omega$$|$$\omega$$||$$\Omega$$|$$\Omega$$|
|$$\theta$$|$$\theta$$||$$\Theta$$|$$\Theta$$|
|$$\lambda$$|$$\lambda$$||$$\Lambda$$|$$\ambda$$|
|$$\mu$$|$$\mu$$||$$\nu$$|$$\nu$$|
|$$\xi$$|$$\xi$$||$$\partial$$|$$\partial$$|

常用的上下标

|字母|公式||字母|公式|
|$$x^2$$|$$x^2$$||$$\sqrt[x]y$$|$$\sqrt[x]y$$|
|$$x_i$$|$$x_i$$||$$x_{ij}$$|$$x_{ij}$$|
|$$\dots$$|$$\dots$$||$$\cdots$$|$$\cdots$$|

运算符

四则运算符(operator) 例如 + - * /等可以直接输入

|字母|公式||字母|公式|
|$$\pm$$|$$\pm$$||$$\times$$|$$\\times$$|
|$$\cap$$|$$\cap$$||$$\cup$$|$$\cup$$|
|$$\geq$$|$$\geq$$||$$\leq$$|$$\leq$$|
|$$\neq$$|$$\neq$$||$$\approx$$|$$\approx$$|
|$$\sum_{i=0}^nx_iy_i$$|$$\sum_{i=0}^nx_iy_i$$||$$\sum_1^n$$|$$\sum_1^n$$|
|$$\int_1^n$$|$$\int_1^n$$||$$\lim_{x \to \infty}$$|$$\lim_{x \to \infty}$$|
|$$\frac{y}{x}$$|$$\frac{y}{x}$$||$$\equiv$$|$$\equiv$$|

矩阵和行列式

$$\begin{matrix}…\end{matrix}$$,中间使用&分开

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
$$
\begin{matrix}
a_{11} & x & x^2 \\
a_{21} & y & y^2 \\
a_{31} & z & z^2 \\
\end{matrix}
$$

````
对应的结果如下:
$$
\begin{matrix}
a_{11} & x & x^2 \\
a_{21} & y & y^2 \\
a_{31} & z & z^2 \\
\end{matrix}
$$

行列式是在矩阵的前面和末尾加个`|`,写法如下:

```cte
$$
X=\left|
\begin{matrix}
x_{11} & x_{12} & \cdots & x_{1d}\\
x_{21} & x_{22} & \cdots & x_{2d}\\
\vdots & \vdots & \ddots & \vdots\\
x_{m1} & x_{m2} & \cdots & x_{md}\\
\end{matrix}
\right|
$$

$$
X=\left|
\begin{matrix}
x_{11} & x_{12} & \cdots & x_{1d}\
x_{21} & x_{22} & \cdots & x_{2d}\
\vdots & \vdots & \ddots & \vdots\
x_{m1} & x_{m2} & \cdots & x_{md}\
\end{matrix}
\right|
$$

常用箭头

|字母|公式||字母|公式|
|$$\leftarrow$$|$$\leftarrow$$||$$\rightarrow$$|$$\rightarrow$$|
|$$\longleftarrow$$|$$\longleftarrow$$||$$\longrightarrow$$|$$\longrightarrow$$|
|$$\leftrightarrow$$|$$\leftrightarrow$$||$$\longleftrightarrow$$|$$\longleftrightarrow$$|
|$$\Leftarrow$$|$$\Leftarrow$$||$$\Rightarrow$$|$$\Rightarrow$$|
|$$\Longleftarrow$$|$$\Longleftarrow$$||$$\Longrightarrow$$|$$\Longrightarrow$$|
|$$\Leftrightarrow$$|$$\Leftrightarrow$$||$$\Longleftrightarrow$$|$$\Longleftrightarrow$$|

各种括号用 () [] { } \langle\rangle 等命令表示,注意花括号通常用来输入命令和环境的参数,所以在数学公式中它们前面要加 \。可以在上述分隔符前面加 \big \Big \bigg \Bigg 等命令来调整大小。

方程式和方程组

  • 方程公式

    1
    2
    3
    \begin{equation}
    E=mc^2
    \end{equation}

    \begin{equation}
    E=mc^2
    \end{equation}

  • 分段函数

    1
    2
    3
    4
    5
    6
    7
    8
    $$
    f(n) =
    \begin{cases}
    n/2, & \text{if $n$ is even} \\
    3n+1, & \text{if $n$ is odd}
    \end{cases}
    $$

$$
f(n) =
\begin{cases}
n/2, & \text{if $n$ is even} \
3n+1, & \text{if $n$ is odd}
\end{cases}
$$

  • 方程组

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $$
    \left\{
    \begin{array}
    a_1x+b_1y+c_1z=d_1 \\
    a_2x+b_2y+c_2z=d_2 \\
    a_3x+b_3y+c_3z=d_3
    \end{array}
    \right.
    $$

$$
\left{
\begin{array}
a_1x+b_1y+c_1z=d_1 \
a_2x+b_2y+c_2z=d_2 \
a_3x+b_3y+c_3z=d_3
\end{array}
\right.
$$

常用的公式

  • 线性模型

    1
    $$h(\theta)=\sum_{j=0}^n\theta_ix_j$$

$$h(\theta)=\sum_{j=0}^n\theta_ix_j$$

  • 均方误差

    1
    $$J(\theta)=\frac{1}{2m}\sum_{i=0}^m(y^i-h_{\theta}(x^i))^2$$

    $$J(\theta)=\frac{1}{2m}\sum_{i=0}^m(y^i-h_{\theta}(x^i))^2$$

  • 批量梯度都下降

    1
    $$\frac{\partial J(\theta)}{\partial\theta_j}=-\frac{1}{m}\sum_{i=0}^m(y^i-h_{\theta}(x^i))x_j^i$$   

$$\frac{\partial J(\theta)}{\partial\theta_j}=-\frac{1}{m}\sum_{i=0}^m(y^i-h_{\theta}(x^i))x_j^i$$

  • 微积分公式

    1
    $$S=\int_a^bf(x)dx$$

$$S=\int_a^bf(x)dx$$

  • 矩阵变换

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    $$X=\left(
    \begin{matrix}
    x_{11} & x_{12} & \cdots & x_{1d}\\
    x_{21} & x_{22} & \cdots & x_{2d}\\
    \vdots & \vdots & \ddots & \vdots\\
    x_{m1} & x_{m2} & \cdots & x_{md}\\
    \end{matrix}
    \right)
    =\left(
    \begin{matrix}
    x_1^T \\
    x_2^T \\
    \vdots\\
    x_m^T \\
    \end{matrix}
    \right)
    $$

$$X=\left(
\begin{matrix}
x_{11} & x_{12} & \cdots & x_{1d}\
x_{21} & x_{22} & \cdots & x_{2d}\
\vdots & \vdots & \ddots & \vdots\
x_{m1} & x_{m2} & \cdots & x_{md}\
\end{matrix}
\right)
=\left(
\begin{matrix}
x_1^T \
x_2^T \
\vdots\
x_m^T \
\end{matrix}
\right)
$$

jekyll如何使用中文路径

出现问题

最近在使用jekyll在本地预览自己写的博客无法正常打开,而提交到github上却可以正常解析。看了一下发现是文件写的博客有什么变化,原来是因为博客的markdown文件使用了中文文件名,jekyll无法正常解析出现乱码。

解决方法:

修改安装目录\Ruby22-x64\lib\ruby\2.2.0\webrick\httpservlet下的filehandler.rb文件,建议先备份。找到下列两处,添加一句(+的一行为添加部分)

1
2
3
4
5

path = req.path_info.dup.force_encoding(Encoding.find("filesystem"))
+ path.force_encoding("UTF-8") # 加入编码
if trailing_pathsep?(req.path_info)


	break if base == "/"
	+ base.force_encoding("UTF-8") #加入編碼
	break unless File.directory?(File.expand_path(res.filename + base))    

修改完重新jekyll serve即可支持中文文件名。

推荐一个jekyll博客模板

本人用的模板是基于Codeboy的博客模板改造模板{:target=”_blank”},(由于本人可能会有很多样式修改,所以不再将修改pullrequst到原项目,在此对codeboy模板表示感谢)。功能改造如下:

添加微信支付宝打赏

这里也是一个开源的项目,项目地址,使用很方便,直接引用到项目中,配置下就可了:

1
2
3
4
5
6
7
8
9
10
11
12
13
<script>
window.tctipConfig = {
staticPrefix: "http://static.tctip.com",
buttonImageId: 1,
buttonTip: "zanzhu",
list:{
alipay: {qrimg: "http://blog.laofu.online/img/assets/o_zhifubao.png"},
weixin:{qrimg: "http://blog.laofu.online/img/assets/o_weixin.png"},
}
};
</script>

<script src="http://static.tctip.com/js/tctip.min.js"></script>

weixin

百度流量监控

为了查看个人的博客的人气,添加了百度的统计模块,可以方便的看到博客的pv/uv.注册地址{:target=”_blank”}

static

具体的添加方式如下 :

  1. 在_incluides文件夹下添加一个baidu_analyze.html的文件,内容如下

    
    	{%if site.baidu_analyze %}
    	
    
    	{% endif %}
    	
    
{{site.baidu_analyze}} 是一个变量,可以把你申请的baidu的key值作为_config.yml的配置值存储下来。
  1. 下面只需要保证所有的post生成都能包含这个html就可以了 ,我的选择是在head里面中把baidu_analyze.html包含进去:

head

添加thickbox插件

这个插件是一个图片的浏览插件,thickbox官方网站{:target=”_blank”}。首先先引入对应的js ,具体的使用是在img的标签上包含一个a标签,这个动作可以使用jQuery方便的实现:


	<script type="text/Javascript">
   
 (function(){
       $("article img").each(function(index,value){

           var aDom=$("<a></a>").attr({"href":$(value).attr("src")+"?inlineId=myOnPageContent"}).addClass("thickbox");
           $(value).wrap(aDom);

       });
   })();
	</script>

thickbox的演示后的效果:

thickbox

其它样式问题

  • 图片的样式由由居中改成居左

  • 去除代码行号样式错乱问题

github地址{:target=”_blank”}

如何搭建免费博客

对于经常写博客的人,都很想拥有一个属于自己的独立博客,但一个独立的博客可能需要以下几个东西:

  1. 域名
  2. 一个前端的模板
  3. 一个后台的管理
  4. 一个数据库
  5. 部分的统计和其它模块

这样的话,我们的精力可能都了要放到博客的管理上面,而不是博客的内容。 随着github的出现,这样问题出现了改观,使用gitbub提供的github pages功能可以提供一个独立的站点供我们使用。结合相关的域名配置,我们就可以很方便的搭建属于自己的博客平台。

github Pages的使用

概述

对于开发者来说github是很熟悉的,是一个托管代码和开源的网站.如果你想找一个开源的项目,首先看到的可能是一个源码的列表,这样对于项目的展示不够直观,github pages就是为也解决这个问题而出现,允许开发者自定义一个展示页面,来替代原有的代码列表。

具体的规则

在github的项目中,创建一个gh-pages的分支,分支创建完成后就可以使用http://{userName}.github.io/{projectName}来进行访问。更详细参见:github Pages{:target=”_blank”}

一个实例

  1. 创建一个项目,并对项目进行初始化,运行以下命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
       
    mkdir gitDemo #创建一个目录

    cd gitDemo

    git init #git 初始化

    git checkout --orphan gh-pages # 创建gh-pages分支。

    ```
    2. 进行gitDemo文件夹,添加一个html文件,index.html,添加如下内容:

    ``` html
    <h1>Hello github Pages!!</h1>
  2. 在github上面添加一个Repositories,名为blogTest

  3. 把项目推送到分支,执行以下命令:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106

    git add .

    git commit -m 'first'

    git remote add origin https://github.com/{userName}/blogTest

    git push origin gh-pages

    ```

    大约等待2min后,访问https://{userName}.github.io/blogTest/index.html,看到如下效果:


    ![gh-pages](/img/assets/02/01.png)

    --------------------------

    #### 总结一下

    对于上面所述的github Pages(**以下称gh-Pages**)是github给用户提供一个**"静态页面的web服务器"**,我们可以根据需要把页面上传到指定的仓库中,可以通过github的规则来完成访问。到这里,不禁有一个疑问,gh-Pages虽然给了一个可以展示html平台,写博客如果全部都写html,那我们还要精力去调整样式和布局的问题.再者博客也要有评论功能,这两个问题如何解决?


    ### jekyll 模板

    jekyll 是基于ruby来编写的一个博客模板生成工具,也就是说我们可以根据相关的规则来生成对应的html文件,当然这份工作github也能帮你去做。详细介绍参见[jekyll官方文档](https://jekyllrb.com/){:target="_blank"}。

    #### jekyll安装

    jekyll的安装可以参见

    [windows安装Jekyll](https://jekyllrb.com/docs/windows/#installation){:target="_blank"} |[linux和MacOS安装Jekyll](https://jekyllrb.com/docs/installation/){:target="_blank"}

    #### jekyll使用

    1. jekyll 安装是否成功,首先看下jekyll的版本,执行:

    ``` bash
    jekyll --version

    ```

    ![jekyllversion](/img/assets/02/02.png)


    2. 创建jekyll的指定目录

    ``` bash
    mkdir _posts

    mkdir _layout

    echo >>_config.yml

    ```

    3. 在_layout下创建一个default.html,作为一个网站的模板,添加如下内容(此处代码中的所有的{ {中间都有一个空格,为了不让jekyll去解析,拷贝的时候请注意):

    ``` html
     <!DOCTYPE html>
      <html>
      <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <title>{ { page.title} }</title>
      </head>
      <body>

        { { content } }

      </body>
      </html>

    ```

    jekyll的支持Liquid 语法,详细参见:[Liquid for Designers](https://github.com/Shopify/liquid/wiki/Liquid-for-Designers){:target="_blank"}


    4. 进入_posts创建一个markdown文件或者是html文件,文件名格式必须是:年-月-日-xxxx.md

    ``` html

     ---
      layout: default
      title: Hello Jekyll
      ---
      <h2>{ { page.title } }</h2>
      <h3> Hello jekyll </h3>


    ```


    5. 创建首页,首页是为了显示文章列表的网页,我们需要做的是遍历_post文件夹中的所有文章,然后展现出来,添加简单的代码如下:

    ``` html
     ---
      layout: default
      title: My Blog
      ---
      <h2>{ { page.title } }</h2>
      <p>最新文章</p>
      <ul>
        { % for post in site.posts % }
          <li>{ { post.date | date_to_string } } <a href="{ { site.baseurl } }{ { post.url } }">{ { post.title } }</a></li>
        { % endfor % }
      </ul>
  4. 编译和运行,一切都准备好后,开始编译和生成我们的网站:

    
     jekyll build   # 生成_site目录         
    
    
     jekyll server  # 生成并启动一个server,127.0.0.1:4000可以访问本地的目录。     
    

    在浏览器中打开127.0.0.1:4000可以看到刚刚生成的网站:

      ![my blog](/img/assets/02/03.png)          
      ![my blog](/img/assets/02/04.png)             
    
  5. 到这里,我们使用jekyll根据我们写的模板生成了对应的静态页面,下面我们把数据传入到github的gh-pages下面。

    
      git add .
    
      git commit -m 'myblog'   
    
      git push origin gh-pages     
    

等待2min后,github 会根据我们上传的模板把数据生成到对应的分支上面. 开始你的博客之旅!

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×