规范使用 Markdown 排版
2024-09-18 21:07:25
发布于:美国
关于使用 Markdown 和 LaTeX 对文章进行排版时的一些建议
ACGO 上线距今将近两年了,可以看到越来越多的用户开始在 ACGO 社区内发布优质题解和原创文章,社区的内容也愈来愈丰富。但讨论区和题解区仍有提升的空间,本文旨在对文章内容排版方式进行倡导,提升普通用户的阅读体验,希望大家可以尽量按照本文所规定的方式来对文章进行格式化。
前置知识:
- 熟悉并掌握 Markdown 文本格式的基本语法。
- 熟悉并了解 数学公式的基本语法。
- 了解并认识一些常见的数学表示的写法和读法。
如果对 Markdown 和 语法有任何问题,请参考文章 ACGO 社区资源汇总 中的「格式手册」部分。
本文参考:洛谷 - 如何用 Markdown 和 LaTeX 写一篇排版整齐的题解?。
第一部分:基本格式要求
1.1 必要注意事项
以下是对文档的基本要求,下列要求适用于任何格式的文本文档:
- 在每句话的末尾应当添加合适的标点符号;
- 在使用标点符号时,请务必区分全角符号和半角符号。若语句为汉语,应当使用全角标点符号,否则应当使用半角标点符号;
- 中文与西文字符或公式之间请以一个半角空格隔开,但标点符号与西文字符或公式间不要加空格;
- 无论在何时,禁止使用拼音缩写作为标识符。
以下是常见的错误示范:
- 因此,我们只需要输出两个数的乘积即可(违反 1.1.1)
- To be or not to be, that is a question。(违反 1.1.2)
- 这就是一个典型的错误Hack数据,当时,该代码会TLE。(违反 1.1.3)
- 这道题非常的简单,TJ 如下。(违反 1.1.4)
经过修正和格式化的示例如下:
- 因此,我们只需要输出两个数的乘积即可。
- To be or not to be, that is a question.
- 这就是一个典型的错误 Hack 数据,当 时,该代码会TLE。
- 这道题非常的简单,题解如下。
1.2 常导性建议
-
文章不应该出现大量的错别字。每位用户在撰写完文章后都有义务重读一遍文章保证文章的可读性。由于 AI 的兴起,使用 AI 人工智能助手来帮助用户审阅文章也是一个不错的选择。
-
对于题解/文章中的结论,请在必要时给出证明过程。
-
对于一些难的知识点,必要时可以给出一些外链来帮助读者阅读。
以下是一些错误的示范:
- 首先,我们可以申明一个变量来记录答案。(违反 1.1.2)
- 通过“瞪眼法”可得,答案应该为 。(违反 1.2.2)
正确的示范如下:
- 首先,我们可以声明一个变量来记录答案。
- 根据“XXXX”定理可得,答案应该是两个数的公约数,因为……
第二部分:关于 Markdown 格式的一些建议
2.1 使用 Markdown 排版的注意事项
通过 Markdown 语法,我们可以很轻松的控制标题大小和文章的排版,但在排版中,应当注意以下事项:
- 标题是引导文章结构的,不是用来强调的;因此请不要用标题把字弄的很大,达到强调的目的;
- 适当使用文本加粗,但请不要使用大量使用。过量的文本加粗反而会适得其反,让读者难以分辨文章的重点;
- 在对文字进行加粗时,请不要对标点符号进行加粗。若被加粗的句子是一个完整的句子,则忽略此条目。
以下是常见的错误示范(为更好展示 Markdown 语法,这里使用行内代码的方式来展现):
# 这是一道非常水的题!!!
(违反 2.1.1)**Lorem ipsum dolor sit amet, consectetur 此处省略两百字 officia deserunt mollit anim id est laborum.**
(违反 2.1.2)因此对于所有的 $N$,我们应当提前**判断 $N$ 的奇偶性。**
(违反 2.1.3)
经过修正和格式化的示例如下:
这是一道非常水的题!
Lorem ipsum dolor sit amet, consectetur 此处省略两百字 officia deserunt mollit anim id est laborum.
因此对于所有的 $N$,我们应当提前**判断 $N$ 的奇偶性**。
2.2 使用 Markdown 的一些好习惯
在使用有序列表或无需列表的时候,如果有需要,可以适当对添加列表标题并对标题名称进行加粗。如下格式:
Dijkstra 代码的算法过程如下:
1. ...
2. ...
3. ...
可以将其改成:
Dijkstra 代码的算法过程如下:
1. **第一步**:...
2. **第二步**:...
3. **第三步**:...
PS:请不要把冒号符号加粗,这会影响渲染。
第三部分:代码块与代码可读性的建议
在提供 AC 代码的时候,请务必使用 Markdown 中的代码块公式语法将代码包裹起来。
3.1 请标记代码语言
与此同时,在使用代码框时,请标上代码的语言,以正确地渲染代码。
未标记语言可能导致渲染错误:
#include <iostream>
using namespace std;
正确的渲染效果应当如下:
#include <iostream>
using namespace std;
3.2 代码变量和注释的规范
为保证代码的可读性,请不要使用拼音缩写或无意义的缩写作为变量的名称。如使用,请务必在旁边对变量的作用作出合适的注解。
以下是一个错误的示范:
int awa(int a, int b){
int c = 0;
// Implementation to be determined.
return c;
}
正确的示范:
// 该算法用于计算两个数的最小公倍数。
int LCM(int a, int b){
int ans = 0;
// Implementation to be determined.
return ans;
}
第四部分:关于 LaTeX 的使用建议
以下是本文的重点,也是高发病区。
4.1 什么东西应当被放在公式中?
并不是一切东西都该放在公式中的,滥用公式可能会导致排版混乱。公式也不应该喧宾夺主。
下面是一个错误的样例:
关于 ,它死了。我们应当使用 算法。
正确的写法如下两个参考:
- 关于 SPFA,它死了。我们应当使用 Dijkstra 算法。
- 关于 ,它死了。我们应当使用 算法。
所以什么东西不该放在公式中呢?
- 中文不应该出现在 公式中;
- 算法名、人名等非公式内容一般不出现在公式中。若要使用,请选择合适的字体,不要造成排版混乱即可。一般可以选用
\mathtt{Text}
作为首选。 - 行内的程序代码(包括程序函数名称,变量类型,完整语句等)应该用行内代码框表示,而不放在公式中。
4.2 正确使用字体
请务必使用 Roman 字体表示函数和运算。 已经预先内置了非常多常用的函数和运算,我们可以直接使用。
下面是一个错误的例子:
lcm(x,y)=\frac{x \times y}{gcd(x,y)}
正确的写法应该是这样的:
\operatorname{lcm}(x,y)=\frac{x \times y}{\gcd(x,y)}
简单而言:
- 对于 已经内置的函数,可以通过使用反斜杠(
\
)来将函数格式化。例如gcd
,请写成\gcd
。 - 对于 没有的函数,请将函数名称用
\operatorname{}
包裹。
4.3 公式不是写代码的地方
是一个表示严谨公式的地方。因此,请不要在非代码区域使用任何程序设计语言的表示方式。
下面是一些错误的示范:
a=x\%p
x++
a==b
a <= b
a<<1
5e7
正确的表示方法如下:
a=x \bmod p
x \gets x+1
a=b
a \leq b
a \times 2
5 \times 10^7
此外,对于数列或数组而言,请不要使用这样的方式来表示:
dp[i] = dp[i-1] + \max(dp[i-2], dp[i-3] + dp[i-4])
更严谨的表示方法如下:
dp_i = dp_{i-1} + \max(dp_{i-2}, dp_{i-3} + dp_{i-4})
dp(i) = dp(i-1) + \max(dp(i-2), dp(i-3) + dp(i-4))
4.4 其他排版建议
- 特殊符号:不要使用输入法的插入特殊符号功能来插入特殊符号, 提供了许多常见的特殊符号,包括但不限于希腊字母和数学特定的一些符号。
- 行内公式:对于像 等巨运算符,放在行内可能会略显紧凑(例如:)。在合适的情况下,请尽量不要在行内使用这些巨型运算符。
- 分数的使用:在某些情况下,使用
\frac
来表示分数显得太小(例如:),如条件允许,尽量使用\dfrac
来表示分数来维持文本的可读性(例如:)。
全部评论 13
2024-09-09 来自 上海
1好像是大佬,不确定,再瞅瞅
2024-07-02 来自 浙江
1好久没写文章了
2024-07-02 来自 上海
1好像是老师,不确定,再瞅瞅
2024-08-18 来自 广东
0
问一下,怎么输出彩色的字?
2024-09-21 来自 浙江
02024-09-21 来自 浙江
0\operatorname{lcm}(x,y)=\frac{x \times y}{\gcd(x,y)}
2024-09-18 来自 浙江
0乐2024-09-10 来自 浙江
0\mathtt{Text}
2024-08-19 来自 浙江
0\operatorname{lcm}(x,y)=\frac{x \times y}{\gcd(x,y)}
2024-08-19 来自 浙江
0\operatorname{lcm}(x,y)=\frac{x \times y}{\gcd(x,y)}
2024-08-09 来自 上海
0点赞
2024-07-03 来自 广东
0大佬厉害(不像我)
2024-07-03 来自 广东
0
顶
2024-07-03 来自 广东
0顶
2024-07-02 来自 浙江
0顶一下。
2024-07-02 来自 上海
0顶
2024-07-24 来自 广东
0顶
2024-07-24 来自 广东
0
有帮助,赞一个