【譯】Google Markdown書寫風(fēng)格指南

譯者:nbztx
聯(lián)系方式:nbztx@126.com


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

我們想要平衡以下三個目標(biāo):

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

內(nèi)容:

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

文檔標(biāo)題

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

# Document Title

Short introduction.

[TOC]

## Topic

Content.

## See also

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

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

  3. Short introduction: 1~3句能夠概括整個主題的話。想象你自己是一個完全的新手,剛剛接觸你寫的《Java從入門到精通》,需要了解那些你自己認(rèn)為理所應(yīng)當(dāng)?shù)淖罨镜那爸弥R,比如“什么是Java”、“為什么我要學(xué)習(xí)Java”。

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

  5. ## Topics: 你剩下的標(biāo)題應(yīng)該從二級標(biāo)題開始開始使用。

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

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 />”標(biāo)簽,但很多文件系統(tǒng)會有提交前的尾部空格檢查,很多IDE也會把尾部空格清理掉。

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

標(biāo)題

ATX風(fēng)格的標(biāo)題

## Heading 2

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

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

標(biāo)題中的間隔

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

...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.

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

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

嵌套列表間距

嵌套列表時,對數(shù)字開頭的列表和星號開頭的列表都使用四個空格的縮進(jìn):

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.

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

*   Foo,
    wrapped.

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

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

* Foo
* Bar
* Baz.

1. Foo.
2. Bar.

代碼

單行代碼

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

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>

語言聲明

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

縮進(jìn)代碼塊有時會更清晰易讀

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

You'll need to run:

    bazel run :thing -- --foo

And then:

    bazel run :another_thing -- --bar

And again:

    bazel run :yet_again -- --baz

避免換行

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

<pre>

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

</pre>

列表內(nèi)嵌代碼塊

如果你要在列表中內(nèi)嵌代碼塊,使用縮進(jìn)來確保它不會破壞列表:

*   Bullet.

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

*   Next bullet.

你也可以用4個空格來創(chuàng)建內(nèi)嵌代碼塊,只需要從列表縮進(jìn)處額外加4個空格:

*   Bullet.

        int foo;

*   Next bullet.

鏈接

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

使用具有提示性的鏈接標(biāo)題

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

當(dāng)讀者快速瀏覽像“l(fā)ink”或“here”這樣的鏈接標(biāo)題時,他們完全得不到任何信息,這只是一種對空間的浪費。

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.

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

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

圖像

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

查閱 image syntax 了解更多。

優(yōu)先使用列表

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

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

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

## 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

優(yōu)先使用Markdown語法

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

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

Gitiles does not render HTML.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容