【譯】Google Markdown書寫風格指南

譯者:nbztx
聯系方式:nbztx@126.com


Markdown的出色之處主要在于能夠使用純文本書寫并且得到一流的格式化輸出結果,

我們想要平衡以下三個目標:

  1. 源代碼具有良好的可讀性和可移植性
  2. Markdown文件隨時間推移、在團隊之間的可維護性
  3. 語法簡單且容易記憶

內容:

  1. 文檔布局
  2. 字符行限制
  3. 尾隨空格
  4. 標題
    1. ATX風格的標題
    2. 標題中的間隔
  5. 列表
    1. 對長列表使用“懶人編號法”
    2. 嵌套列表間距
  6. 代碼
    1. 行內代碼
    2. 代碼塊
    3. 語言聲明
    4. 避免換行
    5. 列表內嵌代碼塊
  7. 鏈接
    1. 使用具有提示性的鏈接標題
  8. 圖像
  9. 優先使用列表
  10. 優先使用Markdown語法

文檔標題

一般情況下,大多數文檔會采用下面幾種布局:

# Document Title

Short introduction.

[TOC]

## Topic

Content.

## See also

* https://link-to-more-info
  1. # Document Title: 第一個標題應當是一個一級標題,并且應該盡可能和文件名稱保持一致。第一個一級標題會被用作頁面標題。

  2. author: 可選項。如果你想要說明對文檔的所有權或者它是你的得意之作,就把你自己放到標題下吧,雖然版本修訂記錄通常就足夠說明這一點了。

  3. Short introduction: 1~3句能夠概括整個主題的話。想象你自己是一個完全的新手,剛剛接觸你寫的《Java從入門到精通》,需要了解那些你自己認為理所應當的最基本的前置知識,比如“什么是Java”、“為什么我要學習Java”。

  4. [TOC]: 用來生成目錄。

  5. ## Topics: 你剩下的標題應該從二級標題開始開始使用。

  6. ## See also: 在底部為想了解更多相關知識或沒有找到所需知識的用戶放置各種鏈接。

Lorem ipsum dolor sit amet, nec eius volumus patrioque cu, nec et commodo
hendrerit, id nobis saperet fuisset ius.

*   Malorum moderatius vim eu. In vix dico persecuti. Te nam saperet percipitur
    interesset. See the [foo docs](https://gerrit.googlesource.com/gitiles/+/master/Documentation/markdown.md).

通常在長鏈接前新起一行有利于可讀性,并且能夠最小化鏈接的溢出。

Lorem ipsum dolor sit amet. See the
[foo docs](https://gerrit.googlesource.com/gitiles/+/master/Documentation/markdown.md)
for details.

尾隨空格

不要使用尾隨空格,用尾隨的反斜杠代替。
Don't use trailing whitespace, use a trailing backslash.

雖然 CommonMark spec 判定一行末尾的兩個空格等同于插入一個“<br />”標簽,但很多文件系統會有提交前的尾部空格檢查,很多IDE也會把尾部空格清理掉。

最好的方法是完全避免使用“<br />”的需要,Markdown用新行表示段落的標簽,習慣它。

標題

ATX風格的標題

## Heading 2

含有“=”或“-”下劃線的標題維護起來會很討厭,而且和其他標題語法不兼容。用戶不知道“---”的意思是H1還是H2。

Heading - do you remember what level? DO NOT DO THIS.
---------

標題中的間隔

請在“#”后加空格,并和上下文保持間隔:

...text before.

# Heading 1

Text after...

缺少間隔會讓源碼閱讀起來有點困難:

...text before.

#Heading 1
Text after... DO NOT DO THIS.

列表

對長列表使用“懶人編號法”

Markdown非常智能,可以讓生成的HTML文件正確排列你的有序列表。對于比較長的、可能會修改的列表(尤其是很長的嵌套列表),請使用“懶人編號法”:

1.  Foo.
1.  Bar.
    1.  Foofoo.
    1.  Barbar.
1.  Baz.

而對于比較短的、很少修改的有序列表,按順序標號更好,因為這樣源碼讀起來更加容易:

1.  Foo.
2.  Bar.
3.  Baz.

嵌套列表間距

嵌套列表時,對數字開頭的列表和星號開頭的列表都使用四個空格的縮進:

1.  2 spaces after a numbered list.
    4 space indent for wrapped text.
2.  2 spaces again.

*   3 spaces after a bullet.
    4 space indent for wrapped text.
    1.  2 spaces after a numbered list.
        8 space indent for the wrapped text of a nested list.
    2.  Looks nice, don't it?
*   3 spaces after a bullet.

下面這種寫法也能奏效,但看起來很亂:

* One space,
with no indent for wrapped text.
     1. Irregular nesting... DO NOT DO THIS.

即使沒有嵌套,使用四個空格的縮進也會讓包含文本的布局顯得更加連續:

*   Foo,
    wrapped.

1.  2 spaces
    and 4 space indenting.
2.  2 spaces again.

當然,如果列表規模很小、沒有嵌套、只有單行,那么單個空格也足夠了:

* Foo
* Bar
* Baz.

1. Foo.
2. Bar.

代碼

單行代碼

`反引號`定義了單行代碼,并且會逐字逐句呈現所有包含的文本,用它來進行簡短的代碼和字段的引用:

You'll want to run `really_cool_script.sh arg`.

Pay attention to the `foo_bar_whammy` field in that table.

只在抽象意義上指明一個文件類型時,使用單行代碼而不是一個具體的文件:

Be sure to update your `README.md`!

Backticks are the most common approach for "escaping" Markdown metacharacters;
in most situations where escaping would be needed, code font just makes sense
anyway.

代碼塊

代碼超過一行時,請使用代碼塊:

<pre>

def Foo(self, bar):
  self.bar = bar

</pre>

語言聲明

分開進行語言聲明是最好的,這樣無論語法高亮器還是另外的文本編輯器都不需要瞎猜。

縮進代碼塊有時會更清晰易讀

四個空格的縮進也會被翻譯成代碼塊,這能使源碼變得更加清晰易讀,缺點是無法區分語言。我們建議在寫較短的片段時這樣做:

You'll need to run:

    bazel run :thing -- --foo

And then:

    bazel run :another_thing -- --bar

And again:

    bazel run :yet_again -- --baz

避免換行

由于大多數命令行代碼片段要被直接復制粘貼進終端,最好的方法是避免任何換行,在行尾加一個反斜杠即可:

<pre>

bazel run :target -- --flag --foo=longlonglonglonglongvalue \
--bar=anotherlonglonglonglonglonglonglonglonglonglongvalue

</pre>

列表內嵌代碼塊

如果你要在列表中內嵌代碼塊,使用縮進來確保它不會破壞列表:

*   Bullet.

    ```c++
    int foo;
    ```

*   Next bullet.

你也可以用4個空格來創建內嵌代碼塊,只需要從列表縮進處額外加4個空格:

*   Bullet.

        int foo;

*   Next bullet.

鏈接

Long links make source Markdown difficult to read and break the 80 character
wrapping。盡可能縮短你的鏈接

使用具有提示性的鏈接標題

Markdown鏈接語法允許你像HTML一樣設置鏈接,但你要正確地使用它。

當讀者快速瀏覽像“link”或“here”這樣的鏈接標題時,他們完全得不到任何信息,這只是一種對空間的浪費。

See the syntax guide for more info: [link](syntax_guide.md).
Or, check out the style guide [here](style_guide.md).
DO NOT DO THIS.

正確的做法應該是:先按文章的意思寫好句子,再回過頭找出最合適的短語,把它標記成鏈接。

See the [syntax guide](syntax_guide.md) for more info.
Or, check out the [style guide](style_guide.md).

圖像

盡可能少用圖像,多使用簡單的截圖。這一建議的意思是純文本能夠讓用戶更快了解到信息的內容,而減少分心和來自作者的拖延。
盡管如此,有時候圖片對于表明你的意思還是很有幫助的。

查閱 image syntax 了解更多。

優先使用列表

任何Markdown中的表格都應該盡可能小,復雜的、大型的表格在源碼中讀起來很困難,接下來想修改會更痛苦。

Fruit | Attribute | Notes
--- | --- | --- | ---
Apple | [Juicy](http://example.com/SomeReallyReallyReallyReallyReallyReallyReallyReallyLongQuery), Firm, Sweet | Apples keep doctors away.
Banana | [Convenient](http://example.com/SomeDifferentReallyReallyReallyReallyReallyReallyReallyReallyLongQuery), Soft, Sweet | Contrary to popular belief, most apes prefer mangoes.

DO NOT DO THIS

列表和子標題通常足夠你用來呈現相同的信息,不那么緊湊,卻要容易編輯得多:

## Fruits

### Apple

* [Juicy](http://SomeReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyLongURL)
* Firm
* Sweet

Apples keep doctors away.

### Banana

* [Convenient](http://example.com/SomeDifferentReallyReallyReallyReallyReallyReallyReallyReallyLongQuery)
* Soft
* Sweet

Contrary to popular belief, most apes prefer mangoes.

盡管如此,有時候小型表格還是很有用的:

Transport | Favored by | Advantages
--- | --- | ---
Swallow | Coconuts | Otherwise unladen
Bicycle | Miss Gulch | Weatherproof
X-34 landspeeder | Whiny farmboys | Cheap since the X-38 came out

優先使用Markdown語法

盡可能使用標準Markdown語法,避免嵌入使用HTML。如果你無法實現你想要的效果,再好好考慮一下你是否真的需要它。因為除了大型表格,Markdown幾乎已經可以滿足任何需求。

任何HTML或Javascript的嵌入都會降低可讀性和可移植性,這反過來會限制文檔和其它工具整合的有效性,
which may either present the source as plain text or render it. See
Philosophy.

Gitiles does not render HTML.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,967評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,273評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,870評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,742評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,527評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,010評論 1 322
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,108評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,250評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,769評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,656評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,853評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,371評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,103評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,472評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,717評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,487評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,815評論 2 372

推薦閱讀更多精彩內容

  • 為什么學習Markdown 自從搭建了 Hexo 博客之后,發現還有 Markdown 這種寫文章的方法,想到以后...
    lifeColder閱讀 20,174評論 10 216
  • Markdown 語法 以下是 Markdown 的常用語法!在以后的筆記中將持續使用 Markdown 語法進行...
    WinSolstice閱讀 1,487評論 0 1
  • 1. 斜體和粗體 代碼: 顯示效果: 這是一段斜體 這是一段粗體 這是一段加粗斜體 這是一段刪除線 2. 分級標題...
    泊牧閱讀 2,364評論 0 2
  • 當我們,看到一個新聞,聽到一個節目,讀到一篇文章,學習了一個課程……我們應該問問自己 這跟我有什么關系 這個問題,...
    蕎米閱讀 238評論 0 0
  • 明仕河邊思明世幸福橋頭悟幸福 幸福橋頭的農大媽過著的,才是真正屬于田園的恬淡無憂無欲無求的幸福生活。 早晨在田園里...
    梅紫醬閱讀 624評論 2 1