在 inkscape 中插入 LaTeX 与 ConTeXt 标签
在 Linux 桌面应用较为广泛的 inkscape 可以通过 textext 扩展实现在矢量图形中插入 LaTeX 标签的功能。昨天因为 CTeX bbs 上 cvgmt 询问类似的功能,我推荐了 inkscape + textext,然后顺便 hack 了一下,让这个扩展可以支持 ConTeXt MkIV。这篇文章对这个 hack 过程稍做总结。
inkscape + textext 依赖以下软件包:
- inkscape (>= 0.47,本文以 0.48 版本作为示例)
- textext (>=0.44)
- pdf2svg
将下载的 textext 包解开后,将所得 textext.inx、textext.py 文件存放于 ~/.config/inkscape/extensions 目录。
理论上,现在可以打开 inkscape,然后打开 "Extensions->TeX Text" 菜单,便可以向 inkscape 输入 LaTeX 文本了。
但是由于最近这一两年,python 和 gtk+ 的版本更迭导致许多软件包的兼容性出现了一些问题。在此,需要一一排查。
首先排查一下 pygtk 的兼容性。打开终端,输入 `python`,然后在 python 的交互环境中输入 `import gtk`,如果未出现一些警告信息或者错误信息,那么恭喜一下,这一关你通过了。
继续在 python 的交互环境中输入 `import md5`,如果 python 交互环境警告你,说这个 md5 模块过时了,那么需要使用 hashlib 模块替换 md5 模块。替换方法为:将 textext.py 文件中的 `import os sys ... md5 ...` 代码修改为 `import os sys ... hashlib ...`,然后将:
md5.new('%s%s' % (a, kw)).hexdigest()[:8]
修改为:
hashlib.new('md5', '%s%s' % (a, kw)).hexdigest()[:8]
这些工作完成之后,向 inkscape 中插入 LaTeX 文本应该没有什么问题了。
对于 ConTeXt MkIV 用户,可以使用我修改过的 textext 包,在这里下载。在使用时,如果所用的 ConTeXt MkIV 来自 context minimals 包,那么要确定已经启用了 ConTeXt 环境,详见“这就是 ConTeXt Minimals”。
textext 扩展不爽之处在于它提供的 TeX 输入接口是一个模态的对话框。
抓屏:
转载时,希望不要链接文中图片,另外请保留本文原始出处:http://garfileo.is-programmer.com