The leading textbook in Artificial Intelligence. Used in over 1000 universities in 91 countries (over 90% market share) and the 85th most cited publication on Citeseer.
学习再学习,多少大秘密
繁芜纷飞,杂七杂八
A branch of computer science that studies how to endow computers with capabilities of human intelligence. For example, speech recognition is a problem being worked on by AI scientists.
auctex 部分编译的中文处理。
最近才发现,auctex 的 C-c C-r 编译一个 region 的时候,对于中文不能显示,看 _region_.tex 的代码,发现是它抛弃了CJK 的相关声明包。这也怪不得别人... 人家用 英文的自然没有这么多的问题...
搜索了一把,看到了水木上面的一个帖子,解决了这个问题,这里转载一下:
c-c c-r编译某环境时,往往要手动添加_region_.tex的\begin{CJK}{song}...很麻烦,
想了个办法修改TeX-region-Create的实现,由于TeX-region-Create函数忽略
\begin{document}前面的宏,定义变量手动添加之,代码如下:
- (defvar CJK-buffer-head "\\begin{CJK}{GBK}{song}")
- (defvar CJK-buffer-end "\\end{CJK}")(defun cjk-after-document ()
- (interactive)
- (setq CJK-buffer-head "\\begin{CJK}{GBK}{song}")
- (setq CJk-buffer-end "\\end{CJK}")
- )(defun cjk-before-document ()
- (interactive)
- (setq CJK-buffer-head "")
- (setq CJK-buffer-end "\\end{CJK}")
- )
然后,看TeX-region-Create函数在tex-buf.el中:
- (insert "\\message{ !name(" master-name ")}"
- header
- CJK-buffer-head ;;我的修改
- TeX-region-extra "\n"
- "\n\\message{ !name(" original ") !offset(")
- (insert (int-to-string (- offset
- (1+ (TeX-current-offset))))
- ") }\n"
- region
- "\n\\message{ !name(" master-name ") !offset(")
- (insert (int-to-string (- trailer-offset
- (1+ (TeX-current-offset))))
- ") }\n" CJK-buffer-end "\n" ;;我的修改
- trailer)
- (run-hooks 'TeX-region-hook)
- (if (string-equal (buffer-string) original-content)
- (set-buffer-modified-p nil)
- (save-buffer 0)))))
如果\begin{CJK}在\begin{document}之后,则区域编译前调用cjk-after-document,反之调
用cjk-before-document以正确设定CJK-buffer-head和CJK-buffer-end
测试了一下,确实成功了。
emacs 的 blogmax 插件
[
心情: Cool ]
drazet 推荐的,看了一下,是自己维护一个 blog 的,适合自己提供有空间的。将你的编辑变成 html 文件然后发布。
可惜的是不支持 评论等等的(这个没有验证过,也许是设置不够,看到作者的另一个 blog 有这个功能的..)。不过 生成 index, 转换 html 等等还是很方便的,不过不能挂评论的话也和 emacs-wiki/muse 这些的差不多了。哪个作者说得牛哄哄的..
| 引用: |
| If you don't use Emacs, but you do a blog, it might be worth your while to learn Emacs just so you can use BlogMax. |
主页在这里: http://billstclair.com/blogmax/index.html 这个页面本身也是用这个写的。
slides 中遇到的东西
[
心情: Cool ]
为了论文答辩,用 latex+beamer 做了一个 slides, 后来发现想在生成的 pdf 文件中加入一个时钟,主要是方便自己在讲的时候把握时间,也是,做了一学期,说的却不超过8分钟...闲话就算了..
室友 zz 在网上一顿狂搜,发现用 javascript 可以实现,于是采用 eforms 宏包,加了这样一段代码在 tex 文件中
| 代码: |
| \begin{insDLJS}{showtime}{Show time} sec=0 min=0 function tClock() { sec=sec+1 if(sec==60){sec=0;min=min+1;} minStr=min secStr=sec if(sec<10) secStr="0"+sec for (i=1;i<=50;i++) this.getField("time"+i).value=minStr+":"+secStr } var timeout =app.setInterval("tClock()",1000); \end{insDLJS} |
并在导言区定义了
| 代码: |
| \newcommand{\timemark}[1]{\begin{textblock}{0.7}[0,0] (11.3,15.53)\textField[\BC{0.91 0.91 1}\BG{0.91 0.911} \textSize{6.4}\textColor{0 0 0 rg}]{time#1}{0.8cm} {5.5bp}\end{textblock}} |
这样就会在 slides 底部生成一个小时钟,从打开开始计时,按照分钟记。
但是同时需要在每一个 frame 中硬性的插入 \timemark{1} \timemark{2}这样的标签。
我是想直接插入在 \begin{frame} \frametitle{xxx}那行的下面,于是首先想使用 sed 的 a\ 命令来处理,同时前一天在 gnu.emacs.help 中看到了自动顺序编号的办法,就是使用 regexp的 \# 实现的,可是在 sed 中,虽然正常的插入了,但是却没有 \#计数的这个,郁闷死了,忽然想到直接在 emacs 中处理。
找了半天没有在匹配行后面追加的命令,于是想到了一个有点 dirty 的办法,用 Regex 将一行替换成两行不就行了么?但是不懂怎样吧回车硬编码进去,在 #ppmm 中问了 破破 ,他告诉我是 <C-q><C-j> 。
于是就有了下面这个有点诡异的操作:
| 代码: |
| M-x replace-regexp ^\\begin{frame}.* <RET>\&<C-q><C-j> \\timemark{\,(+ 1 \#)}<RET> |
刷刷刷,自动加上去了。后来又考虑了一下,借助于 \& 也完全可以在匹配行之前插入一个新行。
解释一下, M-x 是执行一个命令,这个命令名字叫 replace-regexp 就是按照 正则表达式替换,替换的源字串为 ^\\begin{frame}.* 就是以 \begin{frame}开头的那些行,把它替换成该行(\&表示被匹配的完整的源字串),跟上一个回车(C-q C-j) 然后下一行是 \timemark{n}, n 从一开始计数,没匹配一次加一(\,(+ 1 \#), 其中 \# 表示计数,它前面的表示从 1 开始,裸的\#是从 0 开始的。
顺便提一下 emacs 的 re-builder 就是一个构建正则表达式的模式,对于个文本,会在下面再打开一个貌似模式行的东西,输入匹配模式,就会将源文件匹配处高亮显示,在 echo buffer 中显示匹配次数,实在是很不错的一个东西。在测试 regexp 的时候非常的有用。
两个小问题,记载一下
1. 一直使用中文locale 英文界面,设置方式是在 /etc/enviroment 中写
| 代码: |
| LANGUAGE="en_US.UTF-8" LANG="zh_CN.UTF-8" LC_ALL="zh_CN.UTF-8" |
这样 locale 的输出 除了 LANGUAGE 其余的都是 zh_CN 的。使用 fcitx 也不用改 gtk.immodules
测试老狼的 locale-pinyin 脚本的时候,由于其中提到最好不要设置 LC_ALL 于是就吧 LC_ALL 去掉了。重新登录之后,发现 locale 除了 locale 拼音的那个,其他都成了 en_US.utf8。 本来也用得不错,可是在 emacs 环境中不能自动识别 gbk 的 tex 文档,虽然在文档中加上了 Locale Variable 设置 coding: gbk 可以解决,可是总是不爽,还是换吧。疑惑的是明明 LANG 设置的 zh_CN 为什么出来的是 en_US。 于是查找了一下,发现还有一个文件 /etc/default/locale 中有一句 LANG=en_US.utf8。 貌似在这里和 enviroment 文件中设置了同样的变量的话,起作用的是这里的。于是大笔一挥,修改成 zh_CN, logout 一下,好了。
2. 一直奇怪网上的 postfix+procmail+fetchmail+mutt 的一些配置,本来我认为 postfix 自身也提供了一些 MDA 功能的,至少单用户时候投递到我的邮件池中没有问题。于是在 fetchmail 的配置中加上了 smtphost 为 localhost, 发现投递没有问题。于是就删除了 procmail。 今天早上收信出了问题,查 log 一看,说是找不到 procmail, 于是更加奇怪了,google 了一下发现 postfix 默认的 mda 是 procmail. http://twiki.org/cgi-bin/view/Wikilearn/EmailServerSketches 说了一些有用的东西。
tex 模板
[
心情: Dis×ted ]
最近写论文,在学校找了一个小模板,开始写着很开心,没有管什么格式的问题。这也正是 tex 的模板的好处,模板有了直观写文字就是了,其他的都不要管,格式就直接好了。不用去这样那样的调整。此外就是公式了,我的论文里面的公式那个多..... 还好,结合 emacs 的 auctex+preview 边写边预览..
省却了不少事情。
不过郁闷的是不晓得那个学校是怎么想的,来一个新设计的封面.. 看看原来的样式,也没有什么不好,不明白这些事情了,早前就一帮人为了改校徽的事情闹得沸沸扬扬。算了,也没有什么可说的。
于是看起了丑陋的原始 TeX 命令,那些什么丫的 \def \let \newcommand 什么的,参数还是 #1 #2 的,实在是有些难受。好在模板中要改的地方不多,只是一个封面的样式。最初的那个改法非常的 ugly, 由于不知道中文的那部分在什么地方设置,放在了正文中,后来才知道,关于 CJK 的是要一个 cpx 文件来管理的,于是重新计划了一下格式,刷刷就好了。
回头看看,定义一套模板也不是这么复杂的事情,等把这段时间忙完了,整理一下相关的知识,弄几个模板放着.......
优美的 tex 代码
[
心情: Amused ]
昨天 ee 在 irc 大闹,要把一个 pdf 的14,15两页合并成一页,还要横排,把 两个 a4 的合成一个 a3 的。 本来想用打印的办法,可是虚拟打印机打出来器中的字体乱掉了。 huang 给了一个用 tex 文件的办法,真是非常优美的代码。
| 代码: |
| \documentclass[a4paper]{article} \usepackage{pdfpages} \begin{document} \includepdfmerge[nup=1x2,landscape]{ee.pdf,14-15} \end{document} |
编译出来就好了...
看来是 pdfpages 的宏包起的作用,有空可以看看了。
不过 ee 最终没有用这个办法,说 tex 不通用,不过我个人还是很喜欢的了..
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.