最近有一批Windows下CTeX的TeX源代码,想挪到苹果上运行,碰到了坑不少,最后一一解决

(1)GBK转UTF-8,在Windows的Ctex套装都是用的GBK编码,而现代的TeXLive (MacTeX)都是UTF-8编码,需要把编码转换过来,Mac下自带编码转换软件iconv

(2)命令连字问题,在Windows下的ctex套装,允许出现”\bf这是重点”这种命令,不加空格可以正常运行,但是到了TeXLive下就认为bf后面都是指令,直接报错,于是需要把\bf和内容之间加空格,但是需要避免把\bfseries这类指令给拆开来,只能采用正则表达式了。其他例如\item \pause命令同样如此。

折腾了半天终于搞了个可用的脚本

cd "$( cd "$( dirname "$0"  )" && pwd  )"
for i in ./*.tex;
do
    iconv -c -f GBK -t UTF8 "$i" > tex.temp;
    sed -i "" -r "s/(\\bf)([^s])/\1 \2/g" tex.temp;
    sed -i "" 's/\\pause/\\pause /g' tex.temp;
    sed -i "" 's/\\item/\\item /g' tex.temp;
    mv tex.temp "$i";
done

直接命名为GBK2UTF.command,chmod+x赋予可执权限,与tex文件放到一个文件下就可以了。当然需要把原来代码里的CJK一类删除,通过\usepackge{ctex}和xelatex方式来支持中文。