summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/context/third/context-notes-zh-cn/src/basis.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/context/third/context-notes-zh-cn/src/basis.tex')
-rw-r--r--Master/texmf-dist/doc/context/third/context-notes-zh-cn/src/basis.tex234
1 files changed, 234 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/context/third/context-notes-zh-cn/src/basis.tex b/Master/texmf-dist/doc/context/third/context-notes-zh-cn/src/basis.tex
new file mode 100644
index 00000000000..4583db0f02e
--- /dev/null
+++ b/Master/texmf-dist/doc/context/third/context-notes-zh-cn/src/basis.tex
@@ -0,0 +1,234 @@
+\startcomponent basis
+\product ctxnotes
+
+\chapter{让 \CONTEXT\ 工作起来}
+\bookmark{让 ConTeXt 工作起来}
+
+目前,只有 \ConTeXt\ Minimals(\ConTeXt\ 最小包)提供了最新的 ConTeXt 版本并且可以使之与系统所安装的其它 TeX 发行版友好共存。本章介绍 \ConTeXt\ Minimals 的安装、基本使用以及 MkIV 的中文支持等知识,目的在于让你多快好省地拥有一个 \CONTEXT\ 文档编译环境。本章的最后介绍了一些初学者应当阅读的文档以及一些学习资源。
+
+\section[installmkiv]{\ConTeXt\ Minimals}
+\bookmark{ConTeXt Minimals}
+
+首先,在本地机器上创建一个 \ConTeXt\ 安装目录,该目录的位置与名字视个人嗜好而定,我喜欢用 \type{/opt/context}。为了不引起混乱,下文提及 \ConTeXt\ 安装目录皆以如下设定的 Bash 变量 \type{$CTXDIR} 代替:
+
+\starttyping
+$ export CTXDIR=/opt/context
+$ mkdir -p $CTXDIR
+\stoptyping
+
+然后下载 ConTeXt 最小包安装脚本,将其存放于 \type{$CTXDIR} 目录并执行:
+
+\starttyping
+$ cd $CTXDIR
+$ rsync -ptv \
+rsync://contextgarden.net/minimals/setup/linux/first-setup.sh .
+$ ./first-setup.sh
+\stoptyping
+
+由于安装脚本需要联网下载 \ConTeXt\ Minimals,需要等待一段时间才可以完成安装。这段时间,你可以做点自己喜欢做的事情。
+
+\ConTeXt\ Minimals 安装完毕后,就开始进行 \ConTeXt\ 运行环境的配置,这需要设置许多的系统环境变量。不过莫要担心,\ConTeXt\ Minimals 提供了一个配置脚本,使用 source(亦称点命令)命令加载该文件即可完成所有 \ConTeXt\ 所需环境变量的设定。
+
+\starttyping
+$ . $CTXDIR/tex/setuptex $CTXDIR/tex
+\stoptyping
+
+上述命令行可将 setuptex 配置文件中的诸多环境变量的设定在当前终端环境中保持有效性。这意味着,每次使用 \ConTeXt\ Minimals,可以开一个终端窗口,然后执行一次上述命令,之后就可以在该终端中使用 \ConTeXt\ 环境。如果需要使用系统所安装的其它 \TeX\ 发行套件,可另建一个未开启 \ConTeXt\ 环境的终端即可。
+
+虽然每次启用 \ConTeXt\ Minimals 所输入的命令行并不复杂,但是尽力让命令行简约且易于输入一向是 Unix-like 系统的光荣传统,因此我在 \type{$HOME/myscript} 目录下建立了一个配置文件 ctx,该文件内容如下:
+
+\starttyping
+export TEXDIR=/opt/context/tex
+source $TEXDIR/setuptex $TEXDIR
+export OSFONTDIR="/usr/share/fonts/{adobe,winfonts}"
+\stoptyping
+
+然后将 \type{$HOME/myscript} 目录添加到系统环境变量 \type{$PATH} 并使之生效:
+
+\starttyping
+$ echo "PATH=$PATH:$HOME/myscript" >> ~/.bashrc
+$ . ~/.bashrc
+\stoptyping
+
+这样,以后每次启用 \ConTeXt\ 环境时,只需执行以下命令:
+
+\starttyping
+$ . ctx
+\stoptyping
+
+注意,在 ctx 文件中设置了 \type{$OSFONTDIR} 变量,该变量的意义在下一章讲述 MkIV 中文排版时会进行详细阐述,现在可不予理会。
+
+使用 \type{ctxtools} 命令并配合 \type{-updatecontext} 参数可对所安装的 \ConTeXt\ Minimals 进行在线升级,不过前提是要建立 \type{$TEXMFLOCAL} 目录。因为 \ConTeXt\ Minimals 升级包是一个 zip 压缩档,升级时会将该压缩档下载到 \type{$TEXMFLOCAL} 目录并进行解压缩。
+
+\CONTEXT\ Minimals 的升级很简单,那就是再重装一遍。
+
+\section{若需要 \TeX\ 与 \LaTeX}
+\bookmark{若需要 TeX 与 LaTeX}
+
+\ConTeXt\ Minimals 可以与其它 \TeX\ 发行套件友好共存。最近,我打算使用 \XeTeX\ + plain \TeX\ 格式写一份文档,但是 \ConTeXt\ Minimals 默认未提供 \XeTeX\ 的 plain \TeX\ 格式并且缺乏一些 plain \TEX\ 必须的字体,因此基于 \XeTeX\ 的 plain \TEX\ 及 \LATEX\ 环境均无法正常运行。对于这个问题,我能想到的比较轻省的解决方案是安装一个 \TeX\ Live 2008,使用它所包含的 plain \TeX\ 环境,另外再安装一个 \LATEX\ 环境以备不时之需。
+
+首先从清华的 CTAN 镜像 FTP 服务器下载 \TEX\ Live 2008 的网络安装程序并解包:
+
+\starttyping
+$ wget ftp://ftp.tsinghua.edu.cn/mirror/CTAN/systems/texlive/\
+tlnet/tldev/install-tl-unx.tar.gz
+$ tar -zxvf install-tl-unx.tar.gz && cd install-tl-unx
+\stoptyping
+
+\TEX\ Live 2008 的安装程序兼顾了不同用户的软件使用习惯,同时提供了文本界面与图形界面两种安装模式:
+
+\starttyping
+$ install-tl # 文本界面安装
+$ install-tl --gui # 图形界面安装模式
+\stoptyping
+
+\type{install-tl} 程序在运行时会自动访问预设定的 CTAN 镜像 FTP 服务器,如果连接失败,安装过程也就终止了。对于国内用户,可以通过 \type{--location} 参数将 CTAN 镜像服务器设为清华的 FTP:
+
+\starttyping
+$ install-tl --location=ftp://ftp.tsinghua.edu.cn/\
+mirror/CTAN/systems/texlive/tlnet/tldev
+\stoptyping
+
+如果网速足够,那么应当很快就可以在终端中显示文本安装界面了,具体的安装过程应当参考 \TEX\ Live 2008 中文指南\footnote{http://tug.org/texlive/doc/texlive-zh-cn/}。\TEX\ Live 2008 成功安装后,只要不在终端中开启 \ConTeXt\ Minimals 的 \ConTeXt\ 环境,就不会影响它的使用。
+
+\section[helloworld]{Hello World}
+
+将下面代码使用文本编辑器保存为 hello-world.tex 文件,这就是一个最简单的 \ConTeXt\ 源文档。
+
+\starttyping
+% hello-world.tex
+\starttext
+Hello World.
+\stoptext
+\stoptyping
+
+我们可以在终端中使用 \type{context} 命令将这份源文档编译、输出为 PDF 文档:
+
+\starttyping
+$ . ctx
+$ context hello-world
+\stoptyping
+
+上述命令将在当前目录产生 hello-world.pdf 文档,使用 PDF 阅读器查看它,可以看到文档中除了“Hello World.”字串之外,就剩下一个置于顶端的页码了。
+
+在编译 hello-world.tex 时,生成了许多中间文件,如果你不喜欢看到它们,可以使用以下命令将其清除:
+
+\starttyping
+$ context --purge
+\stoptyping
+
+\section{\TeX\ 与 \ConTeXt\ 的关系}
+\bookmark{TeX 与 ConTeXt 的关系}
+
+在上一节 hello-world.tex 文档的编译过程中,我们可以获得的直观认识如下图所示:
+
+\setupFLOWcharts[nx=3,ny=1,
+ dx=2\bodyfontsize,dy=4\bodyfontsize,
+ width=8\bodyfontsize, height=4\bodyfontsize,
+ maxwidth=.8\textwidth]
+
+\startFLOWchart[context-flow]
+
+\startFLOWcell
+\name{texfile}\location{1,1}\shape{singledocument}
+\text{\ConTeXt\ 源文档}
+\connection[rl]{context}
+\stopFLOWcell
+
+\startFLOWcell
+\name{context}\location{2,1}\shape{}
+\text{\ConTeXt\ 程序}
+\connection[rl]{pdf}
+\stopFLOWcell
+
+\startFLOWcell
+\name{pdf}\location{3,1}\shape{singledocument}
+\text{PDF 文档}
+\stopFLOWcell
+
+\stopFLOWchart
+
+\placefigure[force][fig:context-flow]{\ConTeXt\ 文档编译过程的直观认识}
+ {\FLOWchart[context-flow]}
+
+实际上是没有所谓的“\ConTeXt\ 程序”的,真正实现 \TeX\ 文档编译的的是 \TeX\ 引擎。在 \ConTeXt\ MkIV 中,\type{context} 程序只是一个脚本文件,只有一行代码:
+
+\starttyping
+mtxrun --script context "$@"
+\stoptyping
+
+\type{mtxrun} 是一个 Lua 脚本,它需要调用 Lua\TEX\ 引擎并读入 cont-en.fmt 文件才可以对 \ConTeXt\ 文档进行编译处理。cont-en.fmt 是 \ConTeXt\ 的格式文件,可以将它理解为一本词典,当编译 \ConTeXt\ 文档时,Lua\TeX\ 引擎遇到文档中的排版命令时,就去 cont-en.fmt 文件中查找这些排版命令的定义并依命行事。可还记得 2.3 节中使用 \type{context --make} 命令么?这个命令就是用于产生 cont-en.fmt 之类的格式文件的。这就是为什么我们经常说 \ConTeXt\ 或 \LaTeX\ 是 \TeX\ 的一种格式的原因。
+
+\section{让 MkIV 讲中文}
+
+要让 \ConTeXt\ MkIV 讲中文,首先要让它能够找到中文字体所在。还记得 \in{}[installmkiv]\ 节中我们写的那个 \ConTeXt\ 环境配置文件 ctx 么?其中有一行代码如下:
+
+\starttyping
+export OSFONTDIR="/usr/share/fonts/{adobe,winfonts}"
+\stoptyping
+
+\type{$OSFONTDIR} 可以让 Lua\TeX\ 知道系统所安装的字体所在。
+
+我在 \type{/usr/share/fonts/adobe} 目录中存放了 4 款 Adobe OTF 中文字体,在 \type{/usr/share/fonts/winfonts} 目录中存放了一些从 Windows XP 中复制过来的一些中文字体。
+
+有了中文字体,还需要一份字体配置文件。\ConTeXt\ 提供了一套比较高级的字体机制,叫做 Typescript,它可以设置三种字型:衬线 (Serif)、非衬线 (Sans)与等宽 (Mono) 字型。这三种字型均为英文字体机制中的术语,就像我们中文字体有楷体、宋体、黑体等类型一样。\ConTeXt\ 的 Typescript 机制牵涉太多的字体知识,对它们的详细描述已超出我之所能,这里仅给出一份我照猫画虎搞出来的的一份字体配置文件——\type{zhfonts.tex},它是随这份文档一起发布的,只需将它放到 \type{TEX} 目录树中,譬如:
+
+\startniceTEX
+$ mkdir -p $TEXMFLLOCAL/tex/context/third
+$ mv zhfonts.tex $TEXMFLLOCAL/tex/context/third
+\stopniceTEX
+
+\noindent 然后执行:
+
+\starttyping
+$ context --generate
+\stoptyping
+
+\noindent 刷新一下文档数据库,就可以使用该字体配置文件了。
+
+在 zhfonts.tex 中,我使用了 Adobe 宋、黑、楷体作为主要的中文字体。如果你没有这些字体,可以将其替换为其它 TTF 或 OpenType 中文字体,但是要保证 Lua\TEX\ 可以找到它们。由于中文字体所包含的英文字形通常比较丑陋,因此在 zhfonts.tex 文件中利用了 MkIV 的混合字体机制,将 lmroman、lmsans、lmmono 以及它们的粗体的英文字形区域分别注入到相应的中文字体中。
+
+现在,将 \in[helloworld] 节中的 hello-world.tex 文档修改为:
+
+\startTEX
+\usetypescriptfile[zhfonts]
+\usetypescript[myfont]
+\setupbodyfont[myfont,rm,11pt]
+\starttext
+世界,你好!
+\stoptext
+\stopTEX
+
+重新编译这份文档,即可得到中文版的 hello-world.pdf 文档。
+
+\tex{usetypescriptfile} 命令用于加载 typescript 文件,要求 typescript 文件与 helloworld.tex 文件均在同一目录或者前者位于 \ConTeXt\ Minimals 的某个可以检索到的目录中。
+
+\tex{usetypescript} 命令表示使用 typescript 文件中定义的 typeface。所谓 typeface,就是一个字型族。在 zhfonts.tex 文件中所定义的 typeface为 myfont,该字型族包含了 3 种字型:Serif、Sans 与 Mono。\tex{setupbodyfont} 命令是用于定义 hello-world.tex 文档的默认字体,也就是正文字体,这里是将 myfont 字型族中的 Serif 字型作为文档的默认字体,并且默认尺寸为 11pt。
+
+现在,MkIV 基本上已经解决了中文排版问题,我们应当为此感谢 Hans、Taco 等开发者的辛勤劳动。另外,还要感谢 Wang Yue、SDE 诸位同学,他们提出了许多有关 \ConTeXt\ 中文支持的要求并报告了许多 bug。特别是 Wang Yue 同学,自去年始,一直在关注 Lua\TeX\ \& \ConTeXt\ MkIV 等项目的发展,并积极地与开发者们沟通,使得开发者认真考虑了有关中文处理的诸多需求。
+
+\section{开始 \ConTeXt\ 的旅程}
+\bookmark{开始 ConTeXt 的旅程}
+
+\ConTeXt\ MkIV 中文支持的成功尝试,奠定了我开始学习 \ConTeXt\ 的信心。\CONTEXT\ 的文档非常丰富,不过大部分都是英文的,这多少让我有点沮丧。虽然读英文文档不是什么大障碍,但是总没有中文文档来得亲切。现状如此,只好忍了。
+
+目前,\ConTeXt\ 的大多数文档是针对 MkII 版本的,除了 MkIV 手册之外,似乎再也没有其它文档来讲述 MkIV 的应用。不过,由于 MkIV 改变的主要是 \CONTEXT\ 底层,用户界面基本上没有改变,对于中文用户而言,基本上只需将 MkII 的中文字体支持机制改换为 MkIV 的即可,这样原来适用于 MkII 的文档基本上也适用于 MkIV。现在,\ConTeXt\ 项目组现在正在组织进行新的 \ConTeXt\ 文档撰写,这个工程非常浩大,其意在于将这么多年零散的文档汇总到一起,并追随 \CONTEXT\ 的最新进展,估计要到明年方能竣工。远水解不了近渴,现在学习 \CONTEXT,还是要从 MKII 版本的文档开始。
+
+作为初学者,{\it\ConTeXt, an excursion}\cite[ms-cb-en]文档是官方制作的新手入门必读文档。\ConTeXt\ 的官方文档通常是分为屏幕阅读版本与打印版本,我读的 {\it\ConTeXt, an excursion} 是屏幕阅读版本,第一次打开这份文档,就惊愕了一下,没想到 PDF 文档居然可以做得如此精致。内容浅显易懂,文档版面美观,我觉得 \ConTeXt\ 是非常礼遇初学者的。
+
+当读过 {\it\ConTeXt, an excursion} 时\footnote{实际上我是用到什么就去看什么,现在大概看了有一半内容。},就可以使用 \ConTeXt\ 排版手头上正在写作的一些文档,其实这才是真正的开始学习 \CONTEXT。对于其它任何一种 \TEX\ 都是如此,只有真正开始使用它,才有可能掌握它。一开始,文档的版面丑点没关系,毕竟内容是最重要的。随着对 \CONTEXT\ 的认识日益深刻,你的文档便会愈发具备可观赏性。在实践的过程中,\CONTEXT\ 用户手册\cite[cont-eni]是主要的参考书。当你遇到不解的命令/参数,或者想了解一些命令更多的细节,都可以使用 PDF 阅读器打开 \CONTEXT\ 用户手册,利用阅读器提供的查询功能找到你所感兴趣的内容,并掌握它们。
+
+字体在排版中是决定版面美观的重要因素,阅读 \CONTEXT\ 新手册中已经基本完工的 {\it fonts}\mycite{fonts} 部分,便可以理解 \CONTEXT\ 的字体机制,你将获得可以在 \CONTEXT\ 自如使用你喜欢的字体的能力;同时,我制作的那份 MkIV 中文字体配置文件也不再会令你感到困惑。
+
+若使用 \ConTeXt\ 排版时存在矢量图绘制需求,推荐使用 \METAPOST。不过,在 \ConTeXt\ 中,我们要面对的不是 \METAPOST,而是 \METAFUN\mycite{metafun},后者对前者进行了封装,实现了 \CONTEXT\ 与 \METAPOST\ 的完美结合。{\it\ConTeXt, an excursion} 文档版面之所以美观,是因为在排版中大量使用 \METAFUN 来美化版面布局的结果。
+
+若你对 \ConTeXt\ 已经有所认识,那么 \ConTeXt\ Wiki\footnote{\type{http://wiki.contextgarden.net/Main_Page}} 是非常好的网络学习资源。若有能力,可以在该 Wiki 上与整个世界的 \ConTeXt\ 用户分享你的学习经验;若暂时没能力,可以选择潜水。目前,我是这个 Wiki 众多潜水员中的一名。
+
+目前,\CONTEXT\ MkIV 也许还存在许多的 bug,当你发现它们,应当提交 \CONTEXT\ 邮件列表\footnote{http://archive.contextgarden.net/list/context.en.html}中;当你使用 \CONTEXT\ 时有不解的问题,也可以去邮件列表中寻找答案。说来惭愧,我英文不好,并且不熟悉邮件列表的交流规则,所以一直都胆怯于邮件列表上的交流。
+
+介绍了以上学习资源之后,我开始如释重负。以后再在这份文档上折腾,心里就不会总是想着自己在写一本 \CONTEXT\ 教程,那样子很累,并且很容易丧失乐趣。这份笔记的真正的意图是自我备忘,将它投放到网络上,是希望我的经验能够对他人有所帮助并且能够一同学习、讨论 \CONTEXT\ 排版知识。
+
+\vfil
+\midaligned{\color[gray]{\bfa Just for fun!}}
+
+\stopcomponent