Friday, August 29, 2008

[Python]IPython: Python与Shell的混血王子

无聊的时候试用了IPython便爱不释手了。IPython是一个增强版的Python解释器。你完全可以把它就当作python的解释器来用--没有问题。但它的好处是内置了很多类似linux shell的特性。我觉得对我来说很实用的包括以下这些:
  • 比如可以在IPython里使用ls, pwd, mkdir这些命令而不用先import os 再来os.system("ls")
  • 对于那些没有内置的linux命令及工具,可以用!cmd 或者!!cmd 来调用。就如同在vi里调用外部命令一样
  • 可以用?modulename来查看一个module的用法和结构,相当于help(modulename)的简写了吧
  • 支持使用tab键来补全命令
  • 可以使用用%run filename args来load并执行一个外部py文件。就如同在shell里执行python filename args
  • 可以debug python脚本
以上这些是把IPython作为python解释器(默认的profile)的用法。实际上还可以更夸装一点: ipython -p pysh 来启动IPyhton。 这样默认相当于进入了一个Shell 从而不用!或者!!来调用命令。同时你还具有Python的那些模块和数据结构可以使用。比如你可以使用如下的程序来做找出当前目录下所有的.py文件并生成同名的文件夹(没有扩展名.py):
files=!ls
for f in files:
    if f.endswith('.py'):
        mkdir ${f[:-3]}

Monday, August 11, 2008

bibtex的crossref,以及winedt的自定义按钮

(1)问题: bib文件当中使用了 cross-refs 。比如所有的sigcomm2008的引用就被cross-ref到一个sigcomm2008的entry当中,这样就不用每个都分别输入address, year, booktitle了。但是带来一个小问题,如果实用超过1个这样的cross-ref,比如sigcomm2008和sigmetrics2008,那么第二个就会被单独编译成一个ref,比如[1] sigmetrics 2008, xxxxxx。

解决:bibtex 有一个选项-min-crossrefs 默认值为2。所以编译的时候可以加入选项把这个值调大,比如1000

(2)问题:winedt当中调用bibtex的时候如何打开上面所说的选项。

解决:
Options -> Execution Modes, Accessories 栏里, 选择Bibtex,然后command line里面的Switches里加上这个option : -min-crossrefs=1000。 实际上这里就是设定latex编译时的各个参数。另外可以改成Batch方式,这样就不是直接调用这些命令,而是使用 CTeX\WinEdt\Bin\TeX 这里的对应的批处理文件。从而可以进行更复杂的处理

(3)问题:winedt是一个很好的tex编辑器,可是生成了pdf文件以后(比如使用的是pdftex),默认的浏览方式是调用adobe acrobat, 灰常消耗资源. 想要换成调用foxit reader来打开生成的.pdf文件。

解决:
Options -> Menu Setup, 在main menu里面选择Items -> Accessories,双击。打开了Accessories菜单的定制面板。在&PDF 条目下添加&Foxit Reader。对应的Macro处填上,b\Exec\FoxitReader.edt'); 如右图所示。我还抓下了foxit reader自己的icon然后添加过来的。(考察WinEdt-Large.btn 和WinEdt.btn)
然后在 CTeX\WinEdt\Exec目录下创建 FoxitReader.edt。 我的这个文件很简单,就是:
Run('"Foxit Reader" %P\%N.pdf ','%P',0,0,'%N.pdf - FoxitReader',1,1);
End;
保存后,就可以从菜单中选择用foxit reader来打开了。这里我的foxit Reader已经添加到PATH当中了。如果不想添加,可以使用foxit reader的全路径。如果嫌麻烦还想创建工具栏按钮来打开。可以在工具栏上右键, 选择enter toolbar setup。然后拖拽按钮到工具栏上。就可以从工具栏上快速的启动foxit了

总结: WinEdt有着强大的自定义工具以及一套强大的宏。不过菜单和界面实在做的让人有点匪夷所思。常常不知道需要的功能在哪里。 比如Options菜单里,同时有setting,preference,setup 和configuration。实在能把人给绕晕了。

一霸阿,居然发现这里还有个很久以前的blog

呵呵,以后技术类的东西往这里贴了,
生活里的东西写在MSN Space里面 。

MSN Space对Firefox的支持太差了,
算是我放弃(partly)它的一个主要原因吧。