我不确定这是不是R和Sweave能达到的最漂亮的境界:
下载:一份由pgfSweave生成的人模狗样的动态文档这两天花了点时间,把跟LaTeX、LyX、Sweave有关的一系列中文问题从头到脚翻了个遍,目前为止,明白并解决了如下问题(基于带有MikTeX 2.8的CTeX 2.8.0.125、LyX 1.6.5、R 2.10.1、R包pgfSweave 1.0.3,操作系统Win XP,从头到尾一直用UTF-8编码):
- (LaTeX说中文了)LaTeX生成可复制粘贴的中文PDF文档:由于我的惰性,还用着N年前的CTeX,那个老版本CTeX中的MikTeX貌似一直有问题,比如无法更新LaTeX宏包,更不必说那些
dvipdfmx之类的程序了,估计人家作者都已经更新了无数个版本我还不知道。在我陈旧的印象中,要用LaTeX生成可复制粘贴的中文只有一种办法,就是用dvipdfmx把dvi转为pdf,而我陈旧的印象又记得dvi文件只能由latex命令生成,并且用latex编译的文档必须用EPS图形,这一直让我觉得很不爽,因为我实在不爱用EPS,比如R的postscript()设备(可生成EPS图形)不支持半透明色,而且图形中要用中文字符的话配置非常麻烦(N年前我请教了Paul Murrell,虽然搞明白了,但心里仍有疙瘩)。我的偏好是用pdflatex命令编译文档,图形也用PDF格式(pdflatex默认支持PDF和PNG图形),用R生成PDF图形也方便、漂亮,所以配合Sweave很容易生成一篇干净利索的PDF文档;但pdflatex命令直接编译生成的中文文档中,中文字符是不能复制粘贴的,因为复制出来就是乱码。所以呢,我陈旧的知识让我的这个“麻烦问题”一直没有得到解决。
我一直在想,怎样在文档中建立一个超级链接,只要点击就可以打开链接的文件。在Office中基本没什么障碍,但用LaTeX就不能直接通过链接文件地址达到目的了。今天Michael Friendly在邮件中告诉我一个小技巧:只要超级链接的地址前加上run:就可以了。例如,用hyperref宏包的href命令创建一个链接打开一个文件some.file就可以用\href{run:path/to/some.file}{some link}。
这样的话,我们就可以直接在PDF中点击链接打开文件,而不必先切换界面再去点文件了。其实run跟http、ftp等一样,都是协议。
当今这世道,单枪匹马地干是下策。遗憾的是我经常这么干,常常是劣性难改。大约一周前,我遇到一个看起来很简单自己却无法解决的Flash技术问题,就是把PDF转为SWF动画时,SWF Tools无法设定帧频率(frame rate),而其它格式的文件转SWF全都可以设定。我第一反应是:下载源代码,找!找了半天晕头转向(世上最痛苦的事情莫过于阅读源代码),加上SWF和PDF的基础知识我都没有,更是无从下手。然后就往邮件列表发了一封邮件,等了一个星期,终于看见有人提供了答案。原来这个功能已经有了,但是还没有被写到文档中去。
这样的话就方便多了,我可以把animation包中的saveSWF()函数改了;更重要的是,用PDF制作出来的Flash比用位图格式(PNG、JPEG等)文件制作的Flash要小很多,而且PDF的矢量性让Flash拥有足够的清晰度,这一点实在是太棒了。
近期评论