Files
openmlsys-zh/STYLE_GUIDE.md
2022-01-19 11:03:47 +08:00

179 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 样式规范
## 文本
* 章节
* 每章开头对全章做介绍
* 结构标题一致
* 小结
* 练习
* 扫码直达讨论区
* 参考文献(如有)
* 引用
* 在每节结尾处引用
* 字符串
* 使用中文双引号
* 符号描述
* 时刻t不是t时刻
* 形状使用英文标点
* (10, 20) 不是 1020
* 空格:
* 文本中中文和英文、数字、数学公式、特殊字体等之间不要加空格
* 非行首的`:numref:``:cite:`等前留有一个英文空格(否则网页不渲染)
* 代码注释同上
* 人称
* 第一人称 → 我们
* 第二人称 → 读者、你、大家
* 工具或部件
* Gluon, MXNet, NumPy, spaCy, ResNet-18, Fashion-MNIST, matplotlib
* 这些都作为词,不要带重音符
* `backward`函数
* 不是“`backward()`函数” (不要带括号)
* `for`循环
* 术语
* 统一使用
* 函数(非方法)
* 实例(非对象)
* 区分:超参数和参数
* 区分:小批量随机梯度下降和随机梯度下降
* 权重、偏差、标签
* 模型训练、模型预测(推断)
* 训练数据集、验证数据集、测试数据集
* 中文优先于英文
* 首次出现,注明原英文术语
* 无须加粗
* 无须加引号
* 中英文对照统一标准
* https://github.com/mli/gluon-tutorials-zh/blob/master/README.md
## 数学
* 数学符号样式一致
* https://github.com/goodfeli/dlbook_notation/blob/master/notation_example.pdf
* 书本页宽限制
* 每行长度
* 引用
* 上式和下式
* 以上N式以下N式
* 公式末放英文标点
* 逗号:,
* 句号:.
* 赋值符号
* \leftarrow
## 图片
* 软件
* 使用OmniGraffle制图以100%的大小导出pdfinfinite canvas再使用pdf2svg转成svg
* 样式
* 格式:
* svg
* png
* export resolution: 144
* 大小:
* 横向不超过400像素
* 纵向不超过200像素
* 粗细:
* StickArrow
* 1pt
* arrow head size: 50%
* 字体:
* 英文STIXGeneral, 9pt下标和上标6pt
* 中文PingFang SC, 9pt
* 下标和上标中的数字和括号不要斜体
* 颜色:
* 非填充深蓝色(与黑相近):
* 5B7DAA
* 填充蓝色(与黑对比)
*66BFFF
*B2D9FF
* 版权
* 不使用网络图片
* 位置
* 两张图不可以较邻近
* 两张图拼一下
* 引用
* 手动引用例如图7.1
* matplotlib
* 大小
* 分辨率
## 代码
* 使用utils.py封装多次使用函数
* 首次出现函数,书里给出函数实现
* Python规范一致
* PEP8
* 二元操作符换行:操作符和后一元一起换行 (https://www.python.org/dev/peps/pep-0008/#should-a-line-break-before-or-after-a-binary-operator)
* 将相邻赋值语句尽可能合并为同一行
* 如 num_epochs, lr = 5, 0.1
* 变量名一致
* num_epochs
* 迭代周期
* num_hiddens
* 隐藏单元个数
* num_inputs
* 输入个数
* num_outputs
* 输出个数
* net
* 模型
* lr
* 学习率
* acc
* 准确率
* 迭代中
* 特征X
* 标签y, y_hat 或 Y, Y_hat
* for X, y in data_iter
* 数据集:
* 特征features或images
* 标签labels
* DataLoader实例train_iter, test_iter, data_iter
* 注释
* 中文
* 句末不加句号
* 书本页宽限制
* 每行不超过78字符
* In [X]: 79字符不会自动换行X = 1, ..., 9
* In [XX]: 78字符不会自动换行XX = 10, 11, ..., 99
* 打印结果自动换行
* imports
* import alphabetically
* from mxnet.gluon import data as gdata, loss as gloss, nn, utils as gutils
* 打印名称
* epoch从1开始计数, lr, loss, train acc, time
* 5行左右
* 打印变量
* 代码块最后一行尽量不用print()语句,例如`x, y`而不是`print('x:', x, 'y:', y)`
* 字符串
* 使用单引号
* 其他
* nd.f(x) → x.nd
* random_normal → random.normal
* multiple imports
* .1 → 1.0
* 1. → 1.0
* remove namescope
## 超链接
* 内链格式
* [“线性回归”](linear-reg.md)一节
* 外链
* [](http:bla)
* 无须暴露URL
## 英翻汉的常见问题
* 遇到不确定的地方,可以翻阅中文版第一版的处理方法(即我们需要遵照的出版标准),以及查阅人工翻译 http://www.jukuu.com/
* 建立中英文术语对照表,全书术语翻译要完全一致。
* 语法要正确(如不能缺主语、谓语)、句子要通顺(硬翻不妥就意译)、不要漏内容。
* 代码注释要翻译。注意i) 每行不要超过78字符注释末尾不用加句号。 ii) # 后要空一个半角字符英文空格。iii) 如果注释与代码同行,# 前要空两个半角字符英文空格。iv保留注释中的``符号为了表示代码部分如变量名、函数名等。v注释中中文和英文之间不要空格。vi贪婪换行只有当一行注释抵到78字符时再换行。
* 不要新加空行(这样会另起一个自然段)。
* 术语要保留英文翻译。现在很多地方漏了英文翻译。格式:*术语*terminology
* 正文和代码注释均使用中文标点。例如,中文括号要用全角括号(),不是英文半角()。例外:所有表示形状的括号和逗号(逗号后紧跟半角英文空格)用英文半角,例如“(批量大小, 词数)”而不是“(批量大小,词数)”
* 英文在标题里或句首全部不要首字母大写(即便在标题的第一个词)。除非本身是首字母大写的术语
* 不要客气。“您”->“你”,去掉“请”