Latex,想说爱你不容易
自从爱上Latex后,每天都要和他一起工作,写文章,做ppt,无所不能,方便极了。以至于一时冲动,将系统换成linux,好让Latex也能在自己家工作了。直到有一天......
由于过几天有一个conference要交introduction,要求用IEEE的双栏格式,嘿嘿,这个Latex最拿手了,只要下载一个class就可以轻松把文章format成需要的格式了。于是动手,没用十分钟,搞定了,窃喜再也不用像在word下一点一点修改格式,字体,段落,分栏...... 正高兴着呢,编译输出的一行小字引起了俺作为一个曾经的程序员的本能反应,仔细看了一下,这是IEEE的class文件输出的一个提示:
** Conference Paper **
Before submitting the final camera ready copy, remember to:
1. Manually equalize the lengths of two columns on the last page
of your paper;
2. Ensure that any PostScript and/or PDF output post-processing
uses only Type 1 fonts and that every step in the generation
process uses the US letter (8.5in X 11in) paper size.
提醒俺提交之前要检查页面设置,那就检查一下吧,一丝不苟嘛。这一检查不要紧,页面还真没设对,被设成A4的了,简单看了一下IEEE的帮助,发现人家本来默认就是letter啊,怎么不行呢?又仔细看了一遍帮助,原来事情还没那么简单:
由于Latex是由一系列工具集合在一起的一个工具包,所以每个都要正确配置才能保证最终的正确输出,好,配置。
按照说明修改默认纸张设置
- default paper size configuration -
pdfTeX and pdfLaTeX's default paper size is determined by the configuration
file
page_width 8.5in
page_height 11in
determine the default paper size.
但是事情并不完全和说明的一样,现在的Latex系统已经变了样了,linux下的发行版叫tetex,他的配置文件已经变成了pdftexconfig.tex,这个文件用来代替原来的
修改了配置文件之后要让他生效,如果是用texconfig修改的,保存之后texconfig会自动重新生成相关文件;若是手工修改的,后面说怎么办。
配置完毕,重新编译,居然还是不行,很是诡异;上网搜索,没有结果,给的都是这个方法,奇怪,难道大家都行,就俺不行?人品有问题么?
怒发冲冠,搞了一个通宵,把能找到的文档都看了一遍,大部分是垃圾,把Latex系统的目录树仔细的研究了一遍,各种文件,各种工具都了解了一下,能修改的配置都试了,还是不灵。Latex本身也经历了几次卸载重装,可是输出的pdf死活就是a4的。而且,发现了另一个诡异的问题,无法输出dvi文件,文档上明明写的有命令选项,可是程序一执行就跟没看见似的,搞的俺不甚郁闷。凌晨4点半,实在挺不住,郁闷的睡了。
今早起来突然灵机一动,是不是俺的源文件的问题呢?毕竟IEEE提供的一个测试文档都可以工作的很好,可以输出dvi文件。
开干,仔细检查了编译输出,突然一个提示引起了俺的注意
/usr/share/texmf-var/fonts/map/pdftex/updmap/pdftex.map
为什么用的是pdftex?俺用的命令是latex阿,要知道这可是很重要的,tetex系统中pdfetex是处理核心,负责tex文件的处理,其他的什么latex,pdflatex,pdftex都是所谓的前端软件,负责和用户接口,实际上,他们都是指向pdfetex的链接,那是不是说他们都一样呢?不是!虽然执行的程序是相同的,但是由于各自有相应的配置文件,所以运行的效果是不同的。latex的配置文件默认是不生成pdf文件而生成dvi文件的,可是俺的latex居然给出上面的提示,并且只能生成pdf而无视配置文件,的确奇怪。
再次检查源文件,发现了曾经让我困惑了一下但后来就忘了的一个选项
\usepackage[pdftex]{graphicx}
其中的pdftex现在显得格外刺眼,总算明白了,很可能是他在搞鬼,删之。带来一些列后果,原来文档中引用的pdf图片都不能识别了,没关系,全删,做个测试。这下好了,顺利的生成dvi。进一步修改了页面设置,也正确!这可令我喜出望外,终于明白了,原来是文档中的选项导致latex自动启用pdftex处理文档,从而忽略了latex的配置。修改文档回原来的样子,并且把所有的pdf图片转换为eps格式,latex->dvips->ps2pdf,终于一切尽在掌握了。
回头来看pdflatex和pdftex,试了几次修改配置,编译,都是不行,似乎他们忽略了pdftexconfig.tex,但是实际上问题并不在这里,关键的问题是每次texconfig时候要都要完全执行几个命令,就可以保证配置正确:
texconfig init 初始化字体映射
texconfig conf 初始化搜索路径
texconfig paper letter or a4 设置页面,如果只运行texconfig则可以进入交互界面进行其它配置。
这样就可以正确设置了。
那为什么一开始这样设置不工作呢,问题出在源文件上,源文件中的任何显示设置都会覆盖配置文件中的设置,比如源文件中的
\documentclass[conference, 10pt, letterpaper]{IEEEtran}
就会覆盖掉配置文件中的页面设置。这不是废话!因为配置文件中的是默认设置阿。
Anywey, 总算可以得到想要的pdf了。
总结一下,
Latex用户独立的系统配置:
texconfig init 初始化字体映射
texconfig conf 初始化搜索路径
texconfig paper letter or a4 设置页面,如果只运行texconfig则可以进入交互界面进行其它配置。
Latex多用户公用的系统配置:
texconfig-sys
配置的优先级别:
源文件,用户,全局,系统
Graphicx package的选项pdftex会导致强制执行pdftex生成pdf,不生成dvi
\usepackage[pdftex]{graphicx}
哦哈哈哈哈,终于可以开始修改文章了,faint!
0:40 | 添加评论 | 阅读评论 (2) | 发送消息 | 引用通告 (0) | 写入博客 | 学术研究
评论
Bing
试试,很爽的。
11月16日 3:55
(http://icelus1977.spaces.live.com/)
(没有名称)
呵呵,没用过latex,听起来蛮不错的阿。
11月13日 21:01
(http://kingtch.spaces.live.com/)
No comments:
Post a Comment