Posts Tagged ‘ LaTeX ’

LyX——为学术写作而生

使用LyX的次数越多,我就越能察觉到用Word写论文是一项多么事倍功半的差事。

学习曲线的问题

我们在自学一个新工具时,总是不由自主地去衡量学习的成本与收益。所谓收益,自然是掌握这个工具后所能带来的好处,譬如做事效率的提升或者技能树上独一无二的新分支等等;而成本往往就是投入的时间。有些工具,不可否认,掌握它需要投入不菲的时间成本,而大多数被我们放弃的工具,则是被高估了学习成本。LaTeX就是一个典型。

我相信每一个接触过学术写作的同学肯定都听说过LaTeX这个专为学术排版而设计的语言,对其感兴趣的应该也大有人在,可是最终花时间学它的大概只是少数。为什么呢?因为LaTeX的学习曲线太「陡」了。拿使用人数最多的Word与之相比,在LaTeX中要想得到一份最简单的文档,也得先把文档类(class)指定好,需要调用的宏包(package)设定妥,然后\begin{document}才能开始正文,遇到次级标题了还得插入\section,文档结束了也不能忘记\end{document},颇为繁琐;而Word呢,开箱即用,上手就写,毫无障碍。

如此看来,那应该Word更佳啊,为何主流学术界那么不待见Word呢?因为Word的设计初衷就不是用来写学术文档的,它有些过于「自由」了。在Word的常规操作中,标题、段落、插图、间距等一切的排版规格都能轻易改变,而且往往还是在用户不明所以的情况下。有过撰写学位论文经验的同学应该都深有体会,在Word中调整格式简直牵一发而动全身,你按照学校的论文规范,把某一部分给改好了,结果另一部分乱了;好,现在你把乱了的部分纠正过来,其他地方又不对了;就这么改来改去,投入的时间都快赶上写正文的时间了,最后终于改完,送到学院形审,不幸发现了一点小纰漏,没办法,又是一通调整……最后,在deadline之前终于搞定,一切格式上的要求都满足了——可你已经被排版虐得死去活来,完全不清楚是如何摆平的。

以上这些问题,LaTeX几乎不存在,因为你在书写LaTeX文档时,无需关心格式问题。只要调用的文档类和宏包正确无误,那么最终的排版完全由程序接管,可以确保无误,你无法干预也无需干预。这种严格符合文档规范的特性使得它在学术界这个天生要求严谨的地方毫无争议地成为了事实上的标准文本格式。

可是,LaTeX真的不适合新手,对于那种近乎编程的文档书写方式,常年被Word惯坏的中国学生妥妥的接受不能。拿我自己来说,五年前,在我刚上研的时候,第一次听说LaTeX这种神奇的东西,就下决心要学会它,强迫自己用LaTeX写报告,结果一段时间后不得不放弃,当时我觉得是因为课程太紧而学习使用LaTeX又太花时间,现在看来,还是因为懒,因为我在那一年里貌似也悠哉悠哉地去了好些个地方游山玩水。这就是说,我并不是没时间学LaTeX,而是懒得学。

邂逅LyX

直到研二夏天,我参与编写一本专业教材,毫无悬念地,所用的编辑器是Word。结果这次编书算是把我给整郁闷了,我没有想到在与他人协作编辑一份学术文档时,Word是如此难用。你明明调好的格式,传给其他人后居然就全乱了,你插入的参考文献,格式、链接均工整无误,结果在另一台电脑打开,居然大相径庭……类似的种种莫名其妙的问题每天都会遇到,我们几乎每周的工作都要花大把的时间来处理格式和兼容方面的琐事,到最后也没有完全解决这类问题,只能勉强合并出一份排版糟糕的书稿。我对这本书的看法是,无论内容如何,任何人在图书馆若翻到这样一本格式混乱的书,大概都不会再看第二眼了。

这件事深深地触动了我,让我坚定了远离Word的决心,于是,我又重新捡起了LaTeX。这一次,我幸运地在CTeX论坛上看到了LyX这款神奇工具的介绍帖,仔细了解后,惊为天人——这货集中了LaTeX和Word的特长,既有「所见即所得」的使用界面,也有LaTeX内核的严谨排版基因——它几乎满足了我心目中完美写作工具的要求。

接下来,就一发而不可收拾了,LyX的设计者同时也一定是一位科研工作者,这款软件是开源的,已经有近二十年的发展史,在n多细节方面都是为学术写作量身定做的。仅举一例,LyX具有批量替换数学公式中字符的功能。什么意思呢?假设你正在写一篇paper,其中包含了上百个数学公式,独行公式和行内公式都有,快写完时,你发现其中有个变量A应该是B,文章中有大量公式都含有这个变量,这该如何是好……如果是Word,那就麻烦大了,你得一个个点开公式去改,没个把小时完成不了,太费劲了;如果是LaTeX的纯文本方式呢,也不行,因为除了公式环境,正文中的字母A也不少,替换的时候你还得一个个去确认,也够麻烦的;现在LyX来了,直接点开「高级查找替换」,勾选「Search only in math」,然后查找A替换为B,秒秒钟搞定。

类似的功能还有不少,我用LyX的次数越多,就越能体会到LyX设计者的良苦用心,有时候甚至会有一些感动,如此优秀的工具居然是免费和开源的。LyX让我对开源社区的好感和尊敬提升了一个等级。

上面唠叨了相当大篇幅的背景介绍,迟迟没有涉及到LyX的具体操作,其实这也是我的本意,我并未打算将这个系列文章写成「step by step」一样的说明书体,而是想将我所体会到的这些优秀工具的优秀之处讲出来,这其中当然避免不了会涉及到具体功能的实现,但那不是目的,因为你大可以去查help,那里面有更详细的解释。身为一个折腾过各式科研工具的「过来人」,我写这些软文一样的东西,目的——还真就是软文,我希望好工具能被更多的人用上。特别是这些优秀的自由软件,因为没有任何商业活动赞助,其受众非常有限,而我作为有幸接触到它们的一员,虽不能为完善工具本身做出什么贡献,至少可以尽己之力向别人推荐。我觉得既然我从这些分文不取的软件中得到了那么多的助益,就自然有义务为之推广。我小时候爱听单田芳的评书,里面常常提到一句话,叫做「无功不受禄。」

开始写吧

LyX是跨平台的,所以无论你是什么操作系统,都可以用。安装包可以从这个页面下载。

Windows下的首次安装可以选择Bundle版,也可以单独安装MiKTeX后再安装Installer版(其实LyX的Bundle版就是比Installer版多了一个MiKTeX,LyX需要调用LaTeX引擎编译,在Windows下,推荐用MiKTeX)。安装后往往MiKTeX会自动更新一些宏包,此时可以选择国内的镜像服务器(如中科大的)加快更新速度,完毕后在LyX的「工具」菜单中选择「重配置」,然后重启即可。

LyX安装后的设置可以参考我以前写的一篇文章:LyX中文配置 Tips

我总结的一些具体的使用技巧请参见这篇长期更新的经验贴:LyX Tips

如果你想生成漂亮工整的Beamer幻灯片,可以参考这篇配置:LyX Beamer配置 Tips

最简单的上手方式就是开写,英文文档直接写,中文文档按我上面给出的LyX中文配置进行设置即可。写完后点击LyX菜单栏下的那一双大眼睛图标(也可按快捷键Ctrl+R)编译一份预览PDF,你会发现这样的一份PDF从排版到数学公式的效果都堪称完美,不知比Word那蹩脚的样式好到哪里去了。

学术论文

LyX的主要受众群体就是学术工作者,虽然它也可以完成其他写作任务,并且完成得很棒,但由于它在学术写作上的优势实在太突出了,我这里就不再涉及其他领域。

以我比较熟悉的理工科来说,我觉得在学术写作中最重要的几个要素分别是结构层次、交叉引用、数学公式、专业图表以及参考文献。

其中文档结构控制和交叉引用功能在传统的字处理系统如Word中已经做得不错,LyX提供的也是类似的功能,相较而言,LyX的标签管理系统我个人觉得使用起来更高效一些。

参考文献方面,Word和LyX采取的解决途径截然不同,效果却大同小异,Word通常需要安装一个插件,比如收费的Endnote或者免费的Zotero,然后事先在软件中添加好文献,之后再通过运行在Word中的插件将需要的参考文献题录信息插入到文档中;LyX则是基于BiBTeX,也需要事先收集好文献题录,然后才能在文档中插入题录信息。我个人更喜欢BiBTeX的方式,因为它是纯文本的形式,无论是什么操作系统,是否有BiBTeX引擎,只要有个文本编辑器,你就能查看和修改,这种灵活性是无可比拟的。

而数学公式和专业图表方面,LyX具有压倒性的优势。这种优势是由两方面促成的,首先是质量,无论是无缝贴合正文的公式渲染还是多种数学环境的支持,LyX都能提供近乎完美的效果,当然这是由基于LaTeX内核的前提保证的。

其次是便捷,在我比较熟悉的几类可以拿来书写学术文档的工具来说,Word看似便捷,实则不然,你匆匆写就的doc文档,通常只能得到糟糕的排版,而若想得到靠谱的排版,又不得不投入大量时间细调。第二种是另一个极端,直接写LaTeX代码,这种方式的确可以保证排版水准,却只适合编程高手;天天和代码打交道,轻车熟路,没有问题;可惜大部分人还做不到看着代码脑海中就能想象出二维的数学公式而毫无违和感,所以往往直接面对LaTeX代码的后果就是常常要面对编译的bug,过于底层的操作,用户就不可避免要承担更多的任务。LyX恰好位于这二者中间,规避了各自的不足,借鉴了各自的优势,在使用LyX时,你的直观感受仿佛是在用Word,然而基于LaTeX的特性又使得它严格遵循着一定的排版规则,比如不能有两个空格,不能出现多余的空行,等等。这一切使得你在写文章时完全不必考虑格式,只需关心内容就好,格式排版这类机械工作由LyX替你完成,真正做到了「所见即所想」(What you see is what you mean, WYSIWYM)。

LyX就是这么一款近乎完美的学术写作工具,甚至用它来撰写完整的学位论文也毫无问题(参见我之前总结的基于LyX的论文写作,唯一遗憾的就是用的人太少,导致模板数量不足)。可能我对文档排版工整的要求有点近乎偏执吧,多数人可以接受Word的糟糕排版,我则完全无法忍受。然而LyX的特性却深得我心,现在,我日常的科研笔记、学术报告都是用LyX完成,几乎没再为文档排版问题烦过心。

最后再补充一下论文投稿方面的注意事项,对于有些期刊规定的TeX文档类,譬如Elsevier的elsarticle.cls,你可以在LyX中选择相应模版直接编译,也可以从LyX中导出为TeX源码后,再稍做修改,复制到期刊的模板中去。我推荐采用后一种方式,因为并不是所有的期刊模板都有LyX的对应版本,而且导出为TeX源码后,投稿什么的也会方便很多。

基于LyX的论文写作

LyX(http://www.lyx.org/)是一个具有LaTeX内核的写作编辑器,有近二十年的发展历史,目前的功能已经相当完备。

它的特点是「所见即所得的界面+TeX质量的排版」。

作为一个学术写作编辑器,它对书籍(包括学位论文)的支持也完全没有问题。
以下就是华南理工大学的LyX学位论文模板设计方案:

作者的设计动机:
> 理由很简单,我在写博士学位论文时需要输入大量公式和也有很多文档排版工作。以前的公式都是latex格式,word确实可以通过插件输入公式但很难兼容,也受不了word非计算专业人士的排版方式。还是继续用latex公式比较方便,但不要想看见丑陋的latex代码,这也不能怪knuth的发明,毕竟是一个开创性工作,而今有Lyx通用工具,书写和排版要方便很多,它及调用latex模板又调用自身的lyx模板。有了它一切都很方便,排版困难基本解决,而且独立于操作系统平台。

该项目的主页参见:
https://code.google.com/p/scutthesis/

此外,其他高校的学位论文模板有:
中科大博士学位论文LyX模板:https://code.google.com/p/ustc-lyx/
中科院学位论文LyX模板:https://code.google.com/p/cas-lyx-template/
清华大学学位论文LyX模板:https://code.google.com/p/thuthesislyx/

谢益辉在LyX也做了许多工作(http://yihui.name/cn/tags/#LyX

目前LyX的相关文档已经相当详实,上手很快,这里是两个官方说明文档:
https://drive.google.com/file/d/0B-MqLQIGK-lgaHlkOFBYZ3dDb2c/edit?usp=sharing

https://drive.google.com/file/d/0B-MqLQIGK-lgcElxTmZzR0lpOXc/edit?usp=sharing

作为日常写作编辑器,LyX几乎可以替代Word;
即使在中文环境下,LyX也可以生成满足学术规范的高质量PDF。

LyX Beamer配置 Tips

标*号为必配置项目,其余为建议配置的项目;LyX版本为2.0.6。

「文档」首选项

  • *文档类选择「presentation(beamer)」;自定义填上「professionalfont」,这样公式字体不会改变
  • *语言选「简体中文」;编码选「unicode (XeTeX)(utf8)」;语言包选「无」

  • 「模块」选取「未编号定理」

  • *PDF属性选中「Use Hyperref…」;「生成链接」选上「超链接无边框」

  • *输出,默认格式选为「PDF(XeTeX)」

LaTeX导言区:

  • 必填内容:
\usepackage[BoldFont,SlantFont]{xeCJK} % 允许斜体和粗体
\setCJKmainfont[BoldFont={SimHei},ItalicFont={KaiTi}]{SimSun}
\setCJKsansfont{SimHei} % 设置中文无衬线字体
\setCJKmonofont{FangSong} % 设置等宽字体
\usefonttheme[stillsansseriflarge,stillsansserifsmall]{serif}
\usetheme{CambridgeUS}

  • 全部内容:
% 设定英文字体
%\usepackage{fontspec}
%\setmainfont{Times New Roman} % 英文衬线字体
%\setsansfont{Arial} % 英文无衬线字体
%\setmonofont{Microsoft YaHei} % 英文等宽字体

% 设定中文字体
%\usepackage{xeCJK} % 使用xeCJK中文包
\usepackage[BoldFont,SlantFont]{xeCJK} % 允许斜体和粗体
%\usepackage[BoldFont,SlantFont,CJKchecksingle,CJKnumber]{xeCJK}

%\setCJKmainfont{SimSun} % 设置缺省中文字体
\setCJKmainfont[BoldFont={SimHei},ItalicFont={KaiTi}]{SimSun}
\setCJKsansfont{SimHei} % 设置中文无衬线字体
\setCJKmonofont{FangSong} % 设置等宽字体

%\setCJKmainfont[BoldFont={Adobe Heiti Std},ItalicFont={Adobe Kaiti Std}]{Adobe Song Std}
%\setCJKsansfont{Adobe Heiti Std} % 设置中文无衬线字体
%\setCJKmonofont{Adobe Fangsong Std} % 设置等宽字体

%设置使用衬线字体做正文(默认全是无衬线,按这个设置,仅标题是无衬线)
\usefonttheme[stillsansseriflarge,stillsansserifsmall]{serif}

%\punctstyle{hangmobanjiao}
%\defaultfontfeatures{Mapping=tex-text}
%\usepackage{xltxtra}
%\XeTeXlinebreaklocale "zh"
%\XeTeXlinebreakskip = 0pt plus 1pt minus 0.1pt

% 设置主题
\usetheme{CambridgeUS}
%这里还可以选择别的主题:
%Bergen, Boadilla, Madrid, AnnArbor(有页码), CambridgeUS(有页码), Pittsburgh, Rochester, Warsaw,
%有导航栏的 Antibes, JuanLesPins, Montpellier,
%有内容的 Berkeley, PaloAlto, Goettingen, Marburg, Hannover,
%有最小导航栏的 Berlin, Ilmenau, Dresden, Darmstadt, Frankfurt, Singapore, Szeged,
%有章和节表单的 Copenhagen, Luebeck, Malmoe, Warsaw,

%\usecolortheme{beaver}
%设置内部颜色主题(这些主题一般改变block里的颜色);这个主题一般选择动物来命名
%这里还可以选择别的颜色主题,如默认的和有特别目的的颜色主题default,structure,sidebartab,全颜色主题albatross,beetle,crane,dove,fly,seagull,wolverine,beaver

%设置外部颜色主题(这些主题一般改变title里的颜色);这个主题一般选择植物来命名
%这里还可以选择别的颜色主题,如默认的和有特别目的的颜色主题lily,orchid,rose

%设置字体主题;这个主题一般选择海洋动物来命名
%这里还可以选择别的颜色主题,如默认的和有特别目的的颜色主题whale,seahorse,dolphin,beaver

%\usefonttheme{professionalfonts}
%类似的还可以定义structurebold,structuresmallcapsserif,professionalfonts

% 控制 beamer 的风格,可以根据自己的爱好修改
%\usepackage{beamerthemesplit} %使用 split 风格
%\usepackage{beamerthemeshadow} %使用 shadow 风格
%\usepackage[width=2cm,dark,tab]{beamerthemesidebar}

%\setbeamercovered{transparent}
% or whatever (possibly just delete it)

% 修改「Proof」为中文「证明」
\renewcommand*{\proofname}{证明}

P.S.
使用pdfXeTeX编译时,如果有交叉引用,需要编译两次才能生成正确的PDF。

LyX中文配置 Tips

标*号为必配置项目,其余为建议配置的项目;没有提及的均可保持原始设置。

「文档」首选项

(全部设置完毕后点击「保存为文档缺省设定」)

  • *「文档类」选「CTeX」;自定义填上「UTF8」。
  • *「模块」选项中添加「Theorems (AMS, Numbered by Type)」包,便于在论文中添加定理、证明等符合学界要求的论证格式环境。

  • *「语言」选项中选取「简体中文」;编码选「Unicode (XeTeX)(utf8)」;语言包选「无」。

  • 「PDF属性」选项,勾选「Use Hyperref…」;书签选中「生成书签」、「书签编号」、「打开标签」。

  • *「数学选项」中勾选「amsmath」以及「amssymb」,则多行公式会自动调用align环境(LyX帮助文档推荐的格式),以及支持boldsymbol环境;其余勾选「自动加载」。

  • 「浮动项放置方式」选项,建议选取「此处优先」。

  • *「输出」选项,默认输出格式选为「PDF(XeTeX)」。

  • 「LaTeX导言区」:

% 重定义nobreakspace命令,避免XeTeX出错
DeclareRobustCommandnobreakspace{leavevmodenobreak }

% 解决pdflatex不支持插入eps图片问题
%usepackage{epstopdf}

% 修改「Proof」为中文「证明」
%renewcommand*{proofname}{证明}

「工具」首选项

  • 「外观」-「Document Handling」,「Backup & saving」,选取「备份文档」。

  • 「外观」-「屏幕字体」,「缩放比例」调为150%。

  • 「外观」-「显示」,选中「显示图形」;即时预览「开」,则数学公式可以即时显示为TeX渲染后的样子;选中「Mark end…」以显示段落结束标记符。

  • 「编辑」-「快捷键」,将Ctrl+DCtrl+TAlt+UpAlt+Down替换掉或去除(以免误按)。

  • 「编辑」-「键盘/鼠标」,取消启用滚轮缩放(以免误按)。

  • 「编辑」-「自动补全」,「公式内嵌」选中「自动完成」和「自动显示」,则在公式环境中按反斜杠键\输入LaTeX代码后可以快捷弹出对应符号;减小自动完成延时和气球延时(如分别设为0.1和0.2);选中「即时显示自动完成气球」,则当文本右侧出现「>」小三角标识时,可以按Tab键弹出自动完成气球。

  • 「编辑」-「路径」设定非系统盘工作目录和备份目录;临时目录最好不要修改。

P.S.
升级LyX仅需下载最新的LyX安装包(Installer,非Bundle;当首次安装LyX时才使用Bundle版),然后直接安装即可,期间注意选择正确的latex.exe路径(例如 C:\Program Files (x86)\MiKTeX 2.9\miktex\bin,此地址也可在「工具」首选项-「编辑」-「路径」-「路径前缀」中修改);MiKTeX在安装时可能会提示更新某些LyX用到的包,建议更新。
LyX在实际使用中的若干技巧可参考我总结的另一篇博文(长期更新):http://andnot.farbox.com/post/ke-yan-bi-ji/lyx-tips