Windows下安装配置TeX环境(三):Mysterious TeX Errors

前几天装好了MiKTeX,配置好了中文,然后开始把之前用Word写的一份文档试着移植过来。其间遇到了不少问题,不过都还好,就是好有一个Mysterios Error,半天搞不定,网上搜索了一下,终于找到根源。

且看TeX User Group上的一份“官方”文档:http://www.tug.org/errors.html

---------------------转贴分割线 begin---------------------

Mysterious TeX Errors

(preface needed! )

Missing title/author in output

You have to specify \maketitle after \begin{document}.

LaTeX error: Bad math environment delimiter

This can be caused by forgetting a closing brace.

Too many }

This can be caused by forgetting the \ on \begin, even though the document has the right number of { and }.

Missing $ inserted from \:

In LaTeX, \: is a math mode operator which inserts a ``medium'' space. So constructs like this:

\LaTeX\:       % missing $ error

result in the mysterious Missing $ inserted error. It's advisable to get in the habit of using {} after abbreviations to minimize problems like this, as in:

\LaTeX{}:       % ok

Missing number, treated as zero

If [...] follows \\, even with intervening whitespace and newlines, it will be taken as an optional argument, and thus expected to start with a number. (Even if amsmath is loaded, apparently, in contrast to the The LaTeX Companion.) For example, a math alignment like this causes the error:

a^2 & a^3 \\
[b^2] & ...

One remedy is to insert {} before the left bracket.

Misplaced \noalign

Using tabular, this can be caused by an \hline without a preceding \\. Similarly, using booktabs, this is the result of leaving out the \\ in the line before \bottomrule.

Section headings one character in output

Perhaps you left off the braces after \section. It should be used like this:

\section{The section title}

\pdfendlink ended up in different nesting level than \pdfstartlink

This happens when hyperref is used under pdftex and a citation splits across a page boundary. To fix it, note the page number of the error and specify the draft option to hyperref so you get an output PDF. Then you can see the citation in question and rewrite to fix it. (Thanks to James Bednar's posting on the pdftex list about this.)

---------------------转贴分割线 end---------------------

红色粗体那段,就是我遇到的问题。我的文档中有这样一段:

\texttt{[root@host] \# some command\\
[root@host] \# some other command}

结果用xelatex一处理,总是报告在第二行的“[”符号处"Missing number, treated as zero",真是郁闷呀,原来原因在于“\[”这个组合,会让TeX误以为这是一个可选参数输入的开始。正确的写法应该是在“\”之后加上“{}”,也就是应该写成:

\texttt{[root@host] \# some command\\{}
[root@host] \# some other command}

看来不论是什么软件,只要规模大点,错误信息总是那么不中用。

Posted in 技术 | Tagged , , , | 1 Comment

Windows下安装配置TeX环境(二):配置中文环境

前两天装好MiKTeX之后,今天就需要配置中文环境了,毕竟很多文档还是用中文写的。事实上如果选择使用MiKTeX 2.7中的XeTeX的话,中文配置还是非常简单的。简单到不需要做任何配置就可以输出中文PDF。例如下面这段代码:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{SimSun}

\begin{document}
Hello world! 测试
\end{document}

保存后为chinese.tex文件后执行xelatex chinese.tex即可生成一个中文PDF。注意保存chinese.tex文件时编码要选择UTF-8,像我用gVIM的话只需要在保存前执行VIM命令set fileencoding=utf-8即可。

这个chinese.tex文件很简单,引入了fontspec宏包,使用其中的\setmainfont指令来设置文档所使用的主字体,这里是中文Windows自带的SimSun,也就是宋体。 用Adobe Reader打开生成的chinese.pdf文件,查看其属性,可以看到内嵌了SimSun字体。

但是这样生成的中文PDF文件实际上并不好看,因为其中英文字符也会使用中文字体,而实际上中文字体中26个英文字母好看的实在是少之又少。另外这样还有一些中文排版上的细节问题。为了解决这些问题,有三个方案可选:

  1. 使用XeTeX加宏包zhspacing,可以从 http://bbs.ctex.org/viewthread.php?tid=40889&extra=page%3D1 下载
  2. 使用XeTeX加宏包xeCJK,可以从 http://bbs.ctex.org/viewthread.php?tid=40232&extra=page%3D1 下载
  3. 使用传统的LaTeX加CJK宏包方案。这个可以说是最老最流行的方案,使用时需要手动指定编码。我不太喜欢。

既然选择使用XeTeX,那么第三个方案就淘汰了。而zhspacing方案和xeCJK相比虽然还不够完善(事实上作者自己在项目主页上也推荐用户使用xeCJK),但是使用起来简单方便,成为我初步的选择。xeCJK的功能更加强大,以后再试试吧。

安装zhspacing比较简单,首先建立一个目录作为TeX LOCAL ROOT,比如D:\texlocal,在其下建立几个目录,最后目录结构如下:

D:\texlocal\tex
D:\texlocal\tex\xelatex
D:\texlocal\tex\xelatex\zhspacing

将下载的zhspacing080102.tar.bz2解压,文件都放到D:\texlocal\tex\xelatex\zhspacing目录下。然后运行开始菜单中的MiKTeX Settings工具,在Roots tab中将D:\texlocal加入,然后执行General tab中的Refresh FNDB操作,等File Name DataBase更新后就可以在自己的.tex文件中使用zhspacing宏包了。例如:

\documentclass{article}
\usepackage{zhfont}
\zhspacing
\setzhmainfont[BoldFont=Adobe Heiti Std]{Adobe Song Std}

\begin{document}
Hello world! 测试
\end{document}

打开生成的的PDF文件可以看到中文使用的是中文字体Adobe Song Std,英文使用的是默认的Latin Modern Roman,PDF文件内嵌的也是这两个。

至于中文字体我比较喜欢Adobe Reader自带的Adobe Song Std和Adobe Heiti Std。这两个字体在PDF中比zhspacing默认设置使用的SimSun和SimHei效果要好很多。由于XeTeX使用fontconfig管理字体,使得字体的安装也非常简单,只需要把这两个字体文件从Adobe Reader的目录下(9.0默认是C:\Program Files\Adobe\Reader 9.0\Resource\CIDFont\)拷贝到Windows字体文件夹即可。这也是XeTeX比起传统的LaTeX要来得先进的地方,不再需要生成一堆的字体描述文件再放到指定的目录下这么繁琐。

这些工作做好后,就可以开始真正的“出版”工作了。

Posted in 技术 | Tagged , , , , , | Leave a comment

Windows下安装配置TeX环境(一):安装MiKTex

最近心血来潮,突然想学学TeX,然后把自己的一些文档改用TeX来写。一来是久闻TeX大名,二来现在写的文档都是Word + PowerPoint,虽然也谈不上不丑,但是生成的PDF在我这种对细节要求比较高的人眼里实在是越看越受不了。在网上把TeX的介绍文档大致看过一通后,决定在Windows下装个TeX环境试试看。

首先到MiKTeK的主页去下载安装包:http://miktex.org/Default.aspx

目前的最新稳定版是2.7。相比于之前的2.6 版本,2.7增加了XeTeX。XeTex比起原始的LaTeX优势主要在于支持Unicode方式编码的.tex文件,处理起中文来更加直观;并且使用fontconfig来管理字体,可以直接使用系统字体,新增字体也更加简单。

我下载的是Basic Installer,可以直接安装好一个最小可用的MiKTex系统。还有一个安装包叫做(Complete) Net Installer,可以安装一个完整的MiKTex,但是却需要在安装时从Internet慢慢慢慢的下载....

安装没什么好说的,很直观的过程。装好后可以生成一个简单的TeX文件来测试一下。先创建一个文本文件,内容如下:

\documentclass[a4paper]{article}
\begin{document}
Hello world!
\end{document}

保存为test.tex,然后打开一个命令提示符窗口,执行命令

pdflatex test.tex

或者

xelatex test.tex

就会生成一个test.pdf文件,打开就可以可以看到TeX发出的问候。

编辑器方面,我试了试比较流行的WinEdt,感觉一般,界面不是很喜欢,各种配置选项也感觉比较乱,整个就好像是个业余作者做出来的东西,不过对TeX编辑的支持却是非常好。还有一个叫做TeXnicCenter的,界面好点,也有比较好的模板,但可惜中文支持很差。挑来挑去,最后还是决定用gVIM + Latex Suit的方式,这样和TeX配合感觉才够酷 :)

这样基本上一个可以开始上手学习和使用的MiKTeX系统就装好了。MiKTeX一个比较好的功能就是在执行.tex文件编译时如果有缺少package,它可以自动下载安装。当然也可以到开始菜单中运行Browse Packages工具或者Settings工具来选择安装更多的packages。中文支持方面如果使用XeTeX的话其实配置也不复杂,下次再写吧。

Posted in 技术 | Tagged , , | Leave a comment

北京奥运开帘卷西风幕式

奥运开帘卷西风幕式给我的感觉还不错,不像很多人猜测的那样,张艺谋会搞个很土的东西出来。一百分满分的话,开帘卷西风幕式本身我会给80。但是CCTV的转播只能给50,太业余了。

印象比较深刻的基本上集中在前半段,作画啊,活字啊,太极啊那些还是挺不错的。CCTV的烂直播此时已经体现出来一些了,最明显的问题在于收音,演 员的声音非常之空洞模糊,我估计现场观众通过扩音都听得清楚一些。再加上恬噪的解说,简直无法享受声音效果。至于说镜头的切换,远近景的选择就更不用说 了,常常想伸长了脖子去自己选择个合适的视角……

到后半段运动员入场部分,CCTV的业余体现得更加明显。镜头屡次不知所谓的对准运动员的下半身,屏幕上出现若干条腿及跑道。中间还出现一次镜头切换错误,切到观众席上正好某人站起时凸翘的臀部上,也许这是故意的?

结束时似乎也没有出现字幕之类的,场上还在广播,这边广告就迫不及待的切进来了。好歹把声音减弱画面渐黑之后再进广告也好些吧,如此突兀的结束,完美的诠释了虎半夜凉初透头蛇尾这个成语。

不说了,整体上还过得去就好了。中国人嘛,向来是不求有功但求无过,尤其是这种大场面,新奇特色不重要,重要的是没犯大错误。

Posted in 其他 | Tagged | Leave a comment

新博开张,顺便庆祝搬新家了

博客终于开张了。以前太懒,总是懒得去写些什么,但是回顾自己几年来的心得,总觉得不记录一下分享一下似乎缺点什么。趁着搬了个新家的机会,顺便开了这个博客。至于为什么选择Yo2,只是看访问速度还可以,使用的是也是流行的WordPress系统。

我主要的工作方向在IBM POWER平台上(也就是常说的小型机),关于我的更多信息和曾经的作品,请移步关于页面。

顺便抱怨一下,现在深圳的的房租是越来越高了....

Posted in 其他 | Leave a comment