Lyx的中文问题
来自软件实验室
根据经验,在debian系统上使用lyx,可以从安装源texlive,但是最好自己从源代码编译lyx比较靠谱,否则有可能碰到无法生成中文pdf的问题。 (需要注意的是,ubuntu下14.04版本对应texlive2014,13.04对应texlive2013,团队协作的时候需要统一版本)
编译lyx后,以下的步骤是必须的:
- linux安装windows字体。adobe发布了一套开源的source code pro等宽字体,特别适合源代码的展现,可以从 https://github.com/adobe-fonts/source-code-pro 下载安装。
- 在.lyx/lyxrc.defaults文件的最后添加以下两行内容:
\format "pdf4" "pdf" "PDF (xelatex)" "" "" "" "document,vector" \converter "pdflatex" "pdf4" "xelatex $$i" "latex"
- 在文档的首选项中注意以下几点的设置:
- 语言要选择简体中文
- 语言的编码选择Unicode(XeTex)(utf8)
- Output中的默认输出格式选择 PDF(xetexpdf)
- 在Latex序中填写以下内容(如果使用ctex则可以省略此步骤):
%%%%%%%%%%%%%%%%%% \usepackage{fontspec} \setmainfont[Mapping=tex-text]{文泉驿正黑} %这里是字体名 %中文断行 \XeTeXlinebreaklocale "zh" \XeTeXlinebreakskip = 0pt plus 1pt %%%%%%%%%%%%%%%%%%%%%%%
这样就可以在"视图”菜单中使用view PDF(xetexpdf)查看pdf输出,或者通过“文件”的导出菜单导出PDF(xetexpdf)。
通常,我还会作如下的设置:
- 浮动项默认为“此处优先”放置
- 文档类默认为“book”,或者选择ctex更适合中文的处理
- 页面布局中选择页眉为“fancy”
- Numbering & TOC中,加入目录中的元素降一个级别
ctex的特别修改
默认的设置如果使用ctex可能遇到如下的报错:
kpathsea:make_tex: Invalid fontname `[SIMKAI.TTF]/OT', contains '[' kpathsea:make_tex: Invalid fontname `[SIMKAI.TTF]/B/OT', contains '[' kpathsea:make_tex: Invalid fontname `[SIMKAI.TTF]/OT', contains '[' kpathsea:make_tex: Invalid fontname `[SIMKAI.TTF]/OT', contains '[' Systemcall.cpp (292): Systemcall: 'xelatex "____________1.tex"' finished with exit code 1
这是字体引用错误造成的。fc-list :lang=zh-cn发现:
/usr/share/fonts/truetype/win/simkai.ttf: 楷体,KaiTi:style=Regular,Normal,obyčejné,Standard,Κανονικά,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
应该引用[simkai.ttf]或者KaiTi。修改texlive的fontset修改字体定义: vi /usr/share/texlive/texmf-dist/tex/latex/ctex/fontset/ctex-xecjk-winfonts.def
将原本的[SIMKAI.TTF]处均改为KaiTi就行了 再次编译tex文件,顺利通过。其他系统字体出错解决类同。
下面是修改后的ctex-xecjk-winfonts.def,以便对照检查:
% ctex-xecjk-winfonts.def: Windows 的 xeCJK 字体设置,默认为六种中易字体 % vim:ft=tex \setCJKmainfont[BoldFont={SimHei},ItalicFont={KaiTi}] {SimSun} \setCJKsansfont{SimHei} \setCJKmonofont{FangSong} \setCJKfamilyfont{zhsong}{SimSun} \setCJKfamilyfont{zhhei}{SimHei} \setCJKfamilyfont{zhkai}{KaiTi} \setCJKfamilyfont{zhfs}{FangSong} \setCJKfamilyfont{zhli}{LiSu} \setCJKfamilyfont{zhyou}{YouYuan} \newcommand*{\songti}{\CJKfamily{zhsong}} % 宋体 \newcommand*{\heiti}{\CJKfamily{zhhei}} % 黑体 \newcommand*{\kaishu}{\CJKfamily{zhkai}} % 楷书 \newcommand*{\fangsong}{\CJKfamily{zhfs}} % 仿宋 \newcommand*{\lishu}{\CJKfamily{zhli}} % 隶书 \newcommand*{\youyuan}{\CJKfamily{zhyou}} % 幼圆 \endinput