2009年5月11日星期一

在eps图片上添加LaTeX公式

利用MetaPostexteps宏包,可以在metapost文件中加入eps图片,同时利用metapost的label命令在图片任何地方加入LaTeX公式。下面是一个使用exteps的例子:
input exteps
verbatimtex
\documentclass{article}
\begin{document}
etex
prologues:=2;
beginfig(1);
begineps "figure.eps";
endeps;
label.rt(btex $f(x) = \sqrt x$ etex, (2cm,3cm));
endfig;
end
为了使用LaTeX命令,需要设置环境变量
TEX=latex

2009年4月2日星期四

GnuPlot在PostScript终端下使用任意字体

有时候我们在GnuPlot中想使用一些其他字体,例如LaTeX字体或者一些艺术字体,这时候我们可以用fontfile选项把自己的字体内嵌进生成的PostScript文件:
set term postscript fontfile "myfont.ext" "FontName"
这里的字体可以是Type 1字体,也可以是TrueType字体。命令必须包含完整字体文件名,包括扩展名。字体文件可以在当前目录,也可以用GNUPLOT_FONTPATH环境变量控制字体路径。FontName(字体名)不是字体文件名,通常不那么容易直接得到,尤其是TrueType字体。最简单的办法是在GnuPlot里执行
set term postscript fontfile "myfont.ext"
GnuPlot会自动给出字体名。

这样,由于可以使用LaTeX字体,配合PostScript终端的enhanced选项,我们几乎可以在GnuPlot中输入任意特殊字符。另外,为使用TrueType字体,需要安装ttf2pt1工具进行字体自动转化。

2009年3月16日星期一

sed编辑器的使用

sed被称为流编辑器(stream editor)。它和一般写字板之类的文本编辑器不同,它通过逐行读入文本文件,按照用户指定的方式对文本进行过滤。用户通过脚本命令告诉sed该如何处理文本文件,所以sed可以看作一种程序语言。这看起来没有使用鼠标和键盘编辑文件的编辑器方便,但是当我们需要自动处理大量文本文件时,这会非常方便。 例如,我需要把很多数据文件的某些行注释掉,也就是在所有数据文件的某几行开始处加上字符“# ”。如果一个个文件编辑,工作量就太大了。下面这个命令可以很方便的实现这个功能:
sed -i '1,5 s/^/# /' *.txt
这个命令把每一个.txt作为后缀的文件前5行开始处加上“# ”。 下面把常用的一些sed命令总结一下。
  1. 替换一段文字
  2. 这个恐怕是sed最常用的方式了。
    sed 's/a/A/' <old >new
    这个命令把文件old中的小写字幕a换为大写字幕A,并且把新的文件存为new。但是这个命令只能替换第一个a,如果想要把文件old中所有的a都替换掉,需要加上一个参数:
    sed 's/a/A/g' <old >new
    上面命令中的斜杠/是分隔符,但是sed没有要求一定用斜杠作为分隔符,其实可以用任何字符(只要不和搜索字符矛盾)作为分隔符,例如冒号等等。
  3. 执行多个命令
  4. 上面的例子中只执行了一个命令,如果需要同时执行多个命令,需要用到参数-e
    sed -e 's/a/A/' -e 's/b/B/' <old >new
  5. 指定对某些行操作
  6. 如果只对某些行进行操作,可以像一开始举的例子那样,使用行号指定范围:
    sed '1,10 s/A/a/'
另外,这里有一个很有用的sed常用单行命令参考

2009年1月9日星期五

GnuPlot使用png terminal时找不到字体的问题

GnuPlot不同的终端(terminal)使用不同的处理字体的方法。png/jpeg/gif使用libgd,所以字体目录由GDFONTPATH这个环境变量控制,可以直接使用TrueType字体。例如把需要用到的字体放在$HOME/fonts目录下,在.bashrc中添加:
export GDFONTPATH=$HOME/fonts
当路径设置好后,可以用GNUPLOT_DEFAULT_GDFONT这个环境变量设置默认字体。

2009年1月2日星期五

在USB drive(U盘)上安装Linux

UNetbootin可以很方便的把Linux装到U盘上,只要主板支持,就可以从U盘启动Linux。由于U盘可读写,比Live CD更方便。目前UNetbootin支持Fedora,Debian,Ubuntu等各种主流Linux版本。如果你的U盘比较小,可以试试Puppy Linux,挺小巧的一个Linux版本,只有100M左右大小。