• 博客园「Markdown 编辑器」的语法规则


    Markdown 是一种轻量级的 标记语言,相对于复杂的 HTML 标记语言来说,Markdown 易读易写,非常容易学习掌握。不过,随着 Markdown 的不断发展,其语法格式出现了各种标准,本文以博客园的「Markdown 编辑器」的语法规则为准。

    在博客园使用 Markdown 与 (LaTeX) 撰写博文的方法:

    • 选择 Markdown 撰写博文:在博客园「设置」-「选项」中,将「默认编辑器」修改为 Markdown;
    • 使用 MathJax 书写 LaTeX 数学公式:在博客园「设置」-「选项」中,勾选「启用数学公式支持」。

    HTML 与 Markdown 的关系

    HTML 是一种发布的格式,Markdown 是一种书写的格式。Markdown 的语法种类很少,只对应 HTML 标记的一小部分。不在 Markdown 涵盖范围之内的标签,都可以直接在文档里面用 HTML 撰写。比如:

    <!-- 在文档顶部自定义样式 -->
    <style type="text/css">
    cg   {color:gray}
    fr   {float:right;padding-left: 2em;} 
    .icg {text-indent:2em;color:green} 
    .acb {text-align:right;color:blue} 
    </style>
    

    特殊字符的自动转换

    Markdown 让你可以自然地书写字符。譬如:如果你使用的 & 字符是 HTML 字符实体 的一部分,它会保留原状,否则它会被转换成 &amp;,即 &copy; AT&T 会被转化为 &copy; AT&amp;T,最后得到 © AT&T。

    在线 Markdown 编辑器

    一、标题与 HTML 标签

    <div class="acb">2 级标题</div>
    ---
    
    <div class="icg">~~1 级标题~~</div>
    ===
    
    ### <cg>3 级标题</cg>
    

    2 级标题

    1 级标题

    3 级标题


    特别说明几点:

    • HTML 的区段标签可以在 Markdown 的段落、列表或是标题里随意使用;
    • 但在 HTML 区块标签间的 Markdown 格式语法可能不被支持,详见于此
    • # 的数目对应标题的级数,最多支持五级。因此,一级标题也可用 # 一级标题
    • 一级标题与二级标题对记号 =- 的数目没有要求。

    二、段落、缩进与强制换行

    一个 Markdown 段落是由一个或多个连续的文本行组成组成,它的前后要有一个以上的空行。Markdown 允许段落内的强制换行——在行尾插入至少两个空格。   
    普通段落  
    &nbsp;不该用空格  
    &emsp;或制表符来缩进。
    

    一个 Markdown 段落是由一个或多个连续的文本行组成组成,它的前后要有一个以上的空行。Markdown 允许段落内的强制换行——在行尾插入至少两个空格。
    普通段落
     不该用空格
     或制表符来缩进。

    三、列表与表格

    - Markdown 支持有序列表和无序列表;
    * 要使图表水平居中,又不想使用 HTML,可以参考 [本方法](http://www.cnblogs.com/Pandaman/p/skin.html#tips);
    + 务必在列表、表格、引用区块、代码区块等内容前后保留一空行。
    
    | 默认对齐 |  右对齐   |   居中对齐  |
    | -----  | -----:    |  :----:   |
    | 斜体    | *斜体*    |   _斜体_   |
    | 强调    |  **强调** |   __强调__ |
    | 删除线  | ~~删除线~~ |     -    |
    
    1. 无序列表使用 `*`、`+` 或是 `-` 作为列表标记;
    2. 有序列表则使用数字接着一个英文句点。
    
    • Markdown 支持有序列表和无序列表;
    • 要使图表水平居中,又不想使用 HTML,可以参考 本方法
    • 务必在列表、表格、引用区块、代码区块等内容前后保留一空行。
    默认对齐 右对齐 居中对齐
    斜体 斜体 斜体
    强调 强调 强调
    删除线 删除线 -
    1. 无序列表使用 *+ 或是 - 作为列表标记;
    2. 有序列表则使用数字接着一个英文句点。

    四、图片、链接与分割线

    <fr>![我的头像](http://pic.cnitblog.com/avatar/712172/20150109000843.png)</fr>
    
    你可以在一行中用三个以上的 `*`、`-`、`_` 来建立一个分隔线。  
    
    ---
    [Pandaman](http://www.cnblogs.com/Pandaman/ "[可选] 描述信息") 的博客地址: <http://www.cnblogs.com/Pandaman/> 。
      
    ***
    如果有图片的 URL 地址:http://pic.cnitblog.com/avatar/712172/20150109000843.png ,
    
    ___
    就能用一种和链接很相似的语法来标记图片(右侧浮动)。
    

    我的头像

    你可以在一行中用三个以上的 *-_ 来建立一个分隔线。


    Pandaman 的博客地址: http://www.cnblogs.com/Pandaman/


    如果有图片的 URL 地址:http://pic.cnitblog.com/avatar/712172/20150109000843.png


    就能用一种和链接很相似的语法来标记图片(右侧浮动)。

    五、引用区块与转义符号

    >*Markdown* 标记引用区块的方法:
    >
    >1. 每行的最前面加上 `>` ;
    >2. 引用区块可以嵌套,只要根据层次加上不同数量的 `>` 。
    >
    >>引用区块内也可以使用其他的 *Markdown* 语法,包括标题、列表、代码区块等。
    >
    > Markdown 可以利用反斜杠 `\` 来插入一些在语法中有其它意义的符号,譬如 \ \` * { } # + - . ! * 与 \_
    

    Markdown 标记引用区块的方法:

    1. 每行的最前面加上 >
    2. 引用区块可以嵌套,只要根据层次加上不同数量的 >

    引用区块内也可以使用其他的 *Markdown* 语法,包括标题、列表、代码区块等。

    Markdown 可以利用反斜杠来插入一些在语法中有其它意义的符号,譬如 ` * { } # + - . ! * 与 _

    六、代码区块与 (LaTeX)

    行内代码区块用反引号 <code>`</code> 包起来即可;行间代码区块用 <code>```</code> 包起来,并可指定语言的名称或者后缀(也可以每行缩进四个空格)。
    
        ```latex
        egin{equation}
        F(x)=int_0^tsin(t)mathrm{d}\,t+left[lim_{x
    ightarrow0}g(x)	imessum_{m=0}^inftyfrac{(-1)^m}{Gamma(m+{color{red}α}+1)}
    ight]
        end{equation}
        ```
    LaTeX 提供了对数学公式的支持。行内公式用 `$` 包起来即可;行间公式用 `$$` 包起来,或使用 `egin{equation} 带编号的数学公式 end{equation}` 等命令。除此之外,数学公式还支持 Unicode 写法,即不使用 LaTeX 命令,直接键入 Unicode 字符,如 α。
    
    $$F(x)=int_0^tsin(t)mathrm{d}\,t+left[lim_{x
    ightarrow0}g(x)	imessum_{m=0}^inftyfrac{(-1)^m}{Gamma(m+{color{red}α}+1)}
    ight]$$
    
    如需引用公式,应该先用 `label{公式名}` 标记被引用的公式,然后在正文中用 `
    ef{公式名}` 引用该公式,如(
    ef{name})。
    

    行内代码区块用反引号 ` 包起来即可;行间代码区块用 ``` 包起来,并可指定语言的名称或者后缀(也可以每行缩进四个空格)。

    ```latex
    egin{equation}
    F(x)=int_0^tsin(t)mathrm{d}\,t+left[lim_{x
    ightarrow0}g(x)	imessum_{m=0}^inftyfrac{(-1)^m}{Gamma(m+{color{red}α}+1)}
    ight]
    end{equation}
    ```
    

    LaTeX 提供了对数学公式的支持。行内公式用 $ 包起来即可;行间公式用 $$ 包起来,或使用 egin{equation} 带编号的数学公式 end{equation} 等命令。除此之外,数学公式还支持 Unicode 写法,即不使用 LaTeX 命令,直接键入 Unicode 字符,如 α。

    [F(x)=int_0^tsin(t)mathrm{d}\,t+left[lim_{x ightarrow0}g(x) imessum_{m=0}^inftyfrac{(-1)^m}{Gamma(m+{color{red}α}+1)} ight] ]

    如需引用公式,应该先用 label{公式名} 标记被引用的公式,然后在正文中用 ef{公式名} 引用该公式,如( ef{name})。

    Markdown 编辑器在输入 LaTeX 公式时的 Bug

    Markdown 与 LaTeX 的语法规则存在歧义:

    • 编辑器支持 Markdown 的语法,如 *斜体*_斜体_ 以及输入特殊符号的转义符号
    • 编辑器同时也支持 LaTeX 输入数学公式,数学公式用 * 表示乘法,用 _ 表示下标,用 \ 表示(多行公式与矩阵等)换行;

    原因分析与初步解决方法:

    • 在 Markdown 编辑器里输入 LaTex 的矩阵等无法换行,究其原因是由于 \ 会被 Markdown 优先转化为
    • 根据上述猜想,发现如果使用 \\ 替代原 LaTex 命令 \ 即可,同理 *\_ 代替 *_
    • 但由于 特殊字符的自动转换,在公式存在多个 *_ 符号时,有时候也会出现问题。

    因此,博客园的 Markdown 编辑器还存在很多不足之处,希望官方尽快推出解决方法(譬如:在 LaTex 环境中禁用 Markdown 语法格式),否则只能采用下面的方法凑合了。

    egin{align}
    otag 
    dot{x}&=mathbf{A}x+mathbf{B}u\\ 
    y&=egin{bmatrix}1&0\
    0&1end{bmatrix}x+egin{bmatrix}1&0\\
    0&1end{bmatrix}ulabel{name}
    end{align}   
    

    egin{align} otag
    dot{x}&=mathbf{A}x+mathbf{B}u\
    y&=egin{bmatrix}1&0
    0&1end{bmatrix}x+egin{bmatrix}1&0\
    0&1end{bmatrix}ulabel{name}
    end{align}

    在向博客园官方反映这个 Bug 后,他们迅速给出一个不错的 解决方案

    如果您在 Mardown 编辑器中不仅输入 Markdown,还想输入 LaTeX 数学公式,需要将 LaTeX 数学公式放在某个 HTML 标签之中,比如 <p> </p> ,这样可以避免数学公式中的一些字符被 Markdown 引擎处理。

    其实这是利用 Markdown 不会处理位于 HTML 区块标签间内容这一特点。

  • 相关阅读:
    【算法】HashMap相关要点记录
    【算法】二叉树、N叉树先序、中序、后序、BFS、DFS遍历的递归和迭代实现记录(Java版)
    SpringCloud Openfeign Get请求服务传递对象的报400 Post not support的错误解决办法
    掌握 Promise 的逻辑方法
    JavaScript的执行上下文,真没你想的那么难
    一套标准的ASP.NET Core容器化应用日志收集分析方案
    在IIS中部署前后端应用,多么痛的领悟!
    吐槽一下Abp的用户和租户管理模块
    ant-design-vue中tree增删改
    微服务下的注册中心如何选择
  • 原文地址:https://www.cnblogs.com/Pandaman/p/markdown.html
Copyright © 2020-2023  润新知