背景
作为一个职业程序员,本人也具备了程序员应该具备的特点:
- 需要不断的学习提升
- 十分厌恶重复性工作,一件事最多只干一遍
- 尽可能的偷懒(偷懒并不等于偷工减料)
- 喜欢把一件事做到极致(让后来者无法超越)
从学校出来2年学会了几件事:
- 很多工作是不可能一个人完成的,需要大家协作;
- 时间真的很宝贵,每一秒都应该在提升自己的价值(千万不要浪费时间在没用的东西上),不然过了30岁就完蛋了
LATEX是什么
前面提到了时间的宝贵,其实以LINUX为首的一大批工具:VIM、EMACS、BASH、LATEX、GIT等等就是为效率而生的。这些工具的特点个人总结如下:
- 需要一定的时间去学习,需要长时间的积累,但是随着使用越来越熟练效率也是越来越高(这里的熟练不是说鼠标越点越快)。没有人会希望自己水平停止不前,那样就很容易被后面的人超越
- 各种发行版,让新手不知所措,搭个基本的环境也面临很多选择
- 对程序员友好,其他人可能难以理解里面的很多概念,导致圈子比较窄
即便是程序员,很多时候也需要写写文档,搞技术的写文档最起码要整个标题,插图,公式,表格什么的吧,这些东西TXT肯定是搞不定了。一般文档也需要排版用来打印,这个时候就需要一个排版工具了,LATEX就是干这个事的。关于LATEX的介绍,大家可以GOOGLE一下,有很多入门的介绍。
LATEX如何体现效率
很多人都在比较LATEX和WORD的优点、缺点。其实个人觉得对于企业级应用,LATEX的如下能力让你非LATEX不选:
- 对于大型文档不可能把所有东西都放在一个文件里吧,就像鸡蛋不能放在同一个篮子里面
- 多人协作编写文档,不同的人编写自己熟悉的章节,可能还有人专门画图
- 一旦模板做好,文档所有组成元素的格式也就确定了,只需要将自己的文字用格式关键字包围起来,对于分工合作,如果某人不按照模板指定的规范来写,很容易就检查出来了,直接与问责机制关联
- 文本格式的存储方式导致文件损坏的可能性为0
- 文本格式可以较轻松的版本管理,没有版本管理,不管是写代码还是写文档都将是灾难。
设想一个工作流程:
- SVN/GIT版本仓库建立起来
- 提交LATEX模板,附上各类文档元素的写作规范(正文怎么写,插图怎么弄,表格怎么弄。。。)
- 提交主LATEX文件和分工写作的子LATEX文件
- 大家更新版本,按照规范写自己负责的部分,需要画图的地方,给美工提要求,边写边提交,可以方便领导监视大家的进度,同时也避免了工作丢失的情况
- 总负责人可以不定期更新版本,编译好PDF,观察内容对不对,格式对不对
- 大家都写好了,交换人检查文档的不同的部分,避免错别字等低级错误;对文档的内容进行审核,查漏补缺,有修改直接改了提交就完了,差不多了直接将PDF打印出来,工作就结束了
整个流程下来与写代码没有任何差别,一般的人根本不需要关心LATEX的细节,只需要把自己的文档用定好的关键词包装一遍。总负责人也根本不用担心大家的文档合并后是不是各种问题:图的标号不对了,章节编号不对了,图的引用又错了。。。这些底层细节都被封装好了,大家都只需要关注需要关注的部分:自己的文档是不是没写清楚,语句是否通顺,是不是有错别字。另外一个好处就是完全不用担心修改不见了,因为版本上都看得到。一个团队只需要1个人懂LATEX就行了,团队成本非常低。
LATEX学习途径
对于程序员来讲,一般的LATEX学习和应用可以在几个小时内达到应用级水平。但要做到LATEX大师级人物,个人觉得需要学习的很多。学习步骤如下:
- 网上查阅LATEX的介绍
- 搭建LATEX编写环境
- 将以前写的长篇WORD文档用LATEX重新排版,不懂的可以网上搜索、查看宏包说明
其实一般人使用LATEX就是对宏包的应用(拿写代码来比喻的话就是调用别人写好的库),宏包一般会附带PDF格式的说明文档(相当于API手册)。