舒适写作大法

省流概览

Microsoft Word Microsoft PowerPoint Markdown LaTeX Typst

一篇可能会有些长的真正博客文章,介绍一下天天写报告的我在与学校报告的斗法中有些怎样的小方法、小工具和小技巧。上面的几个工具是所用到的软件或语言,如果你全部熟的不能再熟了,其实还是可以批判性地看看下面的文章的。

写作和排版,以及一些关于字体的小知识
MS Word的一些小Tricks,Word从入门到放弃
用PPT画画?是的!
Markdown写作体验以及样式上的小Tricks
怎么从Markdown到LaTeX(文章没写好,但是工具md2tex以及模板SYSU-Report-LaTeX已经写好了)
非常新颖小众的Typst(文章没写好,但是模板SYSU-Report-Typst已经写好了)

写作和排版

在介绍下面的内容前,我觉得有必要介绍一下写作和排版的区别。

正如你初高中时期在纸上写作文一样,你写的东西就叫做写作。那考试的格子框住了你每个字所在的位置,你的任务就是把脑袋里的每一个字规规矩矩的放进去就好。转移到电脑上,最为纯粹而简单的写作就是在txt文件上一个一个的打字,用Windows自带的记事本那种。

然而目前,详细如果你能够看到这篇文章,八成你是不会使用记事本进行文本的编辑的,原因很简单,不经过修改的记事本没有任何排版,看一个两个字还能够接受,但是万一文章变长,看这样的东西就会变得十分难受。

那么,为了能让写作的过程中进行排版,也就是让写作变得五颜六色一点,中学微机课肯定就会学会使用Word进行边写作边排版。这样的目的,自然是要输出一个好看好读的效果,除了Word,LaTeX也能够做到写作和排版,不过当然是不直观的啦。

字体

Windows的默认字体是微软雅黑,这个字体的舒适性其实还可以,但是还是属于比较难看的那一种。Word的初始字体就更不用说了,在里头细细的等线绝对是难看字体里数一数二的。

等线实际上是属于黑体家族的,也就是一种非衬线体(Sans Serif)。所谓非衬线体,就是在每个笔画的边缘没有任何修饰,竖就是长长窄窄的矩形,横就是宽宽扁扁的矩形。而以宋体为代表的衬线体(Serif),就是具有一定艺术感的字体。宋体的基本所有笔画,都会在笔画的末尾和开头加上一点点的小突起,也就是书法写作的笔锋。笔锋的存在,使得宋体在如今被广泛视为更为正式的字体。翻阅所有的正式文件,在中国,几乎全部是仿宋GB_2312的天下。而在一般的期刊会议中,其发表的论文也清一色全部是使用宋体进行排版的,一看就非常的正式。

而在一般电脑上显示中,黑体显然是更为普遍的,Window默认的微软雅黑就是一种黑体的变体,还有你正在看的这个网站使用的是MiSans,也是一种非衬线的字体。归根究底,黑体在电脑上的显示更为舒适,而且在目前屏幕分辨率参差不齐的情况下,黑体就是显示的最好选择。尤其是在Windows系统中,当分辨率降低到一定程度时,宋体的衬线效果会完全消失,显示的非常难看。且黑体实际上在视觉的观瞻中更加流畅,其体验要稍微比宋体更加舒适一些。因此,对于一般的学术报告和论文而言,我个人习惯黑体写作、宋体排版的方式,在写作时候尽量将长时间面对的文字变为更加舒适的黑体。

黑体写作,宋体排版

在中文中,宋体和黑体就是最为标准的衬线体和非衬线体,而在英文中,他们对应的标准一般是Times New RomanArial。在进行字体搭配的时候,除了特殊要求一般不会进行一个段落中的衬线字体和非衬线字体混搭。在Word中有专门的中英文字体选择,两者最好都要选择一个系列的,也就是不要在衬线体的中文中加入非衬线体的英文和数字。

除了常用的Roman和Arial以及他们对应的宋体和黑体外,还有一些比较常用的字体组合可以使用。下面将其列出来。

英文非衬线 英文衬线 中文非衬线 中文衬线
Arial Times New Roman 黑体 宋体
Source Sans Source Serif 思源黑体 思源宋体
Noto Sans Noto Serif Noto Sans SC Noto Serif SC
方正黑体 方正书宋
汉仪中黑 汉仪书宋
Latin Modern Sans Latin Modern Roman

万事从Word起步

Microsoft Word

你可以不会用LaTeX,不会用Markdown,不会用任何其他的排版软件,但是你要会使用Word

用Microsoft Word写作是大部分人的第一选择,对于大多数场景而言,它都是万能的。但是在Word的使用过程中,排版总是十分狼狈的,具体而言就是,标题要一次次改,段落要加空格,默认字体过于难看等等等等等,这也是最终放弃Word的原因之一。

不过使用一些小小的技巧,也可以使得Word的排版和字体非常舒适。下面跟着一个个的简单步骤就可以实现还不错的,有那么一点点像Latex的样式。当然啦,肯定只是一个很粗糙的模板,但是简单学一下里面的小工具就都会用了。

<a name="Word_write"><img src="/asset/舒适写作大法/word写作.png" />``</a>

不过说这个模板想LaTeX也就图一乐,真像LaTeX还得看Tom Wildenhain大佬的作品WordTeX,我还没用过,以后慢慢看看。

设置字体

还是上述所说的,传统的等线有点过于难看了,且基本上不符合任何的文档规范,相比之下,宋体黑体这样的成熟字体搭配就会好很多。这种搭配当然不是在正文中的搭配,而是标题使用黑体,正文使用宋体。

字体的设置十分简单,在Word的选项卡中,选择<设计>页面,再点击“字体”选择喜欢的字体样式即可。

在上面我选的这个字体中,实际上确定了四种字体。分别是:

  • 中文标题:黑体
  • 英文标题:Arial
  • 中文正文:宋体
  • 英文正文:Times New Roman

也就是说,中英文的标题均采用非衬线体,而中英文的正文都采用衬线体。在LaTeX的默认格式也是如此的,但是其所采用的中英文字体有些不同,其采用的字体家族为Computer Morden系列。

字体设置完之后,再到“开始”界面中随便输入几个字,就可以看到”宋体 (中文正文)“这样的标识了。

设置样式

用好样式,Word的麻烦少一半

字体的设置多半时候也只是方便观看,然而样式的设置却是一个好的Word排版所仰赖的关键。样式的设置非常显眼,就在最最开始的<开始>菜单栏中,占据了不少的位置。

一个良好的习惯是,Word文档中的全部文字的样式都要在这个样式表中。以上图简单的Word模板为例,它里面的所有文字都是在这个样式表中的。也就是说,在使用Word写标题时,尽量不要自己去调格式,也就是先写一个正文,然后把他加粗然后加大这样来生成一个标题,这是一个错误的做法。更为合适的做法是直接点击上面样式表中的标题一二三,一点就搞定,且不会破坏正文的样式内容。

那么如何设置这个样式呢,右键点它选择修改就好了,下面是我所使用的一个样式表,仅供参考。每个样式其实不只这么点设置,但是其余的几行都是默认设置,就不展示了。

  • 正文:
    • 字体: (中文) +中文正文 (宋体), (默认) +西文正文 (Times New Roman), 小四, 两端对齐
    • 行距: 多倍行距 1.25 字行, 段落间距
    • 段后: 1 行, 样式: 在样式库中显示
  • 标题 1:
    • 字体: (中文) +中文标题 (黑体), (默认) +西文标题 (Arial), 小二, 加粗, 字距调整二号, 居中
  • 标题 2:
    • 字体: (中文) +中文标题 (黑体), (默认) +西文标题 (Arial), 三号, 加粗
  • 标题 3:
    • 字体: (中文) +中文标题 (黑体), (默认) +西文标题 (Arial), 四号, 加粗
    • 段前: 13 磅, 与下段同页, 段中不分页, 3 级, 样式: 链接, 使用前隐藏, 在样式库中显示, 优先级: 10
  • 标题 4:
    • 字体: (中文) +中文标题 (黑体), (默认) +西文标题 (Arial), 加粗
    • 段前: 14 磅
    • 段后: 1 行, 与下段同页, 段中不分页, 4 级, 样式: 链接, 使用前隐藏, 在样式库中显示, 优先级: 10

一般而言,设置正文加上4个标题样式,就已经足够使用了。需要注意的是,这里的标题1标题2不是指第一个和第二个标题,而是一级标题和二级标题。在序号的排序上不是1和2的关系,而是1和1.1的关系。四级标题的序号为1.1.1.1,已经非常足够一般的使用了。

在设置了上述标题后,你还可以加入自动的序号系统,这个略显麻烦一些,而且我使用不多,可能更习惯手动给标题编序号。

设置好了上述的样式之后,你会发现,在<视图>页面点开导航窗格后,各级标题组成的目录就会自动的出现在左侧,转化为PDF输出后这也就会称为跳转的书签,非常方便。

列表怎么用

除了标题和正文外,列表一定是使用最多的环境。Word自带了完整(但不是特别好用)的列表系统。列表的环境就在<开始>主界面的段落选项卡中。分别代表了无序列表和有序列表,也就是没编号和有编号。使用的时候新开一行,然后按一下就可以了。简单的按几个回车就可以多行多行的列表出来。

对于上面这个列表而言,简单的按一个Tab键就可以换到下一级的列表等级。当你想结束列表的时候,多数人的选择是一直按退格Backspace来将光标左移到想要的位置。但是可能更为好的方式是简单按一下回车Enter就可以切换到上一个列表等级,或者直接退出列表环境。个人感觉这个键位有点神经。。。

为什么还是在大型排版中我还是不用Word

Word很好,上述一点点的小tricks就可以极大的提升你的Word的使用体验,但是为什么还是有那么多人吐槽Word难用。归根结底我认为有两个原因,一个是格式上的各种bug降低了其使用体验,二是其过于丰富且无统一标准的排版设置使其个性化程度过高了。

高个性化程度 + 不明不白的工作原理 + 小小bug = 不好用

一个典型的例子是Word中的缩进。在一般中文正文的写作中,段落的第一个字被要求给两个字的空格再写,这就是缩进。Word给了比较方便的缩进设置方式,也就是可以直接在样式表中的正文去设置。但是最为难受的,列表的缩进。列表的缩进众口难调,有些习惯数字标号在左,后面所有文字只能在数字标号的右边书写;有些习惯长篇幅的列表嵌套,或者把列表当成主要的环境去使用。每个人的习惯不一致导致了太多的问题。在缩进中,有时候简简单单想取消或增加一段话的缩进,却把整篇文章的缩进给变掉了,奇怪的联动机制难以忍受。

此外还有行高啊页眉页脚啊此类常用但是经常不好用的设置,用Word没遇到过bug我是不相信的。

总而言之,Word作为最为面向大众的文字编辑软件,其可定制化程度是在是过于高了,加之绝大部分人(也包括我)至今仍然没有学会其各个功能的控制方法和联动机制,加之偶尔出现的bug,让Word的实用程度直线降低。

但不可争辩的,在小型文字处理的过程中,Word仍然是那个当之无愧的王,你可以不会用LaTeX,不会用Markdown,不会用任何其他的排版软件,但是你要会使用Word。

PPT怎么不算绘图软件呢

Microsoft PowerPoint

在讲Markdown和LaTeX之前,有必要讲一下日常报告写作中的图片。

图片怎么放

上下环绕就够了

在Word中,图片的放置方式有很多种,最为常见的图片布局是下面这两种。

两种布局的区别是什么呢,在左边的这种情况下,如果拉一条横线,横线既会穿过文字区域,又会穿过图片区域,但是在右边的情况下,这样的一条横线不会存在既和又的情况,只会穿过单一的区域。

在Word普通使用中,两种排版方式往往是共存的。然而在LaTeX中,左边的排版方式实现将会较为困难,而右边的相对容易。事实上,在论文和一般报告的写作中,十分不推荐使用左边的图片排版方式。可以在arXiv上随便搜几篇文章,不难发现,都是清一色的使用右边的图片排版方式。

在Word中,上图右边这样的排版方式被称为上下型文字环绕,或者默认的嵌入型文字环绕后打个空格也能够实现类似的环绕方式。而在LaTeX中,常用的图片插入方式就是这种。

但是这样的图片插入存在一个明显的弊端,也即只适合插入一张又宽又扁的图片,而不适合插入又长又窄的图片。在这里我所给出的建议是,在又长又窄的图片插入之前,使用一些绘图软件将多个这样的图片其拼接起来。强行降低它的长宽比。

图片的格式

能用矢量图,就用矢量图!

对于插入的图片格式,可能多数人并不是特别的关心,反而更为关心的是图片的分辨率。常用的图片格式有3种,分别是JPG、PNG以及SVG。其中JPG和PNG是最为常用的图片,SVG的使用一般较少。

然而,JPG和PNG这类的图片一般被称为位图,也就是在图片的使用像素点来表示图片的信息。很显然,像素点越多,图片越清晰。然而SVG这类的图片,一般被称为矢量图,其中所存储的信息不是每个像素点的RGB值,而是一系列的控制点和控制方式。也就是说,矢量图中实际上只存储了一系列的点,而显示出来的结果都是实时渲染,将各个点通过直线或特定的曲线进行连接。对于由线条组成的矢量图而言,无论怎么放大,图片都是清晰的。因为他是实时渲染的,你的放大倍率也在它的渲染计算内。

也就是说,对于自己使用线条或文字绘制的图片而言,使用矢量图可以完全保证其清晰度,不用为了追求高清而使得成倍增加的位图存储空间。

而且使用矢量图还有一个明显优势,即将文档转化为PDF之后,其中的文字是可以被选中并复制成文字的的,而位图却只能整张图选中。

然而矢量图的格式也是一个重要的讨论话题。常用的矢量图格式有SVG、AI以及PDF。没错,PDF既可以是你平常查看图片的格式,又可以是图片的存储格式。各个软件对矢量图的支持程度不一,我们以SVG以及PDF格式为例。

  • Word的矢量图优选是SVG格式,对PDF格式的图片有支持,但是很差;
  • Markdown仅支持SVG格式,在没有额外插件或语法的情况下完全不支持PDF格式;
  • LaTeX对PDF格式完美支持,就像使用JPG和PNG格式一样,而对SVG格式的支持较差且麻烦。

除了上述的支持外,SVG格式相较PDF格式的图片存在一个缺点,即字体的支持。若SVG制作者在制作图片时使用了一个小众的字体,而你作为观看者的手机或电脑中没有这种字体,那么这个小众字体是完全显示不出来的。于此相对的,PDF格式则完全不存在这个问题。

如何绘图,为什么是PPT

首先需要声明,这里所说的绘图是大部分常用图表的绘图,包括深度学习的模型图呀以及各种各样的示例图。当然,如果你需要绘制大量不仅仅是由直线和规则曲线构成的图像,最佳的绘图软件还是Adobe Illustrator,它的绘图功能实在是太多了,而且能够专门处理矢量图。其更为常见的应用是应用于那种海报似的矢量图设计。

但是对于小型的矢量绘图需求而言,个人观点认为,AI的学习成本还是有一点的高了,至少我学了一段时间没有学会,身边常使用其作为主要绘图软件的同志也不多。

此外,Microsoft Visio也能够完美满足大部分的简单绘图需求,但是这个软件的操作逻辑有一点的不符合直觉,用起来就感觉,很怪。。。不是特别好用。而且需要提醒的是,对于大部分Windows PC所安装的长期使用的Office套件中,是不包含Visio的,这可能会带来一些额外的麻烦。

所以思来想去,还是回归到最简单的Microsoft PowerPoint啦,也就是PPT。应该所有电脑中都有这个软件吧。推荐使用它作为画图工具的原因有以下几个。

  • 非常熟悉的使用方式:进行演讲的时候是不是都要用PPT呀,那么这个软件一定用的滚瓜烂熟吧;
  • 非常友好的对齐方式:这里的对齐方式指的是插入的文本框啊,特定图形啊以及图片的对齐,都有一个辅助线,能大大降低进行对齐的时间;
  • 非常便捷的导出方式:把你所需要的图形框选中后,或者直接 Ctrl\Command + A全选,右键点击,在菜单中选择另存为图片,PNG和SVG这类常用的格式都可以快速导出,非常方便。
  • 非常多的预设图形:反正就是非常多。

但是PPT存在一个LaTeX使用不友好的缺点,就是无法直接选中图形导出为PDF。下面我们来解决这个问题。

PPT图形转为PDF

PPT中的图形在框选后是无法直接导出为PDF的,所以我们可以进行曲线救国。

  1. 把整个PPT导出或者另存为PDF;
  2. 使用Adobe Acrobat或者Foxit或者WPS这类的高级PDF编辑器,每页框选所需的内容,也就是把空白给删掉;
  3. 在PDF编辑器中进行PDF拆分,也就是每页每页的拆分,拆分完后重命名一下就可以啦。

还是比较简单的,就是这些PDF的高级功能都要钱。。。

Markdown写草稿!

Markdown

为什么是Markdown

因为简单

相较于其他学习时长花费不菲的标记语言而言,Markdown为什么简单?因为他没什么功能~~(不是)~~。

基本语法与方言

原生的Markdown支持的语法特别的少,也不用费劲去记,3分钟足以理解。

Markdown语法

上图即展示了最最最为基本的Markdown语法,是Markdown诞生之初即配备的相关语法。但是非常明显的是,这样子的语法是非常不够使用的。

为了丰富使用,现如今,有一些的Makrdown扩展语法已经得到的普遍的承认和应用,它们如下:

表格、围栏代码块、脚注、有序列表和无序列表、TODO列表、删除线、标题引用编号、公式、多行公式

也就是说,在大部分的Markdown编辑器中,你使用上述所提到的基本语法和扩展语法都能够轻松识别并使用。如果不能识别,那么听一句劝,别用这个编辑器了。

同属于标记语言,HTML比Markdown精准得多,在HTML中,所有的部件以及参数都可以使用 <div></div>这样的符号进行分割,也就是一层套一层,俄罗斯套娃了属于。

但是由于Markdown的设计初衷更符合人类的写作习惯和认知直觉,因此十分容易出现语法冲突。这主要是由它的一些专用符号冲突导致的,包括 $ ** * # [] () ~ \ 1. - 等特殊符号和标记。CommonMark使用了庞大的篇幅详细解决各个语法之间的冲突,规范了Markdown语言的写作。但是在部分Markdown编辑器中,对CommonMark的支持仍然不是特别到位。这个不好强求,得见仁见智了。

此外,还有一套目前使用较为广泛的Markdown扩展语法,也就是Github风格Markdown语法。这种语法更多用于网页显示,尤其是评论以及博客的写法。它不独立于CommonMark,只是加入了一些自己的特色。

一个好的写法

环境和环境不要混用,文本强调和文本强调不要混用

为了规范日常的Markdown写作,使得各个编辑器都能够识别,且易于转移,我用两种类别解构了Markdown的基本和扩展语法。也就是文本强调环境

类别 内容
文本强调 粗体斜体代码引用、行内公式、<u>下划线</u>删除线
环境 多级标题、有序列表、无序列表、TODO列表、表格、图片、引用、
特殊环境 公式块、代码块

我认为,一个良好的Markdown使用习惯是环境和环境不要混用,文本强调和文本强调不要混用。举例而言,在使用表格环境时候,不要再其中混杂图片,虽然部分编辑器支持这种语法,但是其本质上还是属于混杂的。此外的例子是,在使用粗体的时候,不要再使用斜体。虽然很多编辑器认可你的写法,但是难免在发部分的语言转换中无法实现上述的混杂语法。

上面还提到了特殊环境,他们就很直接了,再这种环境里你套啥环境都没用,因为在这两个环境内的编译规则是独立的。

一个好的编辑器

纯文本写作 -> VSCode,要实时预览 -> Typora

一个好的Markdown编辑器能够让写作过程非常舒服,下面推荐两个编辑器。

干啥都行VSCode

更古不变的Visual Studio Code,写Markdown属于一般编辑器的常规水平,支持丰富的扩展语法,然后一堆丰富的插件可以高度的自定义化,可玩性非常非常高。但是写Markdown纯纯是VSCode的副业了,它的优点就是工作空间无痛切换工作代码和Markdown。但是基本的VSCode在只使用最常用用的Markdown All In One插件的情况下存在一个问题,也就是不能够所见即所得,也就是打字的同时显示所打的内容。而且其对部分HTML语法的支持比较差。

可以看到,右边的字符有一些过大的,这是因为我前面使用了一个HTML的标签用以加大字符,加大完它收不回去,反正就是有点Bug。但是使用VSCode进行纯文本写作是非常舒服的,也就是只使用文本写作,不看右边的预览画面。VSCode提供了丰富的语法识别功能,也就是给对应的语法块给对应的颜色。

有点小贵Typora

相较于作为副业的VSCode,Typora写起Markdown来就是完全的主业了。它有一个最大最大的优点,也就是所见即所得,将排版内容与实时预览结合到了一起,创建出了一种类似MS Word的写作体验。或者你可以看它为披着Word外衣的Markdown。正如你正在看到的这篇博文,就是我在Typora上面写的。

反正就是非常好用,我找不到它太多的缺点。要说唯一的缺点,就是对语法的支持程度不够,在偏好设置 -> Markdown -> Markdown拓展语法中确实有一点拓展语法出现,但只能说不是特别够用。此外,Typora还支持优秀的导出机制,也就是借助Pandoc进行各种标记语言的格式转换,甚至还可以把Markdown导出到Word。这些功能我们会在后面详细讲一讲。

哦我忘了还有一个缺点,贵。。。

一个舒服的样式

简单的字体切换

Typora为例,它的默认样式是Github样式。简单而言,我认为Github的这种样式还是比较好看的,但是如果对字体有一点点的小要求的话,一点点简单的CSS编辑便可以实现简单的字体切换。

主题 -> 打开主题文件夹选项下,便可以看到当前使用的主题的CSS文件。一般而言,Github和Github Night主题是我见到较为常见使用的两个主题。但是Github Night主题存在一个小小的瑕疵,也即在黑夜模式下字号会有所缩小,尤其是其5级以及6级标题甚至会小于正文的文字大小。对我而言这是较难以接受的。

此外,对于中文而言,Windows的默认黑体也就是微软雅黑在视觉上的观感有一点的差,特别是字体较小的时候。为此,基于开源字体阿里巴巴普惠体3.0作为简体中文的字体,我制作了如下的两个Typora主题以供使用。其中普通版本仅仅是替换了默认字体,Night版本在替换字体的基础上简单替换了一些标题的大小。

可以点击common.csscommon-night.css进行Typora主题的下载,将其放入Typora的主题文件夹即可。若要正常使用,当然需要也下载阿里巴巴普惠体3.0

VLOOK主题

MadMaxChow/VLOOK是一套好用好玩的Typora主题,其主要面向的对象是将Markdown转化为网页形式的显示。其更为详细的说明可见VLOOK™ - Markdown 编辑器 Typora 的主题包和增强插件

若有导出为HTML的需求,VLOOK主题无疑是一个很棒的选择,通过其特定的语法以及插件,可以快速实现一个简单网页的搭建。

对于普通的Markdown使用而言,其提供了9套基础的主题,都还是非常漂亮的,其中的题注渲染功能非常好用。但是由于Typora的一些限制,大部分的交互式功能都无法直接在编辑器中使用,需要到处到HTML才行,但也不妨碍其挺漂亮。