三天前的想法,中间忘掉,今天上午又想起来的。
我每周一三五早上的第一节课是《密码学》。老师不给任何电子的note,他自己上课的时候就用marker在白版上写。他每次来除了拿一个塑料文件包装他的那一堆marker外,就是一个文件夹夹了一页一页未装订的notes。然后上课的板书都是拿了一页notes往白板上抄而已。其实我怀疑他完全可以把那些notes公开一份电子版本的给我们,反正和课堂笔记都一样。不过我觉得这样一来,加上要求的参考书,每天来听他的课就变得不那么必要了。所以他还是孜孜不倦的往白板上写笔记。
我从过去的经验表示,如果有一大堆这种笔记要用手拿笔抄在纸上,一节课下来手腕会很难受的。所以如果笔记中没有大量图形的话,我就直接往macbook上输入。与中文相比,我觉得可能是写的少的原因,我始终没法很自如的抄写英文笔记。如果像写中文那样写的话,一定会写走行的。所以手抄英文笔记的时候,我就会抬头看白板,记住几个单词(甚至是几个字母),写在纸上,然后再看白板。这样一来,抄英文笔记就变得相当慢速而且难受了。用计算机输入就完全不同了。英文没有中文拼音输入那种选词的困扰,所以可以做到完全的盲打。笔记多的时候最过瘾,两眼盯着白板,手指在键盘上动,比当地人手抄笔记还快很多。再加上emacs的强大的自动排版功能,因此我也不用管单词之间多打了一个空格或不小心按了一下回车或者什么时候该换行什么的,输入完一段之后按一下M-q就一切搞定了。
密码学属于数学范畴的学问,因此笔记中有很多数学符号和公式,所以我这门课的笔记格式都是ConTeXt格式的。经过长时间的使用,我已经基本上习惯了绝大多数的数学符号的输入。因为只是课堂笔记,所以公式也不用弄的那么整齐,所以一些略微“高级”的语法,比如两行公式用以等号对齐并在左边用大括号分组之类的功能就不需要了。最多就是一个列表,用一个\matrix{}
表示成不带括号的矩阵也就搞定了。中间遇到过几次有符号不会输入的问题,但从网上搜索一番也就OK了。总之,一切都是目标驱动的。这样的公式书写虽然比手写要略微慢上那么一点,但一来结果非常美观,二来这种公式出现的也不多,多数一些乘方、集合属于还有XOR那种一个圈里面一个加号的那种符号,输入起来都很方便,也耽误不了多少时间。而且这点时间完全可以被普通的字符输入的快速来弥补过来。当然,如果有插图的话我就不行了。如果老师开始在白板上画图,我立马掏出纸笔来在纸上画,然后在笔记里做上记号。我的另一门课,《计算机组成》就有很多这种图。所以那门课上我开始时用Emacs Muse来记笔记,后来还是换成纸笔了。之前想研究一下dot软件,用它来快速作图,但是没有时间,就没有继续下去。
当中只有一项有点困扰我,就是数学模式和普通模式的切换要输入美元符号挺麻烦。在《密码学》当中,有很多都和有限域有关,也就是说,进行一项计算后,要在结果后面加上(mod n)
,这样任何结果都会是0到n之间的整数,也就把我们的计数系统限制在了一个有限的数值区域当中。而这个mod n就相当讨厌。如果我把数学模式的结束放在n后面,mod作为一个连续字符,在数学模式中会和前面的东西以及后面的n斜体的连成一片,基本上没法看。后来我只好用折衷的方法,要么在mod之前结束数学模式,并在mod之后再开启一个新的数学模式;要么就把mod放在\text{}
中,表示这个是普通字符,不要当成数学符号来处理。这样一来,在输入mod的时候我就经常手忙脚乱,直到几次之后习惯了才好。
知道这周三,我在记笔记的时候心想,既然之前我试验过\gcd
和\log
都成功过,那么这个mod是不是也可以这样子输入呢?毕竟在数学领域和计算机领域,取余是经常要用到的操作。TeX作为一个对数学公式排版的别专业的计算机排版软件,是不是因该有这个符号呢?于是我当时就试了一下,编译后果然没有发生问题,看了生成的文档也十分正确。当时我就有种汗颜的感觉,我好像有点太蠢了一点,竟然连这么简单的东西,还需要几乎一整个学期的时间才能想到。
解决了这个问题之后,用TeX来记笔记就比较行云流水了,速度也快了许多。下面的是我今天课堂笔记的源文件在emacs中的截图: