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 [...]

