||
博主主要把科学网博客当作记笔记的地方,所以如果有小伙伴们有问题要找我,请联系我的邮箱,kxguo@pku.edu.cn 以及pmoguo@gmail.com(长期有效)
(博主最近出了点bug,可能不会及时回复,请见谅)
起因是像博主这么懒的人基本有熟悉的包就会用到死, 所以IDL画图里遇到特殊符号基本都用textoidl搞定。然而仍然遇到了一些问题,比如xyouts “小于等于”用textoidl('leq')输出是这个样子……在以下三个reference的帮助下,初步解决了问题。
http://www.idlcoyote.com/ps_tips/greeksym.php
http://www.physics.emory.edu/faculty/weeks//lab/papers/idlfonts.pdf
为了了解这个问题的原因,我们直接print以下textoidl('leq'),发现输出的字符串是!Ml!X,这其实是IDL字体库中的矢量字体font !9下的符号,也就是说xyouts, posx, posy, '!Ml!X'和xyouts, posx, posy, '!9+string("154B)+!X'的效果都和xyouts, posx, posy, textoidl('leq')是一样的。而“154B,其实指的就是在"!9"对应的字体库中014X行14列的符号,这里154=14+14*10(即x)。
那么既然矢量字体中的数学符号如此奇葩,该怎么办呢。巧的是,coyote在他的例子中给出了
而他的例子是想输出mu (14x+15)这个符号,方法是
coyote几乎把所有能画图的都优化了一遍,这一直令懒癌晚期的博主头疼不已,所以看到cg开头的程序总是过滤为idl自带程序。于是从上面的code看来,使用这个"Font Symbol"似乎可以直接代入到xyouts, posx, posy, greekletter上去了。然而,他这里采用的居然也是"!9"!字体却和!9矢量字体表完全不同!这其实是因为:
注意右边三列的区别。textoidl('leq')用的是Vector Font, 而coyote画mu用的则是TrueType Font。到此,问题可以得到解决了。博主输出的方法是:
在ps图中的效果为:
以上
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-6 00:21
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社