1. 程式人生 > >MarkDown 學習筆記(二)

MarkDown 學習筆記(二)

@(Markdown)[印象筆記|馬克飛象|學習筆記]

序言

因為工作原因常會去編寫一些 Wiki ,所以就想學習並使用Markdown來提高一下自己的文案能力。在Mac平臺上 印象筆記 是一個非常不錯的應用,如果印象筆記支援Markdown語法是多麼棒的一件事情。於是發現了馬克飛象,本次Markdown學習之旅將主要使用馬克飛象來編輯自己的博文。

Markdown簡介

Markdown是一種輕量級的標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的 HTML頁面。——維基百科

列表

Markdown 支援有序列表和無序列表。
無序列表使用星號、加號或是減號作為列表標記:

*   Red
*   Green
*   Blue

等同於:

+   Red
+   Green
+   Blue

也等同於:

-   Red
-   Green
-   Blue

效果:

  • Red
  • Green
  • Blue

有序列表則使用數字接著一個英文句點:

1.  Bird
2.  McHale
3.  Parish

很重要的一點是,你在列表標記上使用的數字並不會影響輸出的 HTML 結果,上面的列表所產生的 HTML 標記為:

<ol>
<li>Bird</li>
<li>McHale</li
>
<li>Parish</li> </ol>

如果你的列表標記寫成:

1.  Bird
1.  McHale
1.  Parish

或甚至是:

3. Bird
1. McHale
8. Parish

你都會得到完全相同的 HTML 輸出。重點在於,你可以讓 Markdown 檔案的列表數字和輸出的結果相同,或是你懶一點,你可以完全不用在意數字的正確性。

如果你使用懶惰的寫法,建議第一個專案最好還是從 1. 開始,因為 Markdown 未來可能會支援有序列表的 start 屬性。

列表專案標記通常是放在最左邊,但是其實也可以縮排,最多 3 個空格,專案標記後面則一定要接著至少一個空格或製表符。

要讓列表看起來更漂亮,你可以把內容用固定的縮排整理好:

*   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
    Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
    viverra nec, fringilla in, laoreet vitae, risus.
*   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
    Suspendisse id sem consectetuer libero luctus adipiscing.

但是如果你懶,那也行:

*   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
viverra nec, fringilla in, laoreet vitae, risus.
*   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
Suspendisse id sem consectetuer libero luctus adipiscing.

效果:

  • Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
    Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
    viverra nec, fringilla in, laoreet vitae, risus.
  • Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
    Suspendisse id sem consectetuer libero luctus adipiscing.

如果列表專案間用空行分開,在輸出 HTML 時 Markdown 就會將專案內容用

標籤包起來,舉例來說:

*   Bird
*   Magic

會被轉換為:

<ul>
<li>Bird</li>
<li>Magic</li>
</ul>

但是這個:

*   Bird

*   Magic   

會被轉換為:

<ul>
<li><p>Bird</p></li>
<li><p>Magic</p></li>
</ul>

列表專案可以包含多個段落,每個專案下的段落都必須縮排 4 個空格或是 1 個製表符:

1.  This is a list item with two paragraphs. Lorem ipsum dolor
    sit amet, consectetuer adipiscing elit. Aliquam hendrerit
    mi posuere lectus.

    Vestibulum enim wisi, viverra nec, fringilla in, laoreet
    vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
    sit amet velit.

2.  Suspendisse id sem consectetuer libero luctus adipiscing.

如果你每行都有縮排,看起來會看好很多,當然,再次地,如果你很懶惰,Markdown 也允許:

*   This is a list item with two paragraphs.

    This is the second paragraph in the list item. You're
only required to indent the first line. Lorem ipsum dolor
sit amet, consectetuer adipiscing elit.

*   Another item in the same list.  

如果要在列表專案內放進引用,那 > 就需要縮排:

*   A list item with a blockquote:

    > This is a blockquote
    > inside a list item.

如果要放程式碼區塊的話,該區塊就需要縮排兩次,也就是 8 個空格或是 2 個製表符:

*   一列表項包含一個列表區塊:

        <程式碼寫在這>

當然,專案列表很可能會不小心產生,像是下面這樣的寫法

1986. What a great season.

換句話說,也就是在行首出現數字-句點-空白,要避免這樣的狀況,你可以在句點前面加上反斜槓。

1986\. What a great season.

程式碼區塊

和程式相關的寫作或是標籤語言原始碼通常會有已經排版好的程式碼區塊,通常這些區塊我們並不希望它以一般段落檔案的方式去排版,而是照原來的樣子顯示,Markdown 會用 <pre><code>標籤來把程式碼區塊包起來。

要在 Markdown 中建立程式碼區塊很簡單,只要簡單地縮排 4 個空格或是 1 個製表符就可以,例如,下面的輸入:

這是一個普通段落:

    這是一個程式碼區塊。

Markdown 會轉換成:

<p>這是一個普通段落:</p>

<pre><code>這是一個程式碼區塊。
</code></pre>

效果:

這是一個普通段落:

    這是一個程式碼區塊。

這個每行一階的縮排(4 個空格或是 1 個製表符),都會被移除,例如:

    Here is an example of AppleScript:

    tell application "Foo"
        beep
    end tell

會被轉換為:

<p>Here is an example of AppleScript:</p>

<pre><code>tell application "Foo"
    beep
end tell
</code></pre>

一個程式碼區塊會一直持續到沒有縮排的那一行(或是檔案結尾)。

在程式碼區塊裡面 & <> 會自動轉成 HTML 實體,這樣的方式讓你非常容易使用 Markdown 插入範例用的 HTML 原始碼,只需要複製貼上,再加上縮排就可以了,剩下的 Markdown 都會幫你處理,例如:

<div class="footer">
  &copy; 2004 Foo Corporation
</div>

會被轉換為:

<pre><code>&lt;div class="footer"&gt;
    &amp;copy; 2004 Foo Corporation
&lt;/div&gt;
</code></pre>

程式碼區塊中,一般的 Markdown 語法不會被轉換,像是星號便只是星號,這表示你可以很容易地以 Markdown 語法撰寫 Markdown 語法相關的檔案。

分隔線

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

* * *

***

*****

- - -

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

連結

Markdown 支援兩種形式的連結語法: 行內式和參考式兩種形式。

不管是哪一種,連結文字都是用 [方括號] 來標記。

要建立一個行內式的連結,只要在方塊括號後面緊接著圓括號並插入網址連結即可,如果你還想要加上鍊接的 title 文字,只要在網址後面,用雙引號把 title 文字包起來即可,例如:

This is [an example](http://example.com/ "Title") inline link.

[This link](http://example.net/) has no title attribute.

會產生:

<p>This is <a href="http://example.com/" title="Title">
an example</a> inline link.</p>

<p><a href="http://example.net/">This link</a> has no
title attribute.</p>

如果你是要連結到同樣主機的資源,你可以使用相對路徑:

See my [About](/about/) page for details.

參考式的連結是在連結文字的括號後面再接上另一個方括號,而在第二個方括號裡面要填入用以辨識連結的標記:

This is [an example][id] reference-style link.

你也可以選擇性地在兩個方括號中間加上一個空格:

This is [an example] [id] reference-style link.

接著,在檔案的任意處,你可以把這個標記的連結內容定義出來:

[id]: http://example.com/  "Optional Title Here"

連結內容定義的形式為:
* 方括號(前面可以選擇性地加上至多三個空格來縮排),裡面輸入連結文字
* 接著一個冒號
* 接著一個以上的空格或製表符
* 接著連結的網址
* 選擇性地接著 title 內容,可以用單引號、雙引號或是括弧包著

下面這三種連結的定義都是相同:

[foo]: http://example.com/  "Optional Title Here"
[foo]: http://example.com/  'Optional Title Here'
[foo]: http://example.com/  (Optional Title Here)

請注意:有一個已知的問題是 Markdown.pl 1.0.1 會忽略單引號包起來的連結 title。

連結網址也可以用方括號包起來:

[id]: "Optional Title Here"

你也可以把 title 屬性放到下一行,也可以加一些縮排,若網址太長的話,這樣會比較好看:

[id]: http://example.com/longish/path/to/resource/here
    "Optional Title Here"

網址定義只有在產生連結的時候用到,並不會直接出現在檔案之中。

連結辨別標籤可以有字母、數字、空白和標點符號,但是並不區分大小寫,因此下面兩個連結是一樣的:

[link text][a]
[link text][A]

隱式連結標記功能讓你可以省略指定連結標記,這種情形下,連結標記會視為等同於連結文字,要用隱式連結標記只要在連結文字後面加上一個空的方括號,如果你要讓 “Google” 連結到 google.com,你可以簡化成:

[Google][]

然後定義連結內容:

[Google]: http://google.com/

由於連結文字可能包含空白,所以這種簡化型的標記內也許包含多個單詞:

Visit [Daring Fireball][] for more information.

然後接著定義連結

[Daring Fireball]: http://daringfireball.net/

連結的定義可以放在檔案中的任何一個地方,我比較偏好直接放在連結出現段落的後面,你也可以把它放在檔案最後面,就像是註解一樣。

下面是一個參考式連結的範例:

I get 10 times more traffic from [Google] [1] than from
[Yahoo] [2] or [MSN] [3].

  [1]: http://google.com/        "Google"
  [2]: http://search.yahoo.com/  "Yahoo Search"
  [3]: http://search.msn.com/    "MSN Search"

如果改成用連結名稱的方式寫:

I get 10 times more traffic from [Google][] than from
[Yahoo][] or [MSN][].

  [google]: http://google.com/        "Google"
  [yahoo]:  http://search.yahoo.com/  "Yahoo Search"
  [msn]:    http://search.msn.com/    "MSN Search"

上面兩種寫法都會產生下面的 HTML。

<p>I get 10 times more traffic from <a href="http://google.com/"
title="Google">Google</a> than from
<a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>
or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>

下面是用行內式寫的同樣一段內容的 Markdown 檔案,提供作為比較之用:

I get 10 times more traffic from [Google](http://google.com/ "Google")
than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or
[MSN](http://search.msn.com/ "MSN Search").

參考式的連結其實重點不在於它比較好寫,而是它比較好讀,比較一下上面的範例,使用參考式的文章本身只有 81 個字元,但是用行內形式的卻會增加到 176 個字元,如果是用純 HTML 格式來寫,會有 234 個字元,在 HTML 格式中,標籤比文字還要多。

使用 Markdown 的參考式連結,可以讓檔案更像是瀏覽器最後產生的結果,讓你可以把一些標記相關的元資料移到段落文字之外,你就可以增加連結而不讓文章的閱讀感覺被打斷。

強調

Markdown 使用星號()和底線(_)作為標記強調字詞的符號,被 或 _ 包圍的字詞會被轉成用 <em> 標籤包圍,用兩個 * 或 _ 包起來的話,則會被轉成 <strong>,例如:

*single asterisks*

_single underscores_

**double asterisks**

__double underscores__

會轉成:

<em>single asterisks</em>

<em>single underscores</em>

<strong>double asterisks</strong>

<strong>double underscores</strong>

你可以隨便用你喜歡的樣式,唯一的限制是,你用什麼符號開啟標籤,就要用什麼符號結束。

強調也可以直接插在文字中間:

un*frigging*believable

但是如果你的 *_ 兩邊都有空白的話,它們就只會被當成普通的符號。

如果要在文字前後直接插入普通的星號或底線,你可以用反斜線:

\*this text is surrounded by literal asterisks\*

程式碼

如果要標記一小段行內程式碼,你可以用反引號把它包起來(`),例如:

Use the `printf()` function.

會產生:

<p>Use the <code>printf()</code> function.</p>

如果要在程式碼區段內插入反引號,你可以用多個反引號來開啟和結束程式碼區段:

``There is a literal backtick (`) here.``

這段語法會產生:

<p><code>There is a literal backtick (`) here.</code></p>

程式碼區段的起始和結束端都可以放入一個空白,起始端後面一個,結束端前面一個,這樣你就可以在區段的一開始就插入反引號:

A single backtick in a code span: `` ` ``

A backtick-delimited string in a code span: `` `foo` ``

會產生:

<p>A single backtick in a code span: <code>`</code></p>

<p>A backtick-delimited string in a code span: <code>`foo`</code></p>

在程式碼區段內,& 和方括號都會被自動地轉成 HTML 實體,這使得插入 HTML 原始碼變得很容易,Markdown 會把下面這段:

Please don't use any `<blink>` tags.

轉為:

<p>Please don't use any <code><blink></code> tags.</p>

你也可以這樣寫:

`&#8212;` is the decimal-encoded equivalent of `&mdash;`.

以產生:

<p><code>&amp;#8212;</code> is the decimal-encoded
equivalent of <code>&amp;mdash;</code>.</p>

圖片

很明顯地,要在純文字應用中設計一個「自然」的語法來插入圖片是有一定難度的。

Markdown 使用一種和連結很相似的語法來標記圖片,同樣也允許兩種樣式: 行內式和參考式。

行內式的圖片語法看起來像是:

![Alt text](/path/to/img.jpg)

![Alt text](/path/to/img.jpg "Optional title")

詳細敘述如下:

一個驚歎號 !
接著一個方括號,裡面放上圖片的替代文字
接著一個普通括號,裡面放上圖片的網址,最後還可以用引號包住並加上 選擇性的 ‘title’ 文字。
參考式的圖片語法則長得像這樣:

![Alt text][id]

「id」是圖片參考的名稱,圖片參考的定義方式則和連結參考一樣:

[id]: url/to/image  "Optional title attribute"

反斜槓

Markdown 可以利用反斜槓來插入一些在語法中有其它意義的符號,例如:如果你想要用星號加在文字旁邊的方式來做出強調效果(但不用 標籤),你可以在星號的前面加上反斜槓:

\*literal asterisks\*

Markdown 支援以下這些符號前面加上反斜槓來幫助插入普通的符號:

\   反斜線
`   反引號
*   星號
_   底線
{}  花括號
[]  方括號
()  括弧
#   井字號
+   加號
-   減號
.   英文句點
!   驚歎號

小結

  • Markdown可以通過列表和分割線輕鬆的幫助我們排版和分割我們的文案,並且還擁有比較美觀的樣式

  • 在段落中適當加入連結和強調可以突出我們段落的重點,以及對一些名詞做快速的解釋

  • 程式碼的嵌入非常人性化,對於編寫技術類部落格非常有幫助

  • 不得不吐槽圖片是一個反人類的標籤,個人推薦使用<img>

相關推薦

MarkDown 學習筆記

@(Markdown)[印象筆記|馬克飛象|學習筆記] 序言 因為工作原因常會去編寫一些 Wiki ,所以就想學習並使用Markdown來提高一下自己的文案能力。在Mac平臺上 印象筆記 是一個非常不錯的應用,如果印象筆記支援Markdown語法是多

php laravel框架學習筆記 數據庫操作

true 數據 mar sql show top 一行 ati del 原博客鏈接:http://www.cnblogs.com/bitch1319453/p/6810492.html mysql基本配置 你可用通過配置環境變量,使用cmd進入mysql,當然還有一種東

java學習筆記圖形用戶接口

star strong per getwidth cep runnable graphics s2d gb2 這個學期主要放在ACM比賽上去了,比賽結束了。不知不覺就15周了,這周就要java考試了,復習一下java吧。java的學習的目的還是讓我們學以致用,讓我們可以

數據結構學習筆記 線性表的順序存儲和鏈式存儲

出錯 初始化 node != test span 輸入 des val 線性表:由同類型數據元素構成有序序列的線性結構  --》表中元素的個數稱為線性表的長度  --》沒有元素時,成為空表  --》表起始位置稱表頭,表結束位置稱表尾 順序存儲:    1 package

Memcache 學習筆記---- PHP 腳本操作 Memcache 服務器

ext status ram var_dump 介紹 修改 memcache local dbn    PHP 腳本操作 Memcache 服務器 一、PHP腳本操作Memcache方法     使用 PHP 腳本操作 Memcache,在 PHP 手冊中有詳細的介紹,我們

javascript學習筆記:定義函數、調用函數、參數、返回值、局部和全局變量

兩個 cnblogs bsp 結果 value ava ase com 調用 定義函數、調用函數、參數、返回值 關鍵字function定義函數,格式如下: function 函數名(){ 函數體 } 調用函數、參數、返回值的規則和c語言規則類似。 1 <!DOC

神箭手爬蟲學習筆記

暫存 自動 表達 eve doc 常用 學習 數據 .sh 一,可以使用神劍手已經做好的爬蟲市場直接跑,不需要自己定義爬取規則 二,爬蟲市場裏沒有的網站,需要自己去定義規則來爬數據。 三,爬取的數據可以先存放在神劍手,也可以放到七牛暫存。(提醒下,網站需要數據備份如果數量不

thinkphp5.0學習筆記API後臺處理與命名空間

mac code 輸入 -1 pub 基礎 select() color 第一個 命名空間 先來看命名空間吧; 命名空間是學習TP的基礎, <?php namespace app\lian\c1; class yi{ public $obj = "這是第一個

MongoDB學習筆記

.get 條件過濾 條件 $set system.in ins version tle 不存在 一、Mongodb命令 說明:Mongodb命令是區分大小寫的,使用的命名規則是駝峰命名法。 對於database和collection無需主動創建,在插入數據時,如果dat

設計模式學習筆記 設計基本原則之【單一職責原則】

code 分享 開發者 實際應用 需要 ret ext file類 tor 單一職責原則(SRP: Single Responsibility Principle) 名詞解釋: 1) 職責:是指類變化的原因。 2) 職責擴散:就是因為某種原因,職責P被分化為粒度更細的職責P

CSS學習筆記:特性

code 背景色 左移 line tex lin 安裝 其中 cas 一、顏色特性 1. 前景色:color 用種方式指定前景色,3種方式分別是rgb顏色,#16進制編碼,顏色名稱: color: rgb(100,100,100); color: #ee3e80; col

tensorflow學習筆記

example initial turn rate mnist pac rac test mode import tensorflow as tfimport numpy as npimport mathimport tensorflow.examples.tutorial

SSH學習筆記

via linu inf 一段時間 isp x-window window max tcl 1 # 1. 關於 SSH Server 的整體設定,包含使用的 port 啦,以及使用的密碼演算方式 2 Port 22          # SSH 預設使用 22 這

Git學習筆記

== 我們 ash 發出 效率 媳婦兒 src 每天 apply 一、分支管理 1、什麽是分支   分支就相當於我們看科幻片裏的平行宇宙,如果兩個平行宇宙互不幹擾,那鐵定是啥事兒沒有。不過,在某個時間點,兩個平行宇宙合並了呢?假如兩個宇宙中都有你的影子, 合並之後相當於你們

MySql學習筆記

ati 保存 ron setting mysql的安裝 use t-sql語句 cnblogs 完全卸載mysql MySql的安裝配置與卸載: 安裝:(1)將MySql的綠色版免安裝包放到D盤,命令行進入mysql綠色版解壓縮後的bin目錄:cd D:\mysql-5.

Unity3D之Mecanim動畫系統學習筆記:模型導入

leg character ... sdk ocs 物體 mat 版本 sset 我們要在Unity3D中使用上模型和動畫,需要經過下面幾個階段的制作,下面以一個人形的模型開發為準來介紹。 模型制作 模型建模(Modelling) 我們的美術在建模時一般會制作一個稱為

算法第四版學習筆記——初級排序算法

space 倒序 優勢 name 算法 turn 資料 eply n) 時間復雜度(Time Complexity): 總運算次數表達式中受n的變化影響最大的那一項(不含系數)(註:若算法中語句執行次數為一個常數,則時間復雜度為O(1)) 若T(n)/f(n)求極限可得

Java學習筆記-------String,StringBuffer,StringBuilder區別以及映射到的同步,異步相關知識

ringbuf 等待 java學習筆記 java學習 單線程 回復 改變 hashtable ble 1. String是不可變類,改變String變量中的值,相當於開辟了新的空間存放新的string變量 2. StringBuffer 可變的類,可以通過append方法改

Python學習筆記

== 文字 編碼 無法 比較運算 一個 unicode編碼 變量 組成 一、Python中的數據類型   Python是一種弱類型的編程語言,但具體到對數據的操作時,仍存在和必須涉及到具體的數據類型的概念。  Python中的基本數據類型可以分為:    數值類型:整型、浮

Spring Boot 學習筆記

imp family framework ima pri spa cal bin ges 新建Srping Boot 項目 以下是項目結構 由於Srping Boot內置Tomcat,所以不需要配置Tomcat就可以直接運行。 HelloWorldAppli