写作导则

这虽然是个人博客,我大可随心所欲地写作,但我还是尽力想让读者更好地理解我的文章,并让文章的格式与形式更加统一,于是有了这一篇写作导则,本导则大概也能让您拥有更好的食用体验.

格式#

段落#

(类)块级语义必须附加段落空行#

在会产生块级语义的情形下,必须与空开一行,以便 goldmark 产生段落元素 p,否则有一些视觉风格可能无法正确附加.

字符#

标点#

简单标点#

CJK 和西文标点的差异还是比较大的,并且同名标点具有非常不同的字符形式,因此文章的标点集合选用应该提前确定,在编写文章时,根据文章的主语言选用一套方案.

下面列出了选定的标点列表,值得注意的是 CJK 情形下常用的句点(。U+3002)被西文句点所代替,这是为了模拟 CJK 科学类文章常用的全角实心句点(.U+FF0E),同时其后的空格增补原则与西文一致. 这样做牺牲了间距的严格性,但换来了输入的便捷性.

标点名称 西文 CJK
逗号 ,
句号 . .
问号 ?
叹号 !
引号 " 「」
分号 ;
冒号 :

连接号#

形为一条中央横线的连接号,主要有以下几种变体

  • 连字号 - (U+002D):合成词
  • 数字连接号 ‒ (U+2012):划分数字(如电话号码的区号)
  • ndash – (U+2013):表达范围(数字、日期)
  • mdash – (U+2014):破折号

在西文句子中破折号使用单个 mdash,CJK 情形中的破折号由两个 mdash 构成. 在 Markdown 中,原生支持 ndash 和 mdash 的便捷标记,为了方便起见,将数字连接号的使用情形合并到连字号下.

I18N#

语言代号#

遵守 BCP 47 中的命名规则来标记语言,如你所见目前配置了下列语言:

路径 名称 语言代号
en English en-US
zh 中文 zh-Hans-CN
wu 吴语 zh-wuu-Hans-CN
th ภาษาไทย th-TH
ja 日本語 ja-JP
ko 한국어 ko-KR

上面语言代号中的所有分段(正式讲法是子标签)都能在 IANA Language Subtag Registry 里找到.

除了这些定死的原则之外,我也采纳了 W3C: Choosing a language tag 中的一些建议,即采用扩展语言子标签. 例如,吴语的子标签 wuu 同时被列为 languageextlang

Type: language
Subtag: wuu
Description: Wu Chinese
Added: 2009-07-29
Macrolanguage: zh
%%
Type: extlang
Subtag: wuu
Description: Wu Chinese
Added: 2009-07-29
Preferred-Value: wuu
Prefix: zh
Macrolanguage: zh

这种情况下,优先采用第二种子标签,并且将其宏语言作为前缀加入,如 zh-wuu.

CJK 字符与西文间的空格#

在正式的场景下,西文在词与词间使用一个空格隔开,如果出现了小标点且其后不是边界,小标点后也会使用一个空格,例如:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque mollis erat eu diam pharetra luctus. Vestibulum a scelerisque libero. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Integer ac congue lorem. Praesent quis tempor diam. Mauris rhoncus, risus nec aliquet consequat, massa sem blandit risus, porttitor venenatis urna est nec nulla. In hac habitasse platea dictumst. Pellentesque pharetra sollicitudin tortor, non commodo arcu.

Quisque interdum ligula lobortis interdum volutpat. Vivamus at mi vel ex luctus dictum quis quis ipsum. Nunc bibendum dui a enim pharetra, sit amet condimentum erat ultricies. Nunc a leo aliquet, euismod metus eu, malesuada lacus. Sed sed libero erat. Morbi non ante a lorem maximus volutpat ac sit amet turpis. Sed at pulvinar mi, ut tristique enim. Integer non mauris id felis vehicula varius vitae nec velit. Pellentesque in bibendum odio. Ut nec mattis felis. Aliquam at euismod nulla. Mauris ac rhoncus nibh. Proin accumsan lorem a dui blandit aliquam.

而在 CJK 字符与西文混合的情形下,要让字符间距做到完美,是一件比较困难的事情. 我们采取较常规的额外补空格的手法,当主语言采用 CJK 字符时,在其中插入的西文字符部分前后应各具备一个空格,除非遇到标点或边界,例如:

大家都知道 VAC 是 Valve 公司开发的游戏反作弊系统,被普遍应用于 Valve 公司
旗下的游戏,例如 CS:GO 和 Team Fortress 2,此外也有相当一部分第三方游戏
选用其作为反作弊手段,例如 Rust 和 Unturned.

数学公式#

记号#

现代的数学记号,往往来源于约定俗成. 这将导致明白的人非常明白,而不明白的人花了不少的时间去弄懂记号的含义.

在此假定读者具有中学及以上的数学认知背景,并知悉下列的数学记号及对应含义,大多数记号在其它文章中将不再重复陈述,部分记号在特定文章中根据上下文的不同将单独阐述以表强调. 在含有一定数学内容的文章中,将自动包含指向本小节的导引链接.

数学记号 含义
$$0,1,2,3,4,5,6,7,8,9$$ 十进制的主要合法字符集
$$\mathbb{N},\mathbb{Z},\mathbb{Q},\mathbb{R},\mathbb{C}$$ 常用的数集
$$\mathbb{P}$$ 素数集
$$\mathbb{Z}/n\mathbb{Z}$$ 整数模 $n$ 环,形式上来看也是 $\mathbb{Z}$ 被 $n\mathbb{Z}$ 除得的$商集,当每个等价类各取一个代表时,即可构造模 $n$ 的完全剩余系
$$(\mathbb{Z}/n\mathbb{Z})^*$$ 整数模 $n$ 环的乘法群,当每个等价类各取一个代表时,即可构造模 $n$ 的简化剩余系
$$n \choose k$$ $n$ 选 $k$ 的组合数
$$\Omega(n),\Theta(n),O(n)$$ 渐进记号,在算法复杂度分析时非常常用
$$:=,:\equiv$$ (定义上)等于,(定义上)等价/同余