Linux杂谈

2009年5月29日星期五

2%的市场占有率,这是写本文前不久听说的。

不管受到了来自Linux世界自身的多少反对,Ubuntu对这个百分比的贡献是难以磨灭的。之前让我放弃Linux的是openSUSE 10.2,而让我回来继续使用的是Ubuntu 8.10,为什么?

时至今日,Linux的用户群依然是Geek为主,作者Firefox和LaTeX的熟练用户,我不可能不是Geek,但我要说为什么回来继续使用Linux,我的答案是:更好用。在Geek的眼里,Windows是给傻瓜用的,所以才好用,才会有这样那样由于好用带来的负面效应,诸如安全性、速度等等;而Linux则往往被高手拿来炫耀。诚然Ubuntu把Linux的使用门槛降低了很多,但要装上一个Linux,调整到适合日常使用,没有强烈的探索精神和极高的耐心是不可能的,而更多的时候,有些人只是玩玩它并拿Compiz Fusion来鄙视Aero。

在这里要反思一下自己一直持有的一个观点:对没有任何电脑基础(像我的长辈们一样),那么学Linux和学Windows的难度是一样的。很遗憾自己电脑中毒甚久,无法自己回答这个问题,却又没有机会拿父母来做测试,更何况自己教Windows都未必教得好,Linux还是一知半解,根本无法对比教学成果。即使学Windows的难度跟学Linux一样,我开始用电脑就走上的是命令行并最终成为Linux高手,这也只是证明Windows的卫道士没有足够的证据死批Linux难学,却并不能证明这世界上不用Linux的人要转去用Linux有多容易——习惯的力量太可怕了。

微软不可能为双击安装软件申请专利,可这这的专利却注册到了数亿人的心中。Linux该怎么办?不是任何问题都有两个旗鼓相当的解决办法,在最优的解决之道已经被占据时,只有尽量向对手学习,有鉴于此,Linux世界有了软件源的概念,把开放和简便的优点集中到了一起。这仅仅是一个例子。

Linux的目标是什么?各人有各人的想法,因为Linux的载体(发行版)太多。而最让我不习惯的注解,就是“Linux要战胜并消灭Windows!”。类似的现象有很多,往往是一群使用新兴的免费软件的用户(7-zip,Linux,Firefox)叫嚣着要消灭它们的对手,而对方往往是垄断级别的商业软件(WinRAR,Windows,IE)。这像什么?太平天国?很想知道,报着这种心态的卫士们看到xx软件在终有一天战胜对手,自己成为孤家寡人的时候,会如何面对新的挑战者呢?所幸Linux社区没有输在自我膨胀,如果Linux是社会主义,那么现在的它是中华人民共和国,不是朝鲜民主主义共和国——重要的是放下姿态去向对手学习,失去了对手,博弈就变成了俄罗斯方块,只有以失败来结束。Windows在学Linux的安全理念,像Vista的UAC,诚然是给Windows的用户带来了不少不适,但是微软并没有迁就用户:想要调整UAC?先证明自己除了知道双击还知道控制面板。Linux也是一样,只不过是反方向:想要装软件?除了./configure make外,现在可以用图形界面的新立得、YAST……

自由是Linux的信条,它为Linux的今天奠定了基础,却也给它带来了相应的麻烦。首先是发行版之争,我曾经看见有人不遗余力地在任何关于Ubuntu的帖子中大声疾呼“一个没有自己技术,把别人东西拿来打包炫耀的版本,不要使用!要用就用Fedora……”云云。Linux有太多的外沿,以致Linux社区内部就已经起了纷争,太多人容易把一些细小的问题上升到“Linux精神”层面。有精神是好的(因为我至少没有听过什么Windows精神),但若只剩精神没有“物质”,那不奇怪它总是非主流(难怪没有什么Windows精神)。

那要不要有人扛旗呢(因为Ubuntu的支持者号称要一统Linux江湖来跟Windows斗争)?扛旗并不能解决什么:假设Ubuntu要变得Windows一样“易用”,它可以在短时间吸引大量的用户,累积起虚假的繁荣,但最终又不免要把Windows的毛病全面地复制到Linux,自由的精神又无法得到体现。这几年搜索Ubuntu的比搜索Linux的还多,这种涨势是Canonical喜闻乐见的,却是Linux世界的隐患。不过就像我前面说过的一样,Linux并不是也不该是为了战胜谁,故而Linux发行版之间的竞争也会更多地导向良性的一面,它刺激着Linux世界的发展和演变,我想未来的Linux世界不会出现统一,但至少会逐渐出现明朗的分类(沙盒型、大众型、服务器型等等)。因为一方面,自由的探索让Linux时时刻刻有机会为Geek用户带来最新的理念,促成沙盒版;另一方面在Linux的探索和发展中,必定会有不够成熟的例子要被淘汰,开源的理念会像自然界的一样,把最优秀的留下,给大众和服务器带来安全和稳定。

Ubuntu 9.04 Jaunty 字体微调的问题

2009年5月25日星期一

Tagged_by_kmc Linux, font, hinting, freetype, gdi++

1. 问题的出现——Linux Freetype hinting

用上了Ubuntu 9.04,第一感觉就是“字体边缘怎么有点彩色啊?”,原来我装的是8.04,当时觉得除了Firefox每夜版之外,字体是没有什么问题的。我用的是Myriad Web Pro。后来就有很久没有用过Linux,这期间装上了gdi++,体验了灰阶渲染的美丽。Ubuntu 9.04出来后,装上用了一小会,就觉得眼睛痛。

事实上在网上看到Linux的字体hinting使得字体边缘呈现出彩色是伤眼睛的元凶。大家可以试一下,在命令行输入xmag回车,鼠标附近会出现一个小框框闪烁着,可以点击它生成一个截图。从这个放大的截图上,你会看到字体笔划边上彩色的边际。

下面是我的测试环境:
没有手动修改.fonts.conf或相关文件。在外观-字体中的设置是:次像素平滑-次像素-轻微,顺序是rgb,事实上就是装好Ubuntu的默认设置

在文件管理器中截图,文本是/home/km,看放大效果截图,如果字体边上出现彩色的边缘,就是我说的“让眼睛累”的效果,但我发现Segoe UI在微调中等的时候没有彩色边缘。

2. 对比gdi++效果

下面是gdi++的效果(LCD显示器)。对比gdi++和Linux可以发现,彩色不是关键,关键是彩色的成份,如果用来微调附加的彩色比主笔划还多的话(像小写 m),就喧宾夺主了。


另外我也尝试了很多fontconfig文件,现在基本上已经弄明白font config的语法了,会给字体单独设置微调等等。不得不说的是,如果英文不打开hinting,只有少数几种设计得非常好的字体,如Segoe UI可以让人看得舒服,其余字体都是虚的;可是一旦打开微调,从hintnone到hintfull,几乎都会出现彩色过多,字体主笔划不够粗的尴尬。(这里只看hinting的设置,autohint始终是false,Antialias始终true)。而Linux的fontconfig有没有办法像gdi++那样用一个saturation=xx的参数来调整主笔划的粗细呢?——显然是没有。

中文方面也差不多,网上很多地方说要单独关闭中文的hinting,只用灰度,但如果这样做的话,字体很虚,打开hinting的问题是笔划可能重叠,但是这不比彩色边缘更影响阅读。

3.问题的暂时解决——纯灰度微调(gray-scale hinting)

找到了一个还可以的解决办法:字体用Lihei Pro + Segoe UI. 渲染方式选“最佳对比”(也就相当于平滑=灰度,微调=完全),这样英文和中文都没有彩色了。

HADOPI(针对非法下载的法律)及详细对策



(原文发表于战斗在法国论坛)
Tagged_by_kmc
hadopi, p2p, france, loi, law, emule, bit torrent, téléchargement, piracy


这里把对策和现有的一些疑问放在最前面,没有时间的就不需要往下看了。


危险类(请考虑停止使用)
电驴,Verycd,Emule,电骡:电驴是在欧洲最受打击的P2P软件,报纸报导的截图一般都是一个人在用电驴下载……即使你说你用了PeerGuard,你用了IP过滤,劝你还是不要冒险使用电驴,因为法律一实施,就不知道有多少卧底会上电驴的网络开始搜集IP。
BT,Bitcomet,utorrent:这个直接的联系是海盗湾的倒掉。请不要下载国外网站发布的种子,即使是国内网站发布,也最好靠自己分辨一下,有没有法国人会参与下载?有疑问的话,不要下载。

模棱两可类(弄清楚为什么先)
:迅雷是个多协议的软件,要区别对待。
1. 迅雷下HTTP:基本安全。最好不要下国外网站提供的(但国外也很少提供HTTP直接下载,多数是网盘,请见网盘的讨论)。其他HTTP下载可以参考这一条。
2. 迅雷下FTP:基本安全。现在用FTP的都是地下党,他们应该不会轻易交出下载者的IP。
3. 迅雷自己的HTTP2P(xx个候选源):安全,这个是法国法律之外的,而且估计几年后也不会有法国人用迅雷。
4. 迅雷下BT/电驴:请参考上面“危险类”,跟用不用迅雷下无关,关键是你下的什么。

:rapidshare, megaupload, skydrive, rayfile, 纳米盘……
1. 国内的网盘绝对安全
2. 国外的网盘基本安全,要看网盘提供商是否跟警方合作,我想不合作的概率更高,毕竟很多人是付费的,这点隐私还不保证?但是网盘接到举报就会删除文件,这一点又比不上P2P的坚挺。
(以下是说下载,上传方面,如果你不确定,请不要从法国的IP主动往网盘上传和分享

安全类(在目前来说不用担心的)
P2P网络电视(uusee, ppstream):这个目前肯定不会有问题,要找也是找软件开发商,让他们停止提供资源。就像奥运期间我们外国看不了一样。
在线视频(youtube, 土豆,优酷):绝对安全。最多是视频被删除,但是跟网盘一样,担心的话,不要自己上传侵权内容。

看到这里大家也看出点名堂了,如果光是下载,还是不用担心的的,重点是不要上传,这也是为什 么P2P会受打击的原因。

- “不要上传,哪里来的下载?你有没有共享精神啊?”
- “回国了再去发扬共享精神吧。”
如果还有时间,请往下看原来的内容

好久不来了,大家好吗?

战法搜索,几乎没有什么结果,不知道是大家不知道,还是都觉得又是虚张声势?这一次(2009年5月12日)在议会通过后,我感觉有必要讨论一下。

HADOPI = Haute Autorité pour la Diffusion des Œuvres et la Protection des Droits sur Internet ,暂且在网络上找到一个翻译是《著作散布与网路保护高级公署》,当然,不爽的人也写作 Haute Autorité de Défense des Opérateurs télécoms, des Producteurs et des Imbéciles。简单说,就是三振出局:相关部门查到你有非法下载,第一次信件通知,六个月内再犯,则再度警告,这次是挂号信,一年内再犯,则会受到禁用Internet两个月到一年的处罚,在处罚期内,用户列入网络公司黑名单,不可再申请任何网络,在受罚期间依然要缴纳预定上网的费用。如果用户进行正式的赔偿(amende honorable,不懂,赔给谁?),可以减轻处罚时间。

自从来了法国就一直在留学生论坛看到这样那样的传闻,但不像这次这样,媒体报导(晚些时候把今天的报纸扫描上来),法国人游行。虽然4月7号左派进行了一次抵抗,但最终法案还是通过了。下面一个可能的挽救机会是欧盟级别的,因为“有议员还提出,法案不符合欧洲议会的规定,后者于本月初通过一项修正案,旨在为民众的互联网接入权提供更加充分的保护,规定只有根据司法机关的决定才可以中断非法下载用户的互联网连接。”。

下面是这个HADOPI的具体执行,我想在这个技术板块,大部分人包括我都质疑这个法律的可执行性,但是不要忘了,这是一个法国人“研发”出来的法律,更主要是针对法国人的,因为法国人比较聪明,所以他们也更容易管。它是这样执行的:由des entreprise privées来监视网络,找到进行非法下载的IP(*讨论1),然后执行HADOPI的“高级公署”收集这些信息,并向网络提供商要求他们交出跟这些IP对应的用户和地址,下面就是三振出局。

*讨论1:也是大家一直都坚持的观点:你凭什么证明我在非法下载?通过监听网络和截获数据包。那么一些传统的P2P下载是有可能被监听的,比如BT和电驴,你可以说“我下载的是合法的软件啊!”,但执法者只要自己加入这个网络,参与到某个盗版电影的下载中,他就可以保存跟他连接的所有Peers的IP,证明他们在下载非法内容。也就是说,这些传统意义的下载,即使创建了迷惑协议(obfuscate protocol),依然相当危险。和原来论坛上广为流传的“上门搜查”从而证明你电脑上有非法资料,这种方法更靠谱——因为你可以说电脑上的资料不是在法国下载的。

对策:

法国的报纸很有趣(或许也从一个侧面反映了法国人对此也是毁誉参半):一版讲HADOPI通过了,旁边那一版讲对策。大禹时代就证明了堵是堵不住的,2009年他们还在老调重谈:
1. 私有的P2P网络。这些交换网络不像BT,电驴用的是公开社区,相反,要通过推荐和自荐来加入,这从一定程度上减少了keuf进去的可能,但是我们都看过《无间道》。不过说到这里,我想说的是:没有绝对安全的网络,不管是用代理还是用加密协议,只要你上网,总是有可能被追踪的。问题在于,谁在乎你干的那些事儿?警力是有限的,下个小破电影跟策划恐怖袭击比,没有那么大的吸引力让他们费尽心思去找你的IP。同理可证,HADOPI的执行者处罚了一些用传统P2P人,可不会少花力气(还顺便为私有企业创造了就业机会),那么好,政客们、FNACards们高兴了,谁还管其他的?
2. 新兴的P2P。报纸列举了(鸣谢)一些例子: Omemo, antP2P, Ipredator,和BT,电驴中可以直接看到IP不同,他们使用IP加密,谁也不知道是谁在下载。IP不暴露,安全系数又高一些。
3. 在线存储网站,如Rapidshare。但是最近有报导,德国警方从Rapidshare要到了上传盗版音乐用户的IP并上门搜查,所以,这些网络也不是绝对安 全,主要看相关地区/国家的法律。
4. 更传统的方式:加密FTP,新闻组和Usenet。这些方式因为太传统往往已经失去了吸引力,但也因为太传统而难以管理,没准在HADOPI mise en place后它们会强势回归。

说到底,作为我们外国留学生倒也没什么太担心,我写这个帖子也只是告诉大家有这么一回事。因为看一下处罚的时间:最快要一年半才封网,封网估计也是从两个月开始封。不能签别的公司?找个伴签。来来回回,到真的要封网了,估计大家都毕业回国了。

kmc字体推荐——几个未来风格的字体



Tagged_by_kmc
字体, fonts, futuristic, typography

说实在还不知道该怎么分类它们,但是从myfonts网站的用户标签来看,比较适合归类为Futuristic(未来), Headline(标题), Rounded(圆角)。

字体列表
Baseline Pro
Digitalis
Handbook Pro
Haus Square Pro
Isotext Pro
Korataki
Phantom
Phuture ODC
Phuture Round
Phuture Squared
Reaction
Rebirth

预览(点击放大)

下载链接
http://sharebee.com/9ef833fd
http://www.damipan.com/file/veCJey.html

PDF中字体信息的伪造与去除

2009年5月22日星期五

Tags:
pdf, not embed, font, 不嵌入, 字体, text to curve, pdf, embed font, rename, , 嵌入


1. 字体名伪造

有时出于保护PDF的目的,我们可能不希望别人通过查看PDF信息就知道所用的字体,这个简单。用UltraEdit直接打开生成的PDF文件,由于其中关于字体的信息是纯文本格式的,只要编译掉再保存,就可以伪造字体信息。

2. 字体信息去除(文字转曲线)

上述方式只是隐藏了字体的信息,更多的时候我们想防止PDF被复制。防复制自然有很多方法,例如加密,加密的优点是不会显著改变文件大小
,缺点是容易被破解,并且如果是证书加密,查看起来相当麻烦;也可以保存成图片,但是如果保存为位图,矢量化的文字就全部被栅格化了,影响精度。下面介绍一个文字转曲线的方法:

Acrobat 7 Professional简体中文版(升级至7.10,截图为英文版对应),打开一个正常的PDF文件。

  • 菜单“文档”-“添加水印和背景”
  • 来源--从文本--文本框中打一个空格即可(意思就是不可见的水印),下面的不透明度选99%。确定,保存一次PDF。https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFUdlicyOj98LBTyxxiiQ3ylacHGFISO6fBOQGylypUU36GGM4hJZz79lSTRvkU4pHNMrGlzgI_YeGJzBNOHz2Eci8oJ9n3F38o1ylDer5OmePjGBgRTnQSq6yep-wd4XWoAOctg/s800/curved_out1.png
  • 菜单“高级”-“PDF优化器”,在“字体”中把嵌入的字体全部删除以防万一,然后在“透明度”中勾选“拼合透明度”,再勾选“将所有文本转换为轮廓”。确定,另存一个。https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia3HKPSif1gRASOVB0MJdIGvV1z97DA9y2CoDryj0EY0xzodnoJLQaPf53HbU1MNHV_hNYe9jJdDWBlsu50ftmY1R9bpbeJBPCPWnd9FfKn_FyftLli6LcdCA4pAdftm_tO9ocGA/s800/curved_out.png

打开魔盒——Firefox每夜版(Firefox Nightly Builds)介绍

2009年5月18日星期一

打开魔盒——Firefox每夜版(Firefox Nightly Builds)介绍

Tagged_by_kmc
Firefox, hourly, nightly, download, update, 每夜版, 小时版, 每小时版, 更新


为了减少不必要的阅读,请先判断自己是否适 合/有必要用Firefox Nightly Builds(以下简称FNB)
这类用户的特点包括但不限于:
* 就是喜欢测试最新Firefox,把Firefox浏览器不光当浏览器用
* 不折腾会死或者不折腾就难受:有耐心和足够的心理承受力(相信我,征服Firefox的过程绝对是一个有普遍意义的软件学习和个人提高的过程)
* 既然要折腾,显然得了解如何保护自己:具有一定的电脑知识,例如知道Firefox配置文件夹在哪里,知道Firefox多配置是怎么回事,知道备份
* 知道碰到问题可以通过搜索和交流来解决,知道如何在虚拟世界中交流
* 懂一点英语,会用英语搜索(会用英语提问则更好)

如果你确定要使用,那么下面的文章请 -全 -部-看-完-

什么是FNB(Firefox nightly builds,火狐每夜版)?
Firefox是一个开源的浏览器,有着强大的开发团队和社区支持。Firefox还是一个变化和发展着的浏览器——新功能的引入、旧功能的改进/废除、 性能的提升……这一切都需要一个强大的团体,来测试、反馈并参与浏览器的成长历程,有鉴于此,出现了FNB(后来还出现了Hourly Builds,简称FHB):每一天(几乎是每一天),Mozilla的编译机器都会把当前最新的Firefox代码生成各个平台下的FNB,放置在 FTP上供下载测试。事实上FNB有各种形式的衍生,本文在此不进入具体的细节,仅仅关注下面目录中的文件:

代码:
http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/

根据我的经验,这个URL在很长一段时间会保持稳定不变,所以最新的FNB在这里可以提货。

以下以Windows用户为例,其他系统用户类似。

下载
在上面的目录中下载命名为firefox-%version%-en-US.win32.zip的文件,其中%version%是目前最新的开发版本号, 在本文(2009年5月18)写作时,%version%=3.6a1pre,其中
3.6等于目标版本号(根据经验,这个版本号也不一定是最终版本号,但是既然已经用FNB了,知道自己用的是最新的即可)
a1=alpha 1,第一个alpha版
pre估计指的是preliminary

安装
下载回来一个ZIP文件,不考虑术语的精确性,这个压缩包可称为一个绿色版的Firefox——免安装。你可以把它解压到合适的目录下,例如 d:\firefox (注意,压缩包内已经有一级子目录)。当然,不排除解压缩对你来说比较麻烦,那么也可以在上面的目录下载firefox-%version%-en- US.win32.installer.exe,双击安装。

配置后启动
下面是关键:Firefox配置文件。
OK,你准备要测试Firefox最新版,这意味着潜在的bug和崩溃已经不可避免。但显然,你不光是为了测试Firefox而已,因为你更希望这个蓝色 的地雷可以比较好地陪伴着你的浏览生活。要么你会希望FNB和你现在使用的稳定版(正式版)互不干扰,要么你会希望把主要的Firefox设置迁移到 FNB中,那么首先你应该知道如何操作Firefox配置文件。

配置文件(以下也简称profile)默认的位置(针对Windows XP操作系统):
代码:
C:\Documents and Settings\用户名\Application Data\Mozilla\Firefox\Profiles\%8HEX%.default

其中%8HEX%是8位随机生成的十六进制数。
Application Data是一个隐藏目录,你可以在资源管理器里面设置允许查看隐藏系统文件,就可以看见了。如果你已经在用Firefox正式版,那么这个文件夹肯定是存 在的,我们把它称为正式版配置文件

但是做为测试人员,我的建议是新建一个独立的FNB配置文件。假设FNB装在d:\firefox,那么使用命令提示符(cmd回车),输入下面两条命令
代码:
cd d:\firefox
firefox -p

打开Firefox的配置文件管理器(Profile manager)

然后参照图片中建立你的配置文件夹,让它跟FNB程序文件在同一个目录下:




然后在第一张图片中,选中FNB(如果你想直接碰碰运气使用旧的配 置文件,则选中default,危险!解释在下面),勾上Don't ask at startup,再start Minefield。这样你就可以启动FNB了,如果一切正常你将看到:
新启动的Firefox,但是标题上写的是Minefield,图标是蓝色地雷,这使得它跟Firefox正式版很容易区分。
纯净的Firefox,没有安装扩展,也没有改动设置。
英文版。

也就是说,这个版本没有影响到你原来安装的Firefox。你可以测试这个版本,一切的改动都在d:\firefox目录下,不会影响其他位置的 Firefox。

现在问题来了,你对这个版本很满意,可惜它是裸体的,没有扩展功能,你想迁移正式版配置文件过 来。上面我说了,你可以在Choose user profile的窗口选Default启动,那么FNB就会使用你c:\documents and settings下面那个旧配置文件启动,这样做是非常危险的。第一,FNB可能无法适应从而无法正常工作;第二,由于FNB会改写正式版配置文件内的数据,那么原来的Firefox,例如Firefox 2.0,Firefox 3.0.10将也无法正常工作!——双输的结果,太惨了。

两个建议:
1. 尽量不要用旧的配置文件,因为首先2.0能用的扩展可能已经比较老了,应该更新,其次,版本跳跃很大,有很多设置也会不兼容。如果你的扩展不是太多的话, 还是一个个手动装上最保险,就像重装Windows后,很多软件你也不得不重装一样。如果扩展实在太多,建议用FEBE打包,此不赘述。
2. 如果非要用,就把正式版配置文件下面相应目录中的文件复制到 d:\Firefox\fnb_profile目录中去,再启动Firefox。

如果你只是零星地用一用FNB,平时还是用正式版居多。那么建议建立一个批处理文件来启动FNB,方法是在d:\firefox下面建立一个批处理文件 start_fnb.bat,内容为
代码:
start "" firefox -profile "fnb_profile"

其中fnb_profile就是你前面建立的子目录。这样你不用担心FNB不小心启动了你正式版的配置文件。

备份
当你对配置文件逐渐熟悉了之后,你会明白他跟Firefox主程序是两个不同的概念,这样你会知道如何备份它——最简单的办法就是把配置文件夹(例如这里 的fnb_profile)目录打包压缩。另外由于你的配置文件夹在安装目录(主程序)下面,又有一个批处理来启动,那么把d:\firefox打包就得 到了一个绿色版的FNB。

升级/更新
既然是FNB,那么每天都会有一个新版本,你可以通过Help菜单Check for updates来下载更新。如果你每天都更新的话,下载量比较小,目前大约是2MB,超过一天的话,就要全部重新下载,10MB左右。如果你网速不够,可 以每天用多线程下载软件下载latest-trunk下的同一个文件,自己解包覆盖更新到d:\firefox


相关链接:
(分享)Firefox每小时版下载/更新脚本(附注释) - 阅读主题 :: Mozilla Firefox中文社区

实践——LaTeX按需排版

2009年5月12日星期二

Tagged_by_kmc:
latex, word, pdf,
排版, 尺寸控制, 微调, word模板, geometry, fancyhdr, logo, 标志, 会议, 测量, 精确控制, dimension.

这是我博士课程中的第一篇投稿,总觉得国外LaTeX的使用频率应该是很高了吧,没想到依然是个冷冰冰的Word模板放在那里,如下 (Word转成的PDF,里面有我所有的测量值):
http://www.megaupload.com/?d=UV4Y30SE

用了这么久的LaTeX,我可不想第一次就倍受打击地重新拣起Word(因为一想到没有断字的Word排版效果,包括参差不齐的单词间距,我就毛骨悚然,真的!)正好,也想找机会试试看LaTeX到底有多少自由度,能不能按照别人的格式要求精确地调整出预期的结果。最终,我的投稿已经被采纳,没有编辑对版式提出意见,于是打算分享这些经验,因为没有学过写Class,写成模板也没有谁能用得上,不如讲讲用了哪些dirty tricks,仅仅是为了应急。希望能给碰到类似尴尬局面的TeXer们一点参考,也希望高手笑过之后指点一下,哪些方面有更好的方法。如果以后有时间,可能会用LaTeX写成PDF教程并放上图片,看看光用文字描述是不是能让大家看懂吧。

阅读本文需要的知识:LaTeX基础知识(能看懂lshort),页面尺寸方面的知识(边距,缩进,行距,页眉页脚等),了解常用宏包(titlesec, fancyhdr等),一点点字体载入方面的知识。

由于模板是法语写的,所以大致介绍一下模板的要求:

  • A4,左右页边距为2cm,上边距2.5cm,下边距2cm
  • 页眉页脚高为1.25cm,除了首页,由于要插入会议名称和Logo,首页页眉为2.5cm
  • 双栏排版,栏宽为8.12cm,两栏间距0.75cm
  • 字体方面全用Times。文章标题16pt粗,作者和单位10pt斜;section标题12pt粗,subsection标题10pt斜,正文10pt
  • 作者/单位的格式是上标引用型,下面立即写出所属单位
  • 正文段落缩进0.5cm,标题序号阿拉伯数字后带一个“.”section标题内容(除了数字)缩进0.5cm(相对于边距而不是相对于前面的那个“.”),subsection的序号缩进0.5cm(即subsection的序号跟section的内容对齐),内容缩进1.5cm
  • 图片和表格的caption在模板中没有具体文字描述,但是看效果是粗体,阿拉伯数字并且是换行后缩进(hang模式)
  • 首页页眉:会议名称,会议Logo
  • 最多15行的Abstract(法语中叫Résumé),斜体
  • 参考文献格式疑似IEEEtran,没有具体要求,我用了IEEEtran

其中一些要求很好实现,另一些很变态。

编译方式:PDFLaTeX

----------------页面尺寸----------------

我们先来说跟页面尺寸有关的。首先geometry宏包是不能用了(事实上我是多次想用它的,最终都失败了),只有自己手工调整。由于模板提供了WordPDF的效果,我正好可以用Acrobat的测量工具来量尺寸(当然会引入一些微小的误差),并且通过Try and error来调整,没有技术活,只是力气活。这一部分的内容如无特别说明,都在\begin{document}之后出现。

首先定下双栏的栏宽和栏距,实践发现最方便的办法是做一个小计算:

\setlength{\textwidth}{17.06cm}

\setlength{\columnsep}{0.75cm}

“(textwidth-columnsep)/2 = 8.155cm”,原本来说应该等于8.12cm,实际测量发现模板里面也是8.155cm(通过多次测量,发现不是自己的测量误差),不过0.035cm的差距基本不影响实际打印效果。

于是试着编译了一下发现生成的text block在页面上不是很居中,不知道原因。最终量出来这样的设置

\addtolength{\hoffset}{-0.58cm}


text block“挪动到合适的位置上。这样一弄,left/right margin自然 = 2cm(根据A4纸的总宽度,他们不是独立的变量)。

下面讲讲真正最变态的要求,也是这次排版中遇到的最大挑战(我曾经在论坛发帖《latex中如何判断现在是第几页?》和《页面尺寸精调的最后一点小问题》),最终的解决方式是一个很dirty的巧合。

这篇文章要求首页的页眉高跟之后的不同,由于首页要放会议题目和logo,首页页眉要2.5cm,后续的页面则只需要1.25cm。可是页脚的高度要不变!(IEEE的模板不是这样,所以没有模板可以参考)。于是简单地调整voffset不可行。我原来是想,默认尺寸是第一页的尺寸,到第二页再改,也就是说动态地调整textheight,可这样又会碰到一个很头痛的问题:LaTeX如何知道现在已经到了第二页?想知道的话除非读source2e,没时间啊!

换个角度想想,既然就只有第一页跟其它不一样,不如默认按234...页的尺寸设置,而在第一页单独改动。于是测量模板的第二页的页眉,并反复对比页脚到页面最下方的距离,得到:

\addtolength{\voffset}{-1.96cm}
\addtolength{\textheight}{3.90cm}

这样第二页和后续页的text block放置已经没有问题。剩下首页,由于首页我是用\maketitle来生成标题作者等等,我想到的是在\title{}命令里面做文章,事实上我让页眉的内容也到了\title{}命令里面:


\title{
\vspace{-0.74cm}\fontsize{16pt}{16pt}\selectfont
{
16\textsuperscript{èmes} Journées Nationales Microondes
\\
27-28-29 Mai 2009 Grenoble
}
\\
\vspace{1.35cm}
文章标题}

也就是说,我先纵向移动-0.74cm,写上会议标题16……会议(也就是山寨版的页眉),再移动1.35cm到真正标题位置写标题。这个方法不会改变页脚的高度,因为没有去碰\textheight

----------------字体相关----------------

文档全局设置为:


\documentclass[10pt, a4paper, twocolumn, fleqn]{article}


16pt这个尺寸在LaTeX默认的\small, \huge等等是调整不到的,两种方法,LaTeX标准字体选择方式

{\fontsize{16pt}{16pt}\selectfont 内容}

或者原始一点的

\newcommand{\ptmseize}[1]{\font\x=ptmb at 16pt \x #1}

因为ptmb就是Times bold,我这个命令连\textbf{}也包括了进去。



----------------
标题相关----------------


跟章节标题有关的自然都要请出titlesec宏包,在导言区写


\usepackage[bf, small]{titlesec}
\titleformat{\section}{\bf\large}{\thesection.\,}{0.24em}{}
\titlespacing{\section}{0cm}{*1.5}{*1.1}
\titleformat{\subsection}{\it}{\thesubsection.\enspace}{0.5em}{}
\titlespacing{\subsection}{0.5cm}{*4}{*1.5}



其中“\,”“0.24em”是反复测量出来的值,它们保证section标题内容(除了数字)缩进0.5cm\thesection后面的“.”就是标题序号和内容的分隔点,而那个\bf\large命令则保证在10pt的正文中出现12pt粗体的标题;由于section序号不要缩进,在\titlespacing里面写的是0cmsubsection的设置完全类似,除了序号缩进0.5cm。至于里面的*1.5*1.1,指的是标题前后的弹性空间,由于模板没有具体要求,我是按自己的美观标准和文章的篇幅限制来选择的,因为把他们设置小一点可以省下很可观的空间,前提是不要跟前后的正文粘得太紧。

那个Abstract,我看也没有什么特别要求,没必要弄一个环境


\noindent \textbf{\textit{Résumé}}
{\itshape }


----------------作者相关----------------

作者和单位,我用的是authblk(全称Author Block)宏包,具体可以看看这个宏包的文档,感觉是挺好用的。
导言区


\usepackage[noblocks]{authblk}



正文区


\author[1]{\normalsize author1}
\author[2]{\normalsize author2}
\affil[1]{\normalsize\itshape address1}
\affil[2]
{
\normalsize\itshape Boss' address
\authorcr
\href{mailto:kmc's Email address}{\normalsize \itshape kmc's Email address} : \normalsize \itshape correspondant principal
}



看得出来吗?我又把通信作者的Email地址到第二个单位(\affil[2])里面去了,注意在authblk宏包定义的换行符是\authorcr而不是\\

说起来,IEEE模板里面反而显得很dirty,用的是{\small $~^{\#1}$}这种方式。或许dirty和不dirty的区别仅仅是格式代码放在宏包里还是放在你眼前的差距?

关于{\itshape My text}还是\textit{My text},其实我主要是嫌后者要删除的时候很麻烦,既要删除命令又要删除括号,当然你可以说大括号不用删除,{My text}也不影响,但是无意义的大括号很影响代码的整洁,\itshape有一个作用域的限制,但是在\title{}, \author{}命令里面已经限制了作用域了,不用担心\itshape作用到外面去。

----------------其他设置----------------

caption宏包


\usepackage{caption}
\DeclareCaptionLabelSeparator{period-quad}{.\quad}
\captionsetup{format=hang, singlelinecheck=no, labelfont=bf, font={normalsize,bf}, figurename=Figure, tablename=Tableau, labelsep=period-quad}


声明一个你需要的分隔符,因为模板要求Figure 1后面有一个“.”,距离大约是一\quad这么远,于是我就弄了一个period-quad放到labelsep=后面。

fancyhdr
宏包
由于这种投稿的文章不要页码,我是这样设置的,在\title命令之前放这样的代码


\fancypagestyle{empty}{
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0.5pt}
\fancyfoot[C]{16\textsuperscript{èmes} Journées Nationales Microondes, 27-28-29 Mai 2009 - Grenoble}
\fancyfoot[L]{}
\fancyfoot[R]{}
}


这样就控制了第一页的pagestyle,下面,在你源代码靠近编译结果第一页结尾的内容附近放上


\pagestyle{empty}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0.5pt}
\fancyhead{}
\fancyfoot[C]{16\textsuperscript{èmes} Journées Nationales Microondes, 27-28-29 Mai 2009 - Grenoble}
\fancyfoot[L]{}
\fancyfoot[R]{}


用来控制第二页,这里并不一定需要精确知道源代码什么位置对应编译结果的第二页,说实在的我不知道为什么一定要这样,但是如果不这样的话第二页的页脚会往 上移动…………另外为了保证首页无页码,在\maketitle命令后面紧跟\thispagestyle{empty},这个已经被问过很多次了。

浮动体方面除了graphicxsubfigure(好像我没有用到)外,就是booktabsmultirowmakecell宏包用来画表,不过这跟本文没有太大关系。浮动体用的是传统设置


\setcounter{totalnumber}{4}
\renewcommand{\textfraction}{0.15}
\renewcommand{\topfraction}{0.85}
\renewcommand{\bottomfraction}{0.65}
\renewcommand{\floatpagefraction}{0.60}
\setlength{\textfloatsep}{5pt plus 2pt minus 2pt}
\setlength{\intextsep}{12pt plus 2pt minus 2pt}
\setlength{\abovecaptionskip}{5pt}
\setlength{\belowcaptionskip}{0pt}


其中\textfloatsep\intextsep中的值是弹性长度,表示5pt ± 2pt,当然你也可以设置为 5pt + 10pt - 8pt,表示最多15pt,最少-3pt,用来节省页面篇幅的(因为开始初稿只让写两页,空间实在太少)。我原来一直没弄明白这个,现在趁机解释一下(没准还解释错了……)。


----------------
插入logo----------------


还有一个问题就是由于我没有在首页使用页眉,我目前只进去了会议名称,Logo怎么办?网上有说用pgf来放(pgfdeclareimagepgfuseimage),我没有成功,郁闷。不过搜索到一个还算好用的eso-pic宏包,导言区


\usepackage{eso-pic}
\newcommand\BackgroundPic{
\put(16.57, 23.19){
\parbox[t]{\textwidth}{
\includegraphics[scale=1,keepaspectratio]{logo_jnm.png}%
}
}
}



正文紧接\begin{document}后面写


\AddToShipoutPicture*{\setlength{\unitlength}{1cm}\BackgroundPic}


具体来说就是先声明一个\BackgroundPic命令,这个命令在16.57 23.19的位置放一个宽为\textwidthparbox,里面放上你要的图片Logo。这个Logo我是从Doc模板里面截出来的,按Word100%显示比较缩放成一丝不差,所以scale=1并且keepaspectratio。注意那个\unitlength只有在正文区可以声明,所以导言区的16.5723.19没写单位。



----------------
平衡双栏----------------


末页的双栏平衡,有很多说法,我就只是用了flushend宏包而已,没有遇到网上传说的问题,可能是我末页的浮动体比较少的缘故。


差不多就这些了,在尝试排版的过程中,可以打印测试页,跟Word的打印结果发在灯光下透视着比较。打印PDF的时候一定要注意,Acrobat打印A4纸的时候,根据打印机的不同,如果你选择了适合打印机边距,可能会缩放97%,实际效果有出入但事实上你的页面尺寸是正确的!所以页面缩放一定要选。到时候编译说你尺寸不合适,非要你用Word的时候,你可以骄傲地把两张纸放在一起给他看两个Logo,两条页脚线是如何完美重合到一起的。