[教学]how to use external fonts in xetex
-
- 帖子: 1340
- 注册时间: 2006-01-10 19:09
[教学]how to use external fonts in xetex
昨天正好看到一篇文章内提到XeTeX可以使用系统自带的字体而不必生成tfm、type1字体,就安装了XeTeX在机器上试试。以前在latex中使用中文是一件比较麻烦的事情,不仅要生成各种编码的字体,还要注意tex文件的编码到底是gbk的还是utf8的等等诸如此类的问题。现在XeTeX为我们解决了这一难题,Ubuntu gutsy 自带的texlive2007就包含了XeTeX。网上这方面的文章比较少,我把我的安装方法和如何使用系统自带的字体来生成pdf文件简单的叙述一下。
安装texlive2007,gutsy上把tetex-bin作为虚拟包,要使用tex的话只能安装texlive了。因为我texlive部分是以前完成的所以具体安装哪些包也不是很清楚,一般情况可以试试
sudo apt-get install texlive texlive-XeTeX lmodern
安装好以后就可以试试编译一下tex的文件了
随便建立一个a.tex文件,内容如下:
\documentclass[12pt,a4paper]{article}
\usepackage{fontspec}
\usepackage{xunicode}
\usepackage{xltxtra}
\setromanfont{AR PL ShanHeiSun Uni}
\begin{document}
\XeTeX 可以使用系统自带的字体,而不需要再另外生成。
\end{document}
编译这个文件用 xelatex a.tex 如果成功自动生成a.pdf文件,看一下能不能显示中文吧。
解释一下,fontspec这个包提供了XeteX能使用系统自带字体的功能,具体用法可以参考fontspec手册:/usr/share/doc/texlive-XeTeX/xelatex/fontspec/fontspec.pdf,xunicode 这个包在这里可以去掉因为没有用到一些复杂的字符,不过fontspec的手册强烈建议使用所以就放在里面了,xltxtra这个包提供了LaTeX没有的宏包,比如\XeTeX。
\setromanfont{AR PL ShanHeiSun Uni}正文的字体使用系统自带的Uming字体。如果你安装了其他中文字体的话,可以通过fc-list命令来查看所安装字体的名字,第一列就是。
如果你的系统里面没有安装其他字体但是还是想用的话,XeTeX提供了一种使用外部字体的方法,这是一件很令人兴奋的事情。看一下如何做到的。fontspec包提供了一个ExternalLocation的选项允许你使用外部的字体:
\fontspec[ExternalLocation=/media/hda5/windows/Fonts/]{simli.ttf}
修改一下上面的例子
\documentclass[12pt,a4paper]{article}
\usepackage{fontspec}
\usepackage{xunicode}
\usepackage{xltxtra}
\newcommand\lishu{\fontspec[ExternalLocation=/media/hda5/windows/Fonts/]{simli.ttf}}
\newcommand\hei{\fontspec[ExternalLocation=/media/hda5/windows/Fonts/]{simhei.ttf}}
\newcommand\fang{\fontspec[ExternalLocation=/media/hda5/windows/Fonts/]{simfang.ttf}}
\newcommand\kai{\fontspec[ExternalLocation=/media/hda5/windows/Fonts/]{simkai.ttf}}
\setromanfont{AR PL ShanHeiSun Uni}
\begin{document}
\XeTeX 可以使用系统自带的字体,而不需要再另外生成。
\lishu \XeTeX 可以使用系统自带的字体,而不需要再另外生成。
\hei \XeTeX 可以使用系统自带的字体,而不需要再另外生成。
\fang \XeTeX 可以使用系统自带的字体,而不需要再另外生成。
\kai \XeTeX 可以使用系统自带的字体,而不需要再另外生成。
\end{document}
你也可以使用这个命令来编译得到pdf
xelatex -no-pdf a.tex
xdvipdfmx a.xdv
估计两者的差别在于产生的pdf能不能复制粘贴,没有测试过因为身边只有xpdf。
当然还有一些中文特有的格式比如缩进断行不知道XeTeX支持的如何,希望大家继续深入研究一下。
安装texlive2007,gutsy上把tetex-bin作为虚拟包,要使用tex的话只能安装texlive了。因为我texlive部分是以前完成的所以具体安装哪些包也不是很清楚,一般情况可以试试
sudo apt-get install texlive texlive-XeTeX lmodern
安装好以后就可以试试编译一下tex的文件了
随便建立一个a.tex文件,内容如下:
\documentclass[12pt,a4paper]{article}
\usepackage{fontspec}
\usepackage{xunicode}
\usepackage{xltxtra}
\setromanfont{AR PL ShanHeiSun Uni}
\begin{document}
\XeTeX 可以使用系统自带的字体,而不需要再另外生成。
\end{document}
编译这个文件用 xelatex a.tex 如果成功自动生成a.pdf文件,看一下能不能显示中文吧。
解释一下,fontspec这个包提供了XeteX能使用系统自带字体的功能,具体用法可以参考fontspec手册:/usr/share/doc/texlive-XeTeX/xelatex/fontspec/fontspec.pdf,xunicode 这个包在这里可以去掉因为没有用到一些复杂的字符,不过fontspec的手册强烈建议使用所以就放在里面了,xltxtra这个包提供了LaTeX没有的宏包,比如\XeTeX。
\setromanfont{AR PL ShanHeiSun Uni}正文的字体使用系统自带的Uming字体。如果你安装了其他中文字体的话,可以通过fc-list命令来查看所安装字体的名字,第一列就是。
如果你的系统里面没有安装其他字体但是还是想用的话,XeTeX提供了一种使用外部字体的方法,这是一件很令人兴奋的事情。看一下如何做到的。fontspec包提供了一个ExternalLocation的选项允许你使用外部的字体:
\fontspec[ExternalLocation=/media/hda5/windows/Fonts/]{simli.ttf}
修改一下上面的例子
\documentclass[12pt,a4paper]{article}
\usepackage{fontspec}
\usepackage{xunicode}
\usepackage{xltxtra}
\newcommand\lishu{\fontspec[ExternalLocation=/media/hda5/windows/Fonts/]{simli.ttf}}
\newcommand\hei{\fontspec[ExternalLocation=/media/hda5/windows/Fonts/]{simhei.ttf}}
\newcommand\fang{\fontspec[ExternalLocation=/media/hda5/windows/Fonts/]{simfang.ttf}}
\newcommand\kai{\fontspec[ExternalLocation=/media/hda5/windows/Fonts/]{simkai.ttf}}
\setromanfont{AR PL ShanHeiSun Uni}
\begin{document}
\XeTeX 可以使用系统自带的字体,而不需要再另外生成。
\lishu \XeTeX 可以使用系统自带的字体,而不需要再另外生成。
\hei \XeTeX 可以使用系统自带的字体,而不需要再另外生成。
\fang \XeTeX 可以使用系统自带的字体,而不需要再另外生成。
\kai \XeTeX 可以使用系统自带的字体,而不需要再另外生成。
\end{document}
你也可以使用这个命令来编译得到pdf
xelatex -no-pdf a.tex
xdvipdfmx a.xdv
估计两者的差别在于产生的pdf能不能复制粘贴,没有测试过因为身边只有xpdf。
当然还有一些中文特有的格式比如缩进断行不知道XeTeX支持的如何,希望大家继续深入研究一下。
-
- 帖子: 1074
- 注册时间: 2006-01-18 15:01
-
- 帖子: 1340
- 注册时间: 2006-01-10 19:09
http://www.cnblogs.com/agateriver/archi ... 06044.html\usepackage{indentfirst}
最新的TexLive已经不包含这个包了,如果找不到indentfirst包,可以在导言区输入下列命令代替:
\makeatletter
\let\@afterindentfalse\@afterindenttrue
\@afterindenttrue
\makeatother
\setlength{\parindent}{2em}%中文缩进两个汉字位
-
- 帖子: 18
- 注册时间: 2007-01-23 0:29
- 来自: 北京
请问,为什么我用了这两个package以后,数学符号显示不出来呢?
这样显示不出符号:
这样可以显示符号,却显示不了中文:
这样显示不出符号:
代码: 全选
\documentclass[12pt,a4paper]{article}
\usepackage{fontspec}
\usepackage{xunicode}
\usepackage{xltxtra}
\setromanfont{WenQuanYi Zen Hei}
\begin{document}
无穷 infty $\infty$
\end{document}
代码: 全选
\documentclass[12pt,a4paper]{article}
\begin{document}
无穷 infty $\infty$
\end{document}
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
☎ xelatex tmp.tex
This is XeTeXk, Version 3.141592-2.2-0.996 (Web2C 7.5.6)
%&-line parsing enabled.
entering extended mode
(./tmp.tex
LaTeX2e <2005/12/01>
Babel <v3.8h> and hyphenation patterns for english, usenglishmax, dumylang, noh
yphenation, loaded.
(/usr/share/texmf-texlive/tex/latex/base/article.cls
Document Class: article 2005/09/16 v1.4f Standard LaTeX document class
(/usr/share/texmf-texlive/tex/latex/base/size12.clo))
(/usr/share/texmf-texlive/tex/xelatex/fontspec/fontspec.sty
(/usr/share/texmf-texlive/tex/generic/ifxetex/ifxetex.sty)
(/usr/share/texmf-texlive/tex/latex/tools/calc.sty)
! LaTeX Error: File `xkeyval.sty' not found.
Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: sty)
Enter file name:
LaTeX Warning: You have requested, on input line 54, version
`2005/05/07' of package xkeyval,
but only version
`'
is available.
(/usr/share/texmf/tex/latex/lm/lmodern.sty)
(/usr/share/texmf-texlive/tex/latex/base/fontenc.sty
(/usr/share/texmf-texlive/tex/xelatex/euenc/eu1enc.def)
(/usr/share/texmf-texlive/tex/xelatex/euenc/lm/eu1lmr.fd))
! Undefined control sequence.
l.518 \define@key
[zf]{prepreparse}{ExternalLocation}[]{%
? q
OK, entering \batchmode
可以了
This is XeTeXk, Version 3.141592-2.2-0.996 (Web2C 7.5.6)
%&-line parsing enabled.
entering extended mode
(./tmp.tex
LaTeX2e <2005/12/01>
Babel <v3.8h> and hyphenation patterns for english, usenglishmax, dumylang, noh
yphenation, loaded.
(/usr/share/texmf-texlive/tex/latex/base/article.cls
Document Class: article 2005/09/16 v1.4f Standard LaTeX document class
(/usr/share/texmf-texlive/tex/latex/base/size12.clo))
(/usr/share/texmf-texlive/tex/xelatex/fontspec/fontspec.sty
(/usr/share/texmf-texlive/tex/generic/ifxetex/ifxetex.sty)
(/usr/share/texmf-texlive/tex/latex/tools/calc.sty)
! LaTeX Error: File `xkeyval.sty' not found.
Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: sty)
Enter file name:
LaTeX Warning: You have requested, on input line 54, version
`2005/05/07' of package xkeyval,
but only version
`'
is available.
(/usr/share/texmf/tex/latex/lm/lmodern.sty)
(/usr/share/texmf-texlive/tex/latex/base/fontenc.sty
(/usr/share/texmf-texlive/tex/xelatex/euenc/eu1enc.def)
(/usr/share/texmf-texlive/tex/xelatex/euenc/lm/eu1lmr.fd))
! Undefined control sequence.
l.518 \define@key
[zf]{prepreparse}{ExternalLocation}[]{%
? q
OK, entering \batchmode
可以了
● 鸣学