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