发布时间:2011-05-13 00:25:26
文章类别:小技巧
原文地址:http://blog.sina.com.cn/s/blog_5e16f1770100ubsv.html

QQ群:91940767/145316219/141877998/80300084/194770436
淘宝店:http://latexstudio.taobao.com
技巧续篇:http://latexstudio.net/
常见数学公式问题集下载

命令nobreakspace不可用。

【解决方案】

milksea:

不要自己使用 xltxtra 和 xunicode 宏包。如果使用了,放在 fontspec 或 xeCJK 之后。
http://www.newsmth.net/bbscon.php?bid=460&id=301520
http://www.newsmth.net/bbscon.php?bid=460&id=301513

转载内容如下:

第一个问题,是的,我也遇到了——不止是我,前几天 TeX Live 上邮件列表上也问过。
我认为是 xunicode 包又做了一件愚蠢的事,它定义:
\DeclareUTFcharacter[\UTFencname]{x00A0}{\nobreakspace}
Unicode 的 0x00A0 处的确是不可打断的空格,但把它放进 TeX 命令本身是件傻事,
至少没理由沿用这个名字,因为 TeX 原来的方式处理不可打断的空格就很好。
解决办法之一,恢复原来的定义,简单粗暴合理有效:
\DeclareRobustCommand{\nobreakspace}{%
\leavevmode\nobreak\ }
不过 xunicode 还可能带来其他问题的(见我前面的吐嘈)。Good luck

刚才提问有关 \nobreakspace 的问题,我又仔细看了一下 xunicode 的实现,在空格
问题上我可能多少有些冤枉 xunicode 了,正确使用不至于造成错误。(不过我还是坚持
把 \nobreakspace 重定义是多此一举。)
4.5.1 版第 71--72 行:
\RequirePackage{xunicode,xltxtra}
\RequirePackage[CJKnumber,CJKtextspaces,CJKmathspaces]{xeCJK}
这里把 xunicode 放在 xeCJK 也就是 fontspec 之前使用。这里 xunicode 需要预定义的
\UTFencname,在 fontspec 将给出 EU1(XeTeX) 或 EU2(LuaTeX),但默认值是 U。
如果用 EU1 就没有问题,但用 U 编码会导致影响西文的正文 tx 字体,特别是那个由
xunicode 重定义的 \nobreakspace,影响广泛。
另:关于 xeCJK 的后两个选项过时了。
建议修改为:
\RequirePackage[CJKnumber,BoldFont,normalindentfirst]{xeCJK}
\RequirePackage{xltxtra}
fontspec 和 xltxtra 都会载入 xunicode,所以它不必出现。xltxtra 也可以删掉。
xeCJK 去掉已经失效的空选项(目前仅作为兼容性保留),增加汉字伪粗体(可能用不
上)。因为孙老师坚持在 xeCJK 中增加 indentfirst 宏包的功能,使用
normalindentfirst 选项可以禁用这个功能,因为 thuthesis 已载入 indentfirst 了。
这几项不改也是无害的。


点赞(0)

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部