[教学]tetex+utf8编码+字体deb包生成+中文标签+可复制粘贴.(01/06/2006)

OOo,TeX,KO,ABI,GIMP,Picasa,ProE,QCAD,Inkscape,Kicad,Eagle
xiechy
帖子: 1074
注册时间: 2006-01-18 15:01

[教学]tetex+utf8编码+字体deb包生成+中文标签+可复制粘贴.(01/06/2006)

#1

帖子 xiechy » 2007-01-06 14:59

刚才有新手又照着置顶的帖子做了,结果会发生错误。主要是置顶的帖子已经有段时日。而且还有点小错误(不过也不算是错误,因为已经没有这个包dvipdfm-cjk了)。在这里总结一下。

要apt-get的包有这么几个:
tetex-bin:会自动的把需要的tetex的base,tex=common装上。tex的基本系统就算是安装好了。
latex-cjk-chinese :cjk-latex这个包已经被latex-cjk-XXX之类的包取代了,由于我们只要中文所以只要这一个就可以了。在cjk-4.7中,已经自动支持utf8的中文标签,从此我们可以告别ccmap宏包了,但是dapper可能没有更新到这个,feisty是可以的,我在用的就是这个。如果是edgy的,可能需要用feisty的源升级这个包。
dvipdfmx可选:这是修改过的dvipdfm,可以支持cjk。是dvipdfm-cjk之后的版本。以前,只有用这个生成的pdf才是支持复制粘贴的,所以虽然生成pdf的程序麻烦些,但一般大家都会用这个来生成。但是现在,在cjk4.7中,pdflatex已经自动支持中文标签和中文的复制粘贴,所以就是不用它,也是可以的。
latex-cjk-chinese-arphic-gbsn00lp:我搜了下,发现这个包也是个虚拟的包,其实真正起作用的是tfm-arphic-gbsn00lp。(补充,后来发现好像这个也不是Type1字体,Type1字体是pfb,也许只要ttf-arphic-gbsn00lp,对pdflatex来说就好了吧)
有了这几个包,已经可以生成中文的pdf了,只是字体只有一种就是gbsn。
下面是测试用的代码。
% in UTF-8 encoding
% utf8bks3: test CJK pdf outline.
% Edward G.J. Lee 2006.02.21
\documentclass[12pt,a4paper]{article}
\usepackage{CJKutf8}%如果要使用中文标签,必须使用这个宏包取代CJK宏包。这个包也是CJK的作者写的
\usepackage[T1]{fontenc}%这两行都是生成中文标签必须的。
\usepackage[unicode,dvipdfm]{hyperref}%如果用pdflatex生成,那么把dvipdfm去掉.
\begin{document}
\begin{CJK*}{UTF8}{gbsn}
\author{李果正 Edward G.J. Lee},
\title{中文 PDF outline 测试}}
\date{\today}
\maketitle
\tableofcontents
\section{将进酒}
君不见,黃河之水天上来,奔流到海不复回。

\section{桃花源记}
晋太元中,武陵人,捕鱼为业,缘溪行,忘路之远近。

\newpage%要编译不出错,在最后必须有这一行。这也是生成中文标签必须的,但不会对最后的pdf有影响。
\end{CJK*}
\end{document}
把上面的文字复制到一个文件(ts.tex)中去。保存编码为utf8

代码: 全选

pdflatex ts.tex
pdflatex ts.tex
注意,pdflatex要执行两遍。第一遍把生成标签的辅助文件生成好,第二编把标签信息编译进pdf中。
这样,我们的第一篇pdf已经生成了。

下面讲字体的生成。
安装附件中的tex-cjkfonts的deb包。使用方法和怎样修正在论坛搜我的帖子tex-cjkfonts,上面写的很详细了。
将生成的字体deb包用dpkg安装上,使用你自己生成的字体的名字。

这样的手续我觉得应该是比较简单的,不需要太多的转码,字体设置。没有脱离debian的包管理系统。

补充:pdflatex和dvipdfmx两种方法生成的pdf的特点:

pdflatex和dvipdfmx都能直接利用ttf。
不过我查看了用pdflatex生成的中文pdf,发现也是内嵌的Type1的字体。不知道要怎样才能生成不内嵌字体的pdf呢?
但是我们知道,Type1是3次曲线,ttf是2次曲线,当然Type1字体的效果要好些,只不过我们的Type1字体都是由TTF生成的,所以嘛~呵呵,其实二者就没有太大差别了。
pdflatex不能利用eps的图像.dvipdfmx生成dvi可以直接用eps,但是其他的什么bmp阿,jpg阿,pdf阿,都不认。
由于pdflatex的中文标签复制粘贴支持才刚刚加入没多久,所以还是有些小缺陷:hyperref的颜色现实不出来,如果是在evince中,连接颜色都是黑色,和没有定义一样。但在acroread里面,连接的外周方框是正常的指定的颜色。而dvipdfmx生成的则是正常的。
我个人是只使用pdflatex的。但是也不阻止大家用其他。只是要注意hyperref的参数一定要修改哦!

修改一下:pdflatex和dvipdfmx都是可以利用ttf的。我从新看了原始的文档,才发现自己错了。不好意思。
补充:李果正前辈的对字体总结的资料:
2.1 中文 Type1 字型

由於 Type1 字型的規格,只能容納 256 個空間,也就是只能放 256 個字,這在英文語系沒有問題,但中文光 Big-5 就有一萬多字,更不用說是其他更大的編碼字集了。很不幸的,TeX 的字型規格也是如此,只能容納 256 個字。

因此就有許許多多的前輩們想辦法使用 subfont 的觀念,把中文字打散,分裝在不同的 Type1 字型中,由數十個中文 Type1 字型組成一個完整的中文字型,經由 NFSS(New Font Selection Scheme) 的選字機制,來組合數十個分散的 Type1 字型成為一整個的中文字集,再透過字型定義檔 *.fd 來取用字型。

2.2 中文 CID-Keyed 字型

由於 Type1 字型實在是不太適合用於中文,於是 Adobe 公司,另外研發了 CID-Keyed font 字型規格,把字型的實體資料集中在一個檔案內,再另外使用索引、對應的方式來取用所需要的字型,這樣就不會受限於 256 個字的限制了。他仍然是和 Type1/TTF 一樣是向量字,因此用來製作 PDF 檔,在顯示上不會如 pk 點陣字型那麼醜。

除了字數不受限的好處外,CID-Keyed font 的精妙處,就在於「索引、對應」,由於用索引的方式取字,因此,我們一般文字處理上要用到的 cut&paste&search 就可以很容易的達成。這在使用 subfont 方式的中文 Type1 及 pk 字型就沒有這個好處。而且,由於可以索引、對應,也代表著,實體字型資料不必一定要放在檔案中,可以放在使用者的系統中就行了,就像現在的 HTML 格式一樣,可以不必帶著字型跑。這對 ps/PDF 格式尤其重要,因為這些格式雖然顯示上很精緻,但如果嵌入字型的話檔案大了些,在網路傳輸上不很方便。

對 TeX/LaTeX 系統而言,這個好處並不會帶來嚴重的缺失,因為視使用場合,也是可以把部份,甚至全部的字型給嵌入檔案中的,不像 HTML 格式,目前要內嵌字型的話,標準還不統一,IE 可以做到,但其他 web browser 就無法閱覽了。像這篇文章的 PDF 格式中,標題的顏楷體就是嵌入王漢宗博士捐贈的 TTF(CID TruType),仍然可以 cut&paste&search。

如果各位對這些字型檔規格有興趣,可以到 Adobe 公司去下載 spec 規格檔來研究,這些規格都是公開的格式。

2.3 中文 TTF 字型

這是目前使用上相當普及的字型規格,也因此,許多 hacker 們的腦筋都會動到 TTF 上,例如 ttf2pt1 可以將 TTF 轉成 Type1 字型來用,而 DVIPDFM$x$2.2 及較新版的 GhostScript 也可利用 TTF 當成是 CID-Keyed font 來使用。甚至以往的 pk 點陣字,也是由 ttf2pk 來由 TTF 轉出來的。

如果想使用 dvips 來產生 ps 檔,那這裡還要製作中文 Type1 字型。當然,一般使用的話,應該是可以不必製作中文 Type1 了,直接由 dvipdfmx 抓取系統上的 TTF 就可以了,但由於有時要和一些處理 eps 的 packages 配合,例如 PSTrick,所以這裡一併把 Type1 字型製作出來。

給 TeX/LaTeX 處理的話,只需要 *.tfm 檔就可以運作,生成 *.dvi 檔。但要由 dvips, dvipdfmx, pdflatex 處理的話,要有實體的字型才行,因為他們的輸出不是 ps 檔,就是 PDF 檔。


* *.tfm (TeX Font Metric, 字型描述檔)
為二位元檔,TeX 有這個字型描述檔就可以產生 *.dvi 檔,但其中是沒有真正的字型實體資料在裡頭,得由其他的輔助工具來完成。任何型式的字型,要給 TeX 使用前,都一定要先產生這個 tfm 檔,而且 TeX 只要有這個 tfm 檔就可以運作。

* *.afm (Ascii Font Metric)
這也是字型描述檔,但是以純文字的格式存在,要給 LaTeX 使用的話,可以由 afm2tfm 來產生 *.tfm 檔。一般的 Type 1 字型會只附 afm 檔,而沒有 tfm 檔。TTF 的話,可以由 ttf2tfm 來產生。

* *.mf
這是 Knuth 教授設計的 Metafont source,他本身是一種 outline font,但由於顯示/成形(render/raster)較複雜,目前不適合像 Type 1/TTF 一樣 on-the-fly 使用,是另產生 bitmap 形式 *.*gf (generic font) 再由 gftopk 產生 pk 字型來使用的。Metafont 的可執行檔就是 mf,mf 在 font-makeing mode 時可以產生 tfm 檔。MetaPost4.1 也是可以用來製作字型,他的延伸檔名通常是 *.mp,可執行檔則是 mp 或 mpost。

* *.pfa (POSTSCRIPT Font Ascii)
這是 POSTSCRIPT Type 1 字型檔,但是以純文字的格式存在,可由 t1asm 來轉成 binary 格式(即 *.pfb)。

* *.pfb (POSTSCRIPT Font Binary)
和 *.pfa 同,但是以 binary 格式存在。兩種格式目前都可以直接使用。

* *.*pk (packed font)
這是給 dvi viewer/printer/dvips 使用的點陣字,以便真正產生字型嵌入 ps 檔中或供 printer 使用。當然,這個 pk 字,可能是由 Metafont、Type 1 或 TTF 轉成的。

請注意這裡的表示方法,pk 字型是由其解析度來成為檔名的一部份的,例如 600 dpi 的 pk 字型,實際上的檔名是 *.600pk(gf 字型的表示法亦同)。

* *.fd (font description)
這是給 LaTeX 找字型用的字型定義檔。
附件
tex-cjkfonts_0.3-4_i386.deb
(11.29 KiB) 已下载 307 次
ltkun
帖子: 1340
注册时间: 2006-01-10 19:09

#2

帖子 ltkun » 2007-01-06 17:48

收藏了
头像
rhfcaesar
帖子: 2996
注册时间: 2005-11-17 15:45
来自: 湖北

#3

帖子 rhfcaesar » 2007-01-06 18:08

赞!
头像
eagle5678
帖子: 1865
注册时间: 2006-07-08 14:07

#4

帖子 eagle5678 » 2007-01-06 18:50

靠,6.06的为什么 就是这么慢
abacan
帖子: 29
注册时间: 2006-09-10 11:01

#5

帖子 abacan » 2007-01-06 20:24

谢谢xiechy
rleon
帖子: 6
注册时间: 2006-06-05 14:39

#6

帖子 rleon » 2007-02-02 0:49

详细,收藏
gritcn
帖子: 29
注册时间: 2006-12-06 19:47

#7

帖子 gritcn » 2007-02-03 15:04

我根据贴子操作了,把我的sources.list源改为feisty后,仍然没有找到cjk-4.7。不知楼主是怎么做得。
我是新手,下了cjk-4.7但是不会装。里面的说明太复杂。我希望cjk-4.7能早些出现在我们的源上。

我希望能在ubuntu上早日用latex.
xiechy
帖子: 1074
注册时间: 2006-01-18 15:01

#8

帖子 xiechy » 2007-02-03 15:42

aptitude install latex-cjk-common
编译出来的包不是叫做cjk。被分割成了很多包。
rleon
帖子: 6
注册时间: 2006-06-05 14:39

#9

帖子 rleon » 2007-02-06 19:47

这个包在我的系统下有个小问题。我的系统是 ubuntu 6.10 + tetex 3.0 + cjk 4.5.2 。
我在生成UTF8编码字体时,其中的c70*.fd 有问题。我做了点小修改。
$ sudo vim /usr/share/tex-cjkfonts/scripts/Makefile
把其中的28-32行替换为

@echo "\def\\\fileversion{4.5.1}" >> $(FDFILE)
@echo "\def\\\filedate{`date +%Y/%m/%d`}" >> $(FDFILE)
@echo "\ProvidesFile{$(FDFILE)}[\\\filedate\space\\\fileversion]" >> $(FDFILE)
@echo "" >> $(FDFILE)
@echo "\DeclareFontFamily{C$(EID)}{$(ENCNAME)}{\hyphenchar \\\font\m@ne}" >> $(FDFILE)

你也可以从这里得到 http://www.haikuo.googlepages.com/Makefile
或者直接得到deb包 : http://www.ubuntufans.googlepages.com/t ... 4_i386.deb
Antigue
帖子: 17
注册时间: 2006-04-28 20:48

#10

帖子 Antigue » 2007-02-18 16:48

LaTeX2e <2003/12/01>
Babel <v3.8d> and hyphenation patterns for american, french, german, ngerman, b
ahasa, basque, bulgarian, catalan, croatian, czech, danish, dutch, esperanto, e
stonian, finnish, greek, icelandic, irish, italian, latin, magyar, norsk, polis
h, portuges, romanian, russian, serbian, slovak, slovene, spanish, swedish, tur
kish, ukrainian, nohyphenation, pinyin, loaded.
(/usr/share/texmf-tetex/tex/latex/base/article.cls
Document Class: article 2004/02/16 v1.4f Standard LaTeX document class
(/usr/share/texmf-tetex/tex/latex/base/size12.clo))
(/usr/share/texmf/tex/latex/CJK/CJKutf8.sty

! LaTeX Error: File `ifpdf.sty' not found.

Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: sty)
按照本文做的,到生成pdf的那一步,出现了这些信息。怎么办类?我的是edgy。
xiechy
帖子: 1074
注册时间: 2006-01-18 15:01

#11

帖子 xiechy » 2007-02-21 22:52

aptitude install texlive-latex-recommended
775ftft
帖子: 83
注册时间: 2007-04-11 19:05

#12

帖子 775ftft » 2007-07-20 15:41

支持
zhangsong023
帖子: 768
注册时间: 2006-09-20 19:56

#13

帖子 zhangsong023 » 2007-07-23 22:52

楼主的测试文档生成pdf时格式变得混乱,生成ps没问题,生成dvi有乱码。
把[T1]这个参数去掉后,一切正常,谁能解释一下。
sybase2008
帖子: 109
注册时间: 2006-01-23 16:41

#14

帖子 sybase2008 » 2007-07-25 15:49

请教楼主两个问题
1。我用的是ubuntu606,可以先把源换成704,安装latex-cjk-common后,再把源换回来吗?

2。我是用王垠那个程序安装的中文字体,它能用utf8吗?
sybase2008
帖子: 109
注册时间: 2006-01-23 16:41

#15

帖子 sybase2008 » 2007-07-25 15:54

请教楼主两个问题
1。我用的是ubuntu606,可以先把源换成704,安装latex-cjk-common后,再把源换回来吗?

2。我是用王垠那个程序安装的中文字体,它能用utf8吗?
回复