近日集中學習TeX,終於於昨日實現了一直以來的宿願——中日文混寫,感動興奮之情自無須言表。實現步驟將於後篇或下述維基中詳述。
只是終於覺察到在博客上寫名詞解釋很難做到知識的統一管理,往往是寫過以後就在也不回頭去查看,這與博客本身的性質是分不開的。因此要徹底學好TeX,將其作為自己今後的特長之一予以掌握的話,就必須將其從博客中剝離開來。
於是上網找可以自由使用的維基,本來並未曾抱有太大希望,因為以前曾經找過但是並無所得。而今天手氣卻很好,一下子就找到了一個:http://www.zoho.jp/。是日本的網站,但是介面裡提供有中文,所以也可以用來做漢語的Wiki。
那麼我的維基是在這裡:http://paihuai.wiki.zoho.com/,命名其為「TeX道場」。
Entries Tagged as ‘TeX’
2008/04/28
Wiki創立
2008/02/19
里程碑其二——文件夾探究結束(TeX~Web2C)
source之後還有兩個文件夾:tex和web2c。
TeX內所裝該是系統的核心程序,其內容如下。
alatex209 內含AMS-LaTeX程序。AMS是美國數學學會(American Mathematical Society)開發的宏包以及類文件。其由各種定義命令(amsmath)和l排版方面的類文件組成(amscls)。csplain
plain TeX之宏包括展。貌似和捷克語有關。
eplain plain TeX之宏包括展。
fontinst 用于安裝TeX字體的軟件,它可將Adobe字體文件轉變為LaTeX2e所識別的字體文件,使其可使用Type1字型的字體。
generic 此路徑中存有可通用於各種格式(plain、LaTeX、AMSTeX,)的文件。
generic\babel babel核心。
generic\config 貌似語言設定文件。
generic\enctex 未知。
generic\german 規定了德語規則的類文件。
generic\hyphen Hyphenations,即斷詞規則。其包含了各種印歐語的斷詞規則。
generic\misc 一些綜合性的類文件。
generic\oberdiek 貌似是名為Oberdiek的一個人提供的一些有用的宏包。
generic\pictex 適用於TeX的繪圖工具。
generic\pstricks 支持在TeX/LaTeX文件中直接使用PostScript命令,可以在文檔中輕易得到各種PostScript的圖形和文字效果。
glosstex GlossTeX是可將腳註、略語列表或拉丁字母等進行自動準備以備LaTeX或MakeIndex利用的工具。
jlatex209 jLaTeX的2.09版核心。jLaTeX該是LaTeX的另一種擴充版本吧。
latex LaTeX核心。
latex209 LaTeX2.09核心。
plain plainTeX核心。
platex pLaTeX核心。
platex209 pLaTeX2.09核心。
texinfo 其中的texinfo.tex定義了宏包文件。它把排版texinfo形式文檔所需的信息告知給TeX。
Web2C Knuth的TeX、METAFONT的源代碼係由Knuth所創的WEB方式來記述的。WEB是將代碼(Pascal)與文本合二為一的一種格式。對其以tangle處理則得到其代碼部分,以weave處理則得到可用TeX處理的文本。Web2C原來指將tangle所生成的Pascal代碼轉換為C語言的程序,乃由Tomas Rokicki所開發。後Tim Morgan對其進行拓展,又經Karl Berry之手後現由Olaf Weber進行維護。因其發布眾多TeX的功能拓展文件及工具等,故而通過Web2C的版本可以表述TeX處理系統整體的特征。現在的最新版為7.5.6。
終于全結束了。撿了西瓜忘了芝麻,其實并沒有學到什么。只是為了不想半途而廢,而做了這許多很讓人懷疑其效能的工作。不過總算善始善終。下一步便是找個日語教程練習了。
2008/02/14
source文件夾
texmf下的source文件夾,內含latex與tex兩個子文件夾。
tex中包含了TeX的核心文件。其中有fontinst和generic兩個文件夾。fontinst是用于安裝TeX字體的軟件,它可將Adobe字體文件轉變為LaTeX2e所識別的字體文件,使其可使用Type 1字型的字體。而generic中則有適用于多個格式的宏包。在目前的安裝狀態下,其中只有babel一項。關于babel,在TeX用語集中已有解釋,從略。
latex中為LaTeX的各種宏包。其內容及意義如下:
amsfonts AMS的數學符號包。
amslatex 可以排版數學符號和公式等科技文章的宏包。
base 基本格式包。
colortbl 利用該宏包可以設置表格中行或列的前景和背景色,從而得到彩色表格。
cyrillic 輸入俄文用的。
graphics 引入圖形用。
hyperref 超链接包。
leftidx 用于激活數學模式中的副腳本以及超級腳本。
mdwtools 一群有用的宏包的集。
mfnfss MetaFont的NFSS?
microtype 不明。
\misc\geometry 提供更多紙張尺寸。
oberdiek oberdiek編寫的一些小宏包。
pdfpages 用以合倂兩個PDF文件。
perltex 用以使用Perl制作LaTeX宏包。
pict2e 消除了LaTeX自身的picture環境中的諸多限制,使其可以任意繪制圖形。
psnfss 使LaTeX2e可以使用共同的PostScript文本以及符號字體。
tools 工具集?
2008/02/2
里程碑其一——教程結束
『LaTeX2e 用戶手冊』研習完畢矣。
其有章節九,附錄五,頁三百八十整。此番學習,頗為浩大,頗為辛苦。但終於如期(春節之前)結束,甚是滿意,甚是高興。
其實很多地方都沒有讀懂,有時候甚至是逼迫自己在讀,這是不是某種強迫症?
下面要做的是對TeX用語集的補充和整理。之後基于網上教程進行一次日語輸入的學習。再之后,便是加OTF,實現中日混寫了。
2007/12/7
hbf2gf~scripts
txemf里fonts之后的文件夹是hbf2gf,里面装有cfg文件15个,还有一个README。关于hbf2gf,前一篇里已经知道它会使用fongts里的hbf文件,而具体的作用,留待以后对bin文件夹内各工具进行研究时在做探讨。这些cfg文件,无疑应是hbf2gf.exe的配置文件。
下一个是jbibtex文件夹,从名字可以看出,它是bibtex的日语版,里面有bib和bst文件两种,这些前面已经知道是做什么的了。
再往下是latex2rtf文件夹,因其内部与hbf2gf一样,都是cfg文件,故而怀疑latex2rtf也是一个程序,果然,在bin中有latex2rtf.exe,那么,这个文件夹也跳过。
下面是makeindex文件夹,里面有ist文件5个。ist文件用于makeindex.exe或mendex.exe,是他们制作索引时参照的,记载了索引体裁设定等内容的文件。
然后是metafont文件夹,这里主要为mf文件,在它下面的config文件夹里,有名为cmmf和mf的mf文件和ini文件各一对。cmmf和mf想来应该是metafont里最基本的一些东西吧,而ini则是他们的配置文件?此处在网上查不到,只能猜。而扩展名mf前面有解故不赘述。
接下来是metapost文件夹,它的大多数子文件夹里都只有mp文件一种。mp文件是METAPOST所制图形的源文件。而METAPOST是使用META语言(METAFONT中的图形描绘语言)的作图工具,其输出格式为EPS。在mp3d子文件夹里,有一个create_animation.sh文件,sh文件是UNIX互换OS中shell((bs)sh)的脚本文件。在support子文件夹里,有map文件和adj文件。map文件前面已述,而adj文件在网上没找到,料来并不太重要,也许用的时候就知道了吧。support下还有一个charlib子文件夹,里面的文件都没有扩展名。根据里面README的记载,这是用来支持troff特殊字符和字体映射的目录。所谓troff,根据Wikipedia的解释,是UNIX中文档整形命令的一种,主要用于打印机方面。总之,support里的东西应该是用来支援metapost的支持文件吧。
然后是mft文件夹,内有mft文件3个。mft文件也查不到,是不是makeformat呢?
下一个是scripts文件夹,里面是pl文件,不过这些pl文件是Perl文件,与前出的Property List不同。
2007/12/5
fonts文件夹之其他
通过上一篇里对字体的考察,afm文件和cmap文件的用途已经了解了:前者规定了Type 1字体中字宽与文字间距等度量信息,后者则是CID字体(Type 1的一种)通过CID编码与各编码集(GB2312、Big5等)进行对应时所使用的文件。
那么fonts下的afm和cmap文件夹结束。下面是enc文件夹,这里也只装有enc文件一种。按TeX Wiki的说法(我在那上面找到了用语集!!而之前我一直笨笨地在五大洲的网站上Google着enc……以下若无特殊说明,用语解释都出自此处),enc文件一般是PostScript字体(即广义上的Type 1字体)的编码定义文件。而这里的所谓编码,即是各个字形与数字代码之间的对应关系。
接下来是lig文件夹,里面只有lig文件一种。lig文件是afm2pl程序用来对组合字进行定义的文件。afm2pl程序是基于afm文件制作pl文件的程序。pl(property list)文件是指TFM文件的内容经过转换后的,能为人所读懂的格式。那什么是TFM文件呢?
TFM(TeX Font Metric)文件是TeX所使用的西文字体度量文件。TeX自身在进行(文字排版的)输出处理时,只使用TMF数据。而输出处理时各个TFM使用哪个字体进行显示和印刷等问题,则原则上由各个DVIware的设定来决定。
然后是map文件夹。这里面有除两个txt文件外,其余皆为map文件。map文件是记载了TFM的名称与真实字体(例如Type 1字体)之间对应关系的文件。各DVIware的map文件格式不尽相同。另外,map文件所在的路径也因TDS的版本而异,因此有必要注意所使用的TeX系统是基于哪个TDS版本的。当然,最近此类问题可以通过DVIware的updmap命令予以解决。另外,不论西文还是中文、日文字体,如果通过VF(虚拟字体)进行转换,则TeX文档所使用的TFM(或jfm)名与map文件上记载的时常会有不同。
总之,意思就是说,TeX文档在进行排版处理时,使用的不是真实的字体而是TFM,然后DVIware基于自身的设定将TFM与真实的字体相关连,最终显示真实的字体。而进行这种关联的,就是map文件。
这里又提到了TDS和VF两个概念。TDS(TeX Directory Structure)是TeX路径构成标准化的意思。VF(Virtual Font)则用于从多个字体中收集字形,或用于整合代用字体与目标字体等。可以向Virtual Font内记述包括special命令在内的所有DVI命令。
所谓special命令,是指用于执行不被DVI所支持的,依赖于设备的命令的命令。如插入各种图像、超链接以及规定纸张大小等,均是依靠special命令来实现。
之后是misc文件夹,其构成为:\misc\cns\cns40的单一结构。cns40内有bin和hbf两种文件,hbf,TeX Wiki上没有记载,在网上查了一下,是Hanzi Bitmap Font(汉字点阵字体)的意思,并且它需要hbf2gf这个程序,此程序可以从bin文件夹中找到。其实hbf并不是字体文件本身,它只是一个字体度量文件,真正的字体数据文件,从hbf文件的内容来看,应该是那些bin文件。
下一个为ofm文件夹,其构成为:\ofm\public\otf,也是单一结构。otf文件夹内的文件扩展名为ofm,这个,据网上说是Omega专用的,用来替换TFM的字体度量文件。而Omega,则是基于TeX,但由于改动太大已不能称之为TeX的支持Unicode的TeX扩展程序之一。我貌似还没有安装。
接下来是pk文件夹,\pk\cx\public\cm单一结构。cm内文件的扩展名为各种pk,比如.270pk、.300pk、.240pk等。用语集对pk文件的解释是,使用gftopk,将gf文件压缩后得到的压缩版点阵字体。pk字体的扩展名虽然是“.pk”,但在允许长文件名的环境下,常使用“<解像度>pk”来命名扩展名,如“.300pk”。
这里又提到了gf文件这个概念,gf(generic font)是由METAFONT生成的非压缩点阵字体数据。其扩展名虽为“.gf”,但在允许长文件名的环境下,常使用“<解像度>gf”来命名扩展名,如“.300gf”。
又引申出了METAFONT,什么是METAFONT呢?它是与TeX相对应的字体制作软件。当然,由于DVIware作者们的不懈努力,现在一般流行的,非由METAFONT制作的字体也可以在TeX中使用了(需在DVIware中进行相应的设定)。
接下来是sfd文件夹,这里直接包含有sfd文件若干。sfd文件,是Unicode号码与某种编码之间的文字编码对照表(副字体定义文件)。为了在CJK宏中使用,它常被用于以下用途:当使用按“Unicode号码顺序进行分割”了的TrueType字体时,向dvipdfm等DVIware或者ttf2tfm等工具通知“分割后字体中各个文字与分割前字体的文字号码上的对应关系”。
下面是source文件夹,source内子文件夹众多,但其包含的文件主要为以下三种:mf、vpl、pl。其中pl刚才已经查过了,所以下面看mf和vpl的解释。mf文件:由METAFONT所产生的字体的源文件。vpl(Virtual Property List):VF文件经过转换后的,能为人读懂的格式。
再下面就简单了,最后的三个文件夹分别是tfm、type1和vf,里面分别是tfm文件、pfb文件和vf文件,这三个分别在前面和上一篇已经搞定了。
于是,无量天尊,贫道对fonts文件夹内文件类型的学习至此结束了。虽仍一头雾水,却感获益颇丰。贫道会再接再厉,善哉善哉。
2007/12/2
字体
格物致知也不能格过分了,不然有限的时间就都用于钻牛角尖了。如果我是immortal,那随便我怎么折腾都行,但是……半辈子了啊。。。
通过中文Wikipedia上字体的词条和一个日语的書体関係 Wiki的说明,大致明白了一些困扰我很久的问题,摘录、翻译如下。
字体
字体按数据格式分类可分为点阵字体(Bitmap Fonts)和矢量字体(Vector Fonts)两种。矢量字体又包含笔画字体(stroke-based Fonts)和轮廓字体(Outline Fonts)。笔画字体主要用于CAD方面,因此割爱。
点阵字体
点阵字体顾名思义,是由点的集合构成的字体。适用于特定的解像度之下。当放大点阵字体时,构成文字的点也随之扩大,而文字就会显得粗糙。但是认真制作的点阵字体在预想的解像度和大小之下使用时,效果要远远高于轮廓字体。
点阵字体被用于Linux Console,Windows修复控制台和嵌入式系统。
BDF与PCF
点阵字体一般有BDF(Bitmap Description / Display Format)文件或者将其转换为二进制后的PCF(Portable Compiled Font)文件。一般来说,为了节省空间以及读取时间,多采用PCF或将其用gzip压缩后的格式。
轮廓字体
轮廓字体有PostScript、TrueType、OpenType三种格式。
Type 1字体
Type 1字体是由Adobe公司开发的字体,也叫PostScript字体。字形以3次贝兹曲线描述。文件构成方面,它包括内含字形轮廓数据的PFA(ASCII)或PFB(Binary)文件,和规定了字宽与文字间距等度量信息的AFM(Adobe Font Metrics)文件。Type 1字体只有1字节,因此只能容纳256个字符。要想使用中文字符,就需要复合字体,即将多个Type 1字体汇总而成的字体。这样的字体包括OCF字体(Original Composite Font)和CID字体(Character IDentifier Keyed Font),他们都是中文或日文等双字节语言可以使用的字体。现在主流的是CID字体,它具有异体字切换功能,即通过向复合字体的编码中录入CID字体独有的编码,来对应不同的字符集的功能。文件构成有,内含字形轮廓数据的CID文件、内含度量信息的AFM文件,以及用于管理CID编码的CMap(Character Mapping)文件。
True Type字体
True Type字体是由苹果和微软开发的,用于对抗PostScript字体的字体系统。它使用2次贝兹曲线来描述曲线,并可以内置点阵字体。True Type与Type 1不同,它的字形数据和度量数据位于同一文件内。
Open Type字体
Open Type字体是可以同时处理Type 1字体(包括CID字体)和True Type字体的字体合集。用户不必介意字体是Type 1还是True Type,可以以统一的模式使用。
2007/11/28
PostScript
texmf下的第五个文件夹是fonts,fonts的内容及其丰富,这我也看出来了,学习TeX,主要就是与各种字体及其处理方法打交道。也因此,我的学习之路进入关键的地方了。fonts的内容如右图所示,它里面的第一个子文件夹叫做afm,再往下虽然还有很多,但所装的都是扩展名为afm的文件。那么afm是什么呢?Wikipedia上面有答案,但是要读懂Wikipedia的解释,还要弄明白一些概念,首当其冲的就是PostScript字体是什么,而前提则是PostScript是什么这个问题。
下面译自Wikipedia上PostScript词条。
PostScript
PostScript是Adobe System于1984年开发并公布的页面表述语言。
PostScript是以Forth为基础的面向堆栈的编程语言,除各种计算、处理外更可执行描绘命令。其特征为,先将数据存入堆栈之内,之后施以命令对数据进行处理。因此其编译方式为完全的逆波兰式,而数据(post)后面施以命令(script)的表述方式即是其名称由来。
版本
1985年 – PostScript Level 1。初期版。
1990年 – PostScript Level 2。对应日语和彩色。
1996年 – PostScript 3。对应PDF格式。
概要
苹果电脑的LaserWriter打印机于1985年采用了PostScript。该打印机装备了摩托罗拉68000处理器和1.5MB内存,拥有与当时的个人电脑同等的计算能力,可以自己执行PostScript注释器以产生页面。同年,Linotype公司公布了采用了PostScript的imagesetter。
当时电脑与打印机之间通信速度缓慢,从而制约了印刷品品质的提高。然而,通过给予打印机以高速的计算能力并让其自身执行编程语言的大胆构想,这个问题得到了很好的解决。以前人们普遍认为传统印刷方法的品质要优于电子印刷,但随着PostScript的产生和应用,电子印刷迅速达到了商业印刷水平,并成为今天DTP普及的契机。
此后,PostScript也被用于印刷以外的行业,比如NeXT工作站采用了Display PostScript作为其描绘引擎。
现在,随着个人电脑性能的提高,电脑与打印机之间的连接速度也不断提高,因此个人用户也可以在个人电脑上安装PostScript注释器,并将由其产生的图像发送到打印机进行打印。
安装
PostScript绝大多数情况下都安装于激光打印机上。这样的打印机被称为PS打印机,是苹果电脑的标准打印机。Microsoft Windows上虽然也有应用,但或许由于要向Adobe System支付高额授权费用之故,其价格远高于一般的激光打印机,因此其用途多只限于DTP。
在软件方面,Epson等几个厂家通过他们的打印机销售了经由Adobe System授权的RIP(Raster image processor),但由于PS打印机的价格下调等原因,没有普及开来。另外,还有交互性软件GhostScript的存在。
2007/11/27
fontname
texmf下的第四个文件夹叫做fontname,在百度和Google上都没查到相关的信息,只好翻译文件夹里的README了。
This directory contains some supporting data files for fontname
translation. It also contains the TCX tables. See the Web2c and
Kpathsea manuals.
From: “Staszek Wawrykiewicz”
Subject: New tcx files
Thanks to suggestions from CSTUG and GUST members I prepared the new
versions of tcx tables. Below is draft of translate-file naming scheme:
1. The tcx filenames are at most 8 characters [...]
2007/11/27
dvipdfm
跳过第二个文件夹,即doc,因为里面都是各种说明文档。
texmf下的第三个文件夹是dvipdfm,里面只有一个config文件夹,config文件夹里面有dvipdfm.cfg和dvipdfmx.cfg两个文件。想都不用想,这就是dvipdfm.exe和dvipdfmx.exe的调配文件了。因为目的在于明白各个文件是干什么的,所以dvipdmf文件夹的解析就算是完成了。