學習Markdown的筆記

Markdown學習筆記


起於2020.05.15
結束於…
若學到新的技巧,會及時更新

參考文獻



一、Markdown簡介

         以前一直用work寫文檔和筆記,但是work的格式太難控制了,而且如果到了寫論文的時候,變一個版本,格式可能就會變了,當然,對於寫論文來說,Markdown可能不是最好的選擇,而應該選擇Latex,不過,對於寫博客,還有Github,等等,都支持Markdown排版,用來寫普通筆記也是一個不錯的選擇,爲了以後更好地使用Markdown,這裏整理一下Markdown的學習筆記。
        這份筆記就是一邊看着1一邊寫的,基本就是把它抄過來,然後自己補充一些。
        其實,還有一個很直接的方法,就比如在Haroopad編輯器中,在菜單欄點插入,就會有相應的語法出來了!!

幾款Markdown編輯器
  • Typora
             我不是很會用,用了一下就卸載了,感覺就像word一樣,直接寫代碼不生效,初學還是用代碼寫好,所以就換了另一款。
  • Haroopad
             現在就是用這個編輯器寫的。
  • 其它參考[2]


二、基本格式

2.1 標題

1) 1、2級標題

在標題下加-=分別表示一級和二級標題

一級標題
========
二級標題
--------

標題效果就不顯示了。

2) 六級標題表示

可以用在標題前加##的個數表示標題等級

#一級標題
##二級標題
###三級標題
####四級標題
#####五級標題
######六級標題

標題效果就不顯示了,影響目錄。


2.2 段落格式

1) 段落

Markdown 段落沒有特殊的格式,直接編寫文字就好,段落的換行是使用兩個以上空格加上回車。

第一段(空格 空格 回車)
(空格 空格 回車)空一段
第二段

效果
第一段

第二段

2) 字體

*斜體文本*
_斜體文本_
**粗體文本**
__粗體文本__
***粗斜體文本***
___粗斜體文本___

效果
斜體文本
斜體文本
粗體文本
粗體文本
粗斜體文本
粗斜體文本

3) 分隔線

你可以在一行中用三個以上的星號、減號、底線來建立一個分隔線,行內不能有其他東西。你也可以在星號或是減號中間插入空格。下面每種寫法都可以建立分隔線:

***

* * *

*****

- - -

----------

效果






4) 刪除線

如果段落上的文字要添加刪除線,只需要在文字的兩後都加上兩個波浪線~~即可,實例如下:

RUNOOB.COM
GOOGLE.COM
~~BAIDU.COM~~

效果:
RUNOOB.COM
GOOGLE.COM
BAIDU.COM

5) 下劃線

下劃線可以通過 HTML 的 <u> 標籤來實現:

<u>帶下劃線文本</u>

效果:
帶下劃線文本

6) 腳註

腳註是對文本的補充說明。
Markdown 腳註的格式如下:

[^要註明的文本]

以下實例演示了腳註的用法

創建腳註格式類似這樣 [^RUNOOB]。
[^RUNOOB]: 菜鳥教程 -- 學的不僅是技術,更是夢想!!!

效果:(好像沒什麼用,是版本問題嗎?Haroopad好像不能顯示,但是在CSDN中可以看到文章最後有顯示的。)
創建腳註格式類似這樣 1

7) 中文空格

中文不好加入空格,那就加入空格分隔符&nbsp;,更多的參考

  • 插入一個空格 (non-breaking space)
    &nbsp;&#160;&#xA0;
  • 插入兩個空格 (en space)
    &ensp;&#8194;&#x2002;
  • 插入四個空格 (em space)
    &emsp;&#8195;&#x2003;
  • 插入細空格 (thin space)
    &thinsp;&#8201;&#x2009;

2.3 列表

1) 無序列表

Markdown 支持有序列表和無序列表。
無序列表使用星號*、加號+或是減號-作爲列表標記,符號後面還要加一個空格:

* 第一項
* 第二項
* 第三項
+ 第一項
+ 第二項
+ 第三項
- 第一項
- 第二項
- 第三項

效果:

  • 第一項
  • 第二項
  • 第三項
  • 第一項
  • 第二項
  • 第三項
  • 第一項
  • 第二項
  • 第三項

2) 有序列表

有序列表使用數字並加上 . 號來表示,如:

1. 第一項
2. 第二項
3. 第三項

效果

  1. 第一項
  2. 第二項
  3. 第三項

3) 列表嵌套

列表嵌套只需在子列表中的選項添加四個空格即可:

1. 第一項:
    - 第一項嵌套的第一個元素
    - 第一項嵌套的第二個元素
2. 第二項:
    - 第二項嵌套的第一個元素
    - 第二項嵌套的第二個元素

效果:

  1. 第一項:
    • 第一項嵌套的第一個元素
    • 第一項嵌套的第二個元素
  2. 第二項:
    • 第二項嵌套的第一個元素
    • 第二項嵌套的第二個元素

2.4 區塊

1) 一般的使用

Markdown 區塊引用是在段落開頭使用 > 符號 ,然後後面緊跟一個空格符號。

> 區塊引用
> 菜鳥教程
> 學的不僅是技術更是夢想

區塊引用
菜鳥教程
學的不僅是技術更是夢想

2) 區塊分塊

另外區塊是可以嵌套的,一個 > 符號是最外層,兩個 > 符號是第一層嵌套,以此類推:

> 最外層
> > 第一層嵌套
> > > 第二層嵌套

最外層

第一層嵌套

第二層嵌套

3) 區塊中使用列表

> 區塊中使用列表
> 1. 第一項
> 2. 第二項
> + 第一項
> + 第二項
> + 第三項

效果:

區塊中使用列表

  1. 第一項
  2. 第二項
  • 第一項
  • 第二項
  • 第三項

4) 列表中使用區塊

如果要在列表項目內放進區塊,那麼就需要在 > 前添加四個空格的縮進。
區塊中使用列表實例如下:

* 第一項
    > 菜鳥教程
    > 學的不僅是技術更是夢想
* 第二項

效果:

  • 第一項

    菜鳥教程
    學的不僅是技術更是夢想

  • 第二項

2.4 插入代碼

1) 行內代碼

如果是段落上的一個函數或片段的代碼可以用反引號把它包起來 `,例如:

`printf()` 函數

效果:
printf() 函數

Tips: 如何把 `加入代碼中?

空格 空格 `
不過這個方法在顯示上好像沒有問題,但是在代碼框中就好像有點問題了。

2) 插入代碼塊1

代碼區塊使用 4 個空格或者一個製表符(Tab 鍵)。
實例如下:
Hellow world!!!
Display codes block.

效果好像不行

3) 插入代碼塊2

你也可以用 ` ````包裹一段代碼,並指定一種語言(也可以不指定):

```javascript
$(document).ready(function () {
    alert('RUNOOB');
});
```<!--怎麼在代碼塊顯示這三個點?-->

2.5 插入鏈接

1) 普通鏈接

鏈接名稱](鏈接地址)
或者
<鏈接地址>
例:
這是一個鏈接 [菜鳥教程](https://www.runoob.com)

效果:
這是一個鏈接 菜鳥教程
直接使用鏈接地址:

<https://www.runoob.com>

效果
https://www.runoob.com

2) 高級鏈接

我們可以通過變量來設置一個鏈接,變量賦值在文檔末尾進行:

這個鏈接用 1 作爲網址變量 [Google][1]
這個鏈接用 runoob 作爲網址變量 [Runoob][runoob]
然後在文檔的結尾爲變量賦值(網址)

  [1]: http://www.google.com/
  [runoob]: http://www.runoob.com/

效果:
這個鏈接用 1 作爲網址變量 Google
這個鏈接用 runoob 作爲網址變量 Runoob
然後在文檔的結尾爲變量賦值(網址)

3) 頁內跳轉

實現在文件中跳轉

目的:
<span id='ID_Name'>跳轉到這</span>
起點:
[從這跳轉](#ID_Name)

效果:
目的:
跳轉到這
起點:
從這跳轉


2.6 插入圖片

Markdown 圖片語法格式如下:

![alt 屬性文本](圖片地址)
![alt 屬性文本](圖片地址 "可選標題")
  • 開頭一個感嘆號 !
  • 接着一個方括號,裏面放上圖片的替代文字
  • 接着一個普通括號,裏面放上圖片的網址,最後還可* 以用引號包住並加上選擇性的 ‘title’ 屬性的文字。
  • 地址也可以用本地的,直接從地址欄複製就行。

使用實例:

![RUNOOB 圖標](http://static.runoob.com/images/runoob-logo.png)

![RUNOOB 圖標](http://static.runoob.com/images/runoob-logo.png "RUNOOB")

效果:

RUNOOB 圖標
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-bIviC76X-1589624657634)(http://static.runoob.com/images/runoob-logo.png “RUNOOB”)]

當然,你也可以像網址那樣對圖片網址使用變量:

這個鏈接用 1 作爲網址變量 [RUNOOB][1].
然後在文檔的結尾爲變量賦值(網址)

[1]: http://static.runoob.com/images/runoob-logo.png

Markdown 還沒有辦法指定圖片的高度與寬度,如果你需要的話,你可以使用普通的 <img> 標籤。

<img src="http://static.runoob.com/images/runoob-logo.png" width="50%">

效果:


2.6 插入表格

表格語法

Markdown 製作表格使用 | 來分隔不同的單元格,使用 - 來分隔表頭和其他行。
語法格式如下:

|  表頭   | 表頭  |
|  ----  | ----  |
| 單元格  | 單元格 |
| 單元格  | 單元格 |

效果:(爲什麼Haroopad中不顯示?前後空一行可以解決!)

表頭 表頭
單元格 單元格
單元格 單元格

對齊方式
我們可以設置表格的對齊方式:

  • -: 設置內容和標題欄居右對齊。
  • :- 設置內容和標題欄居左對齊。
  • :-: 設置內容和標題欄居中對齊。

實例如下:

| 左對齊 | 右對齊 | 居中對齊 |
| :-----| ----: | :----: |
| 單元格 | 單元格 | 單元格 |
| 單元格 | 單元格 | 單元格 |

效果:

左對齊 右對齊 居中對齊
單元格 單元格 單元格
單元格 單元格 單元格


三、高級技巧

3.1 支持的HTML元素

Markdown是內嵌HTML的,通過HTML的語法,我們可以設置字體大小、顏色等等。
不在 Markdown 涵蓋範圍之內的標籤,都可以直接在文檔裏面用 HTML 撰寫。

目前支持的 HTML 元素有:<kbd> <b> <i> <em> <sup> <sub> <br>等 ,如:

使用 <kbd>Ctrl</kbd>+<kbd>Alt</kbd>+<kbd>Del</kbd> 重啓電腦

效果:
使用 Ctrl+Alt+Del 重啓電腦

3.1.1 字體類型、大小、顏色

<font face="黑體">我是黑體字</font>
<font face="微軟雅黑">我是微軟雅黑</font>
<font face="STCAIYUN">我是華文彩雲</font>
<font color=red>我是紅色</font>
<font color=#008000>我是綠色</font>
<font color=Blue>我是藍色</font>
<font size=5>我是尺寸</font>
<font face="黑體" color=green size=5>我是黑體,綠色,尺寸爲5</font>

效果:
我是黑體字
我是微軟雅黑
我是華文彩雲
我是紅色
我是綠色
我是藍色
我是尺寸
我是黑體,綠色,尺寸爲5

3.1.2 爲文字添加背景色

由於 style 標籤和標籤的 style 屬性不被支持,所以這裏只能是藉助 table, tr, td 等表格標籤的 bgcolor 屬性來實現背景色。故這裏對於文字背景色的設置,只是將那一整行看作一個表格,更改了那個格子的背景色(bgcolor)

<table><tr><td bgcolor=yellow>背景色yellow</td></tr></table>

效果:

背景色yellow
  1. 設置圖片百分比
<img src="http://pic11.photophoto.cn/20090626/0036036341009653_b.jpg" width="50%" height="50%">
  1. 設置圖片大小
<img src="http://pic11.photophoto.cn/20090626/0036036341009653_b.jpg" width="251" height="350" >
  1. 設置圖片位置
<div align=right><img src="http://pic11.photophoto.cn/20090626/0036036341009653_b.jpg" width="50%" height="50%"></div>

更多的:center, left, left


3.2 轉義

  • Markdown 使用了很多特殊符號來表示特定的意義,如果需要顯示特定的符號則需要使用轉義字符,Markdown 使用反斜槓轉義特殊字符:
**文本加粗** 
\*\* 正常顯示星號 \*\*

效果:
文本加粗
** 正常顯示星號 **

  • Markdown 支持以下這些符號前面加上反斜槓來幫助插入普通的符號:
\   反斜線
`   反引號
*   星號
_   下劃線
{}  花括號
[]  方括號
()  小括號
#   井字號
+   加號
-   減號
.   英文句點
!   感嘆號

3.3 公式

當你需要在編輯器中插入數學公式時,可以使用兩個美元符 $$ 包裹 TeX 或 LaTeX 格式的數學公式來實現。提交後,問答和文章頁會根據需要加載 Mathjax 對數學公式進行渲染。如:

  • 這個需要了解Latex語法。
$$
\mathbf{V}_1 \times \mathbf{V}_2 =  \begin{vmatrix} 
\mathbf{i} & \mathbf{j} & \mathbf{k} \\
\frac{\partial X}{\partial u} &  \frac{\partial Y}{\partial u} & 0 \\
\frac{\partial X}{\partial v} &  \frac{\partial Y}{\partial v} & 0 \\
\end{vmatrix}
${$tep1}{\style{visibility:hidden}{(x+1)(x+1)}}
$$

效果:
KaTeX parse error: Can't use function '$' in math mode at position 249: … \end{vmatrix} $̲{$tep1}{\style{…


3.4 插入目錄

插入目錄只要在想插入的地方加入[TOC]即可:


3.5 小技巧,解決代碼不編譯

我發現在Haroopad上寫的時候,比如插入表格,需要在前面空一行表格纔會顯示出來,還有其它一些問題也是可以在前面空一行解決的,還比如列表會連續,空一行就可以斷開了。
在CSDN上,標題後比如##要加入一個空格才行,否則不顯示,可能還有其它一些小問題了。
這些問題的出現可能是不同的編譯器上的小差別造成的,不過寫代碼需要規範,規範了一般不會有什麼問題的。



四、框圖

  • 更多的應該參考mermaid的語法,當然一般的使用下面說的應該也夠了
  • mermaid官網

4.1 橫向流程圖

```mermaid
graph LR
A[方形] -->B(圓角)
    B --> C{條件a}
    C -->|a=1| D[結果1]
    C -->|a=2| E[結果2]
    F[橫向流程圖]
  • ***注意:***需要把` ````也輸入才能寫表格,這裏並不是markdown的代碼註釋了。

效果:

a=1
a=2
方形
圓角
條件a
結果1
結果2
橫向流程圖

4.2 豎向流程圖

```mermaid
graph TD
A[方形] --> B(圓角)
    B --> C{條件a}
    C --> |a=1| D[結果1]
    C --> |a=2| E[結果2]
    F[豎向流程圖]

效果:

a=1
a=2
方形
圓角
條件a
結果1
結果2
豎向流程圖

4.3 標準流程圖

```mermaid
flowchat
st=>start: 開始框
op=>operation: 處理框
cond=>condition: 判斷框(是或否?)
sub1=>subroutine: 子流程
io=>inputoutput: 輸入輸出框
e=>end: 結束框
st->op->cond
cond(yes)->io->e
cond(no)->sub1(right)->op

效果:(好像沒有效果?可能是Haroopad不支持吧?)

Created with Raphaël 2.2.0開始框處理框判斷框(是或否?)輸入輸出框結束框子流程yesno

4.4 標準流程圖源碼格式(橫向)

```mermaid
flowchat
st=>start: 開始框
op=>operation: 處理框
cond=>condition: 判斷框(是或否?)
sub1=>subroutine: 子流程
io=>inputoutput: 輸入輸出框
e=>end: 結束框
st(right)->op(right)->cond
cond(yes)->io(bottom)->e
cond(no)->sub1(right)->op

效果:

Created with Raphaël 2.2.0開始框處理框判斷框(是或否?)輸入輸出框結束框子流程yesno

4.5 UML時序圖源碼樣例

```mermaid
sequenceDiagram
對象A->>對象B: 對象B你好嗎?(請求)
Note right of 對象B: 對象B的描述
Note left of 對象A: 對象A的描述(提示)
對象B-->>對象A: 我很好(響應)
對象A->>對象B: 你真的好嗎?

效果:

對象A對象B對象B你好嗎?(請求)對象B的描述對象A的描述(提示)我很好(響應)你真的好嗎?對象A對象B標題:複雜使用

4.6 UML時序圖源碼複雜樣例

```mermaid
sequenceDiagram
Title: 標題:複雜使用
對象A->>對象B: 對象B你好嗎?(請求)
Note right of 對象B: 對象B的描述
Note left of 對象A: 對象A的描述(提示)
對象B-->>對象A: 我很好(響應)
對象B->>小三: 你好嗎
小三-->>對象A: 對象B找我了
對象A->>對象B: 你真的好嗎?
Note over 小三,對象B: 我們是朋友
participant C
Note right of C: 沒人陪我玩

效果:

對象A對象B小三C對象B你好嗎?(請求)對象B的描述對象A的描述(提示)我很好(響應)你好嗎對象B找我了你真的好嗎?我們是朋友沒人陪我玩對象A對象B小三C標題:複雜使用

4.7 UML標準時序圖樣例

```mermaid
%% 時序圖例子,-> 直線,-->虛線,->>實線箭頭
  sequenceDiagram
    participant 張三
    participant 李四
    張三->王五: 王五你好嗎?
    loop 健康檢查
        王五->王五: 與疾病戰鬥
    end
    Note right of 王五: 合理 食物 <br/>看醫生...
    李四-->>張三: 很好!
    王五->李四: 你怎麼樣?
    李四-->王五: 很好!

效果:

張三李四王五王五你好嗎?與疾病戰鬥loop[ 健康檢查 ]合理 食物 看醫生...很好!你怎麼樣?很好!張三李四王五標題:複雜使用

4.8 甘特圖樣例

```mermaid
%% 語法示例
        gantt
        dateFormat  YYYY-MM-DD
        title 軟件開發甘特圖
        section 設計
        需求                      :done,    des1, 2014-01-06,2014-01-08
        原型                      :active,  des2, 2014-01-09, 3d
        UI設計                     :         des3, after des2, 5d
    未來任務                     :         des4, after des3, 5d
        section 開發
        學習準備理解需求                      :crit, done, 2014-01-06,24h
        設計框架                             :crit, done, after des2, 2d
        開發                                 :crit, active, 3d
        未來任務                              :crit, 5d
        耍                                   :2d
        section 測試
        功能測試                              :active, a1, after des3, 3d
        壓力測試                               :after a1  , 20h
        測試報告                               : 48h

效果:

%% 語法示例
        gantt
        dateFormat  YYYY-MM-DD
        title 軟件開發甘特圖
        section 設計
        需求                      :done,    des1, 2014-01-06,2014-01-08
        原型                      :active,  des2, 2014-01-09, 3d
        UI設計                     :         des3, after des2, 5d
    未來任務                     :         des4, after des3, 5d
        section 開發
        學習準備理解需求                      :crit, done, 2014-01-06,24h
        設計框架                             :crit, done, after des2, 2d
        開發                                 :crit, active, 3d
        未來任務                              :crit, 5d
        耍                                   :2d
        section 測試
        功能測試                              :active, a1, after des3, 3d
        壓力測試                               :after a1  , 20h
        測試報告                               : 48h


五、Markdown轉PDF

  • 安裝Latex
  • 想要更好的PDF體驗,還是老實學習Latex吧!

5.1 使用pandoc轉換

5.1.1 下載與安裝pandoc

  • 網上的人推薦用pandoc,不過好像要結合Latex,上面給出了Latex的安裝方法
  • pandoc簡介:Pandoc 是一個用 haskell 編寫的開源文本轉換工具,小巧迅速且支持格式廣泛,堪稱文本轉換應用的瑞士軍刀。支持很多種輸入輸出,有關 Pandoc 可以在其官網進行詳細瞭解。下載頁面可以點此進入,在其中選擇合適的版本即可(GitHub 下載不多贅述)。
  • 參考1
  • 參考2
  • 參考3

首先我們打開pandoc的官方網站,然後點擊Installing,下載即可,或者點擊Releases,到github上下載,這是一個開源的項目,放心使用吧!

  • 我選擇了x64的下載,他提供了一個zip包和一個msi包,都下了,msi可以安裝的,但是zip提供了exe文件,不會用,zip裏會有說明,沒細看了。那就下載msi文件安裝吧,雙擊運行安裝即可!

5.1.2 Getting started

下載好後參照pandoc管網Getting started來操作吧,也可以看pandoc幫助手冊,還有指令demos

  • 按官網說轉pdf需要安裝Latex,他指定的是MiKTeX,不過我已經安裝了TeXlive了,不安裝那麼多了,所以看看有沒有其它方法吧。
  1. 安裝好後打開cmd或者PowerShell,輸入:
pandoc --version

可以查到版本號就說明安裝成功了!
2. 更改當前目錄
在powershell中輸入pwd可以查看當前目錄,dir可以查看當前目錄下的文件,cd可以轉換目錄,可以打開需要轉換的文件所在目錄,直接轉換過去,比如:

cd your_directory
Example: 
cd D:\Software_Study\Markdown\Latex安裝與配置

輸入cd ..可以跳轉到上一個目錄,等等。
3. 轉換命令
如果只是英文的,所說可以用:

pandoc input.md -o output.pdf

但是,有中文不行,需要latex,但是我試了幾種方法都不行,但是關鍵都是latex,所以先學latex吧!


5.2 使用Haroopad的打印功能

這個很簡單,但是出來的pdf文件的鏈接沒有了,字也不能複製。
如果想格式可調一點的話,那就先導出HTML,再用瀏覽器打開,打印成pdf,不過還是一樣會丟失鏈接。

  • 不過轉成pdf都面臨一個排版的問題,有時候不盡人意。

5.3 使用markdownpad2轉換

markdownpad2帶有轉爲pdf的功能,所以是一個不錯的選擇,但是收費!!!

到官網上下載就可以了,下載後直接安裝,不過好像又要安裝一個visual c++什麼的,我沒安裝成功,看看再說吧。

5.3.1 註冊

安裝好後,會彈出註冊的框,填入以下信息即可註冊成功。如果沒有彈出,可以這麼做:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ECqZypBh-1589687572906)(Markdownpad2_激活_1.png)]
不過我遇到點問題,輸入註冊信息後還是不行,提示html錯誤什麼的,結果重新打開一下軟件又可以了,不知道爲什麼。
以下提供一個可用的license:

Email address :
 [email protected]

License key : 
GBPduHjWfJU1mZqcPM3BikjYKF6xKhlKIys3i1MU2eJHqWGImDHzWdD6xhMNLGVpbP2M5SN6bnxn2kSE8qHqNY5QaaRxmO3YSMHxlv2EYpjdwLcPwfeTG7kUdnhKE0vVy4RidP6Y2wZ0q74f47fzsZo45JE2hfQBFi2O9Jldjp1mW8HUpTtLA2a5/sQytXJUQl/QKO0jUQY4pa5CCx20sV1ClOTZtAGngSOJtIOFXK599sBr5aIEFyH0K7H4BoNMiiDMnxt1rD8Vb/ikJdhGMMQr0R4B+L3nWU97eaVPTRKfWGDE8/eAgKzpGwrQQoDh+nzX1xoVQ8NAuH+s4UcSeQ==

激活後,隨便打開一個markdown文件,但是無法顯示預覽,需要下載一個跟html有關的文件,Awesomium,下載安裝好後,重啓電腦就可以使用了。

如果使用註冊機,只需要隨便給一下郵箱地址就可以生成license key了!

5.3.2 轉換pdf

在markdownpad2中寫好文章後,點擊file->export,導出到PDF文件就可以了,文字可以複製,鏈接能保留,但是排版不是很理想,而且表格好像也無法顯示,等等一些問題,以後想到解決辦法再補充吧。



  1. 菜鳥教程 – 學的不僅是技術,更是夢想!!! ↩︎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章