部署 ConTeXt

安装

目前,只有 ConTeXt Minimals (ConTEXt最小包)提供了最新的 ConTeXt 版本,而且可以与系统内其它 TeX 发行版和睦相处

ConTeXt Minimals 通过脚本安装,安装脚本会下载安装文件到当前目录。为了避免混乱,有必要手动为 ConTeXt Minimals 创建目录

export CTXDIR=/opt/context1
mkdir -p $CTXDIR
cd $CTXDIR        

1

这是推荐的目录

使用 rsync 下载 ConTeXt Minimals 的安装脚本:

rsync -ptv rsync://contextgarden.net/minimals/setup/linux/first-setup.sh .    
  • 同样,安装脚本也使用 rsync 下载安装文件。这种方式只下载升级过的文件,便于增量更新;也能够最大程度的降低网络不稳定所带来的影响

执行安装脚本[64](第一次安装可能会等待较长时间)

./first-setup.sh    
  • 升级到最新版本,也使用这个脚本

下载完所有文件后,安装脚本会自动配置 ConTeXt Minimals [65]

快速通道

新建一个 ctx 文件,内容如下:

export CTEXDIR=/opt/context1
source $CTEXDIR/tex/setuptex $CTEXDIR/tex 2
export OSFONTDIR="/usr/share/fonts/adobe" 3   

1

这里的目录为 ConTeXt Minimals 安装目录

2

ConTeXt 需要设置一些环境变量才能正常工作,使用 setuptex 脚本

3

OSFONTDIR 为字体路径变量,设置为系统中字体的实际路径,见“字体设置”一节

执行 source ctx 命令,设置好需要的环境变量,ConTeXt 工作环境便准备就绪

 

新建一个 a.tex 文件,内容如下:

% a.tex      %这里是注释
\starttext   %正文开始
Hello World. %正文内容
\stoptext    %正文结束 

执行 context a.tex 命令,会得到 a.pdf 文件

[提示] 提示
执行 context --purge 命令清除中间文件。
但保留中间文件可以提高编译速度

字体设置

下面是一个包含中文的 chinese.tex 文件

\usetypescriptfile[zhfonts]     %加载打印字体配置文件(typescript) zhfonts.tex
\usetypescript[myscript]        %使用打印字体配置文件中定义打印字体的脚本 myscript
\setupbodyfont[myfont,rm,11pt]  %设置正文字体
    
\setupindenting[always,2em,first]                  %设置中文缩进格式(首行缩进两字)
\setupheads[indentnext=yes]                        %每节的首段也要缩进
\setupinterlinespace[big]                          %设置行距(big=1.5倍)      
\setupwhitespace[medium]                           %设置段间距[small, medium, big]
\definepapersize[SCREEN][width=21cm,height=29.7cm] %设置页面尺寸
\setuppapersize[SCREEN][SCREEN]                    %纸张尺寸,通常和页面尺寸相同。(除非在印刷用纸上实现多页排版)    
    
\starttext
世界,你好!
\stoptext    

打印字体配置文件(typescript) 文件是一个 TeX 文件,要求与 chinese.tex 文件在同一目录,或者位于 ConTeXt Minimals 可以检索到的某个目录中[66]

新建一个打印字体配置文件(typescript),名为 zhfonts.tex,内容如下:

% engine=luatex
% \ctxlua{fonts.collections.trace = true}
\let\synchronizetext\relax
\synchronizemathfontsfalse

\spaceskip .25em plus .25em \relax

\definefontfeature[zh][mode=node,script=hang,lang=zhs]

\starttypescript [serif] [zhfont]
    \definefontsynonym
	[ZhSerif][name:AdobeSongStd-Light][features=zh]
    \definefontsynonym
	[ZhSerifBold][name:AdobeHeitiStd-Regular][features=zh]
    \definefontsynonym
	[ZhSerifItalic][name:AdobeKaitiStd-Regular][features=zh]
    \definefontsynonym 
	[ZhSerifBoldItalic][name:AdobeHeitiStd-Regular][features=zh]

    \definefontfallback
	[WesternSerif][name:TeXGyrePagella-Regular][0x0000-0x0400][force=yes]
    \definefontfallback
	[WesternSerifBold][name:TeXGyrePagella-Bold][0x0000-0x0400][force=yes]
    \definefontfallback
	[WesternSerifItalic][name:TeXGyrePagella-Italic][0x0000-0x0400][force=yes]
    \definefontfallback
	[WesternSerifBoldItalic][name:TeXGyrePagella-BoldItalic][0x0000-0x0400][force=yes]
 
   \definefontsynonym 
	[Serif][ZhSerif][fallbacks=WesternSerif]
    \definefontsynonym
	[SerifBold][ZhSerifBold][fallbacks=WesternSerifBold]
    \definefontsynonym
	[SerifItalic][ZhSerifItalic][fallbacks=WesternSerifItalic]
    \definefontsynonym
	[SerifBoldItalic][ZhSerifBoldItalic][fallbacks=WesternSerifBoldItalic]
\stoptypescript

\starttypescript [sans][zhfont]
    \definefontsynonym 
	[ZhSans][name:AdobeKaitiStd-Regular][features=zh]
    \definefontsynonym
	[ZhSansBold][name:AdobeHeitiStd-Regular][features=zh]
    \definefontsynonym
	[ZhSansItalic][name:AdobeKaitiStd-Regular][features=zh]
    \definefontsynonym
	[ZhSansBoldItalic][name:AdobeHeitiStd-Regular][features=zh]

    \definefontfallback
	[WesternSans][name:TeXGyreAdventor-Regular][0x0000-0x0400][force=yes]
    \definefontfallback
	[WesternSansBold][name:TeXGyreAdventor-Bold][0x0000-0x0400][force=yes]
    \definefontfallback
	[WesternSansItalic][name:TeXGyreAdventor-Italic][0x0000-0x0400][force=yes]
    \definefontfallback
	[WesternSansBoldItalic][name:TeXGyreAdventor-BoldItalic][0x0000-0x0400][force=yes]

    \definefontsynonym
	[Sans][ZhSans][fallbacks=WesternSans]
    \definefontsynonym
	[SansBold][ZhSansBold][fallbacks=WesternSansBold]
    \definefontsynonym
	[SansItalic][ZhSansItalic][fallbacks=WesternSansItalic]
    \definefontsynonym
	[SansBoldItalic][ZhSansBoldItalic][fallbacks=WesternSansBoldItalic]
\stoptypescript

\starttypescript [mono][zhfont]
    \definefontsynonym 
	[ZhMono][name:AdobeFangsongStd-Regular][features=zh]
    \definefontsynonym
	[ZhMonoBold][name:AdobeHeitiStd-Regular][features=zh]
    \definefontsynonym
	[ZhMonoItalic][name:AdobeFangsongStd-Regular][features=zh]
    \definefontsynonym
	[ZhMonoBoldItalic][name:AdobeHeitiStd-Regular][features=zh]

    \definefontfallback
	[WesternMono][name:TeXGyreCursor-Regular][0x0000-0x0400][force=yes]
    \definefontfallback
	[WesternMonoBold][name:TeXGyreCursor-Bold][0x0000-0x0400][force=yes]
    \definefontfallback
	[WesternMonoItalic][name:TeXGyreCursor-Italic][0x0000-0x0400][force=yes]
    \definefontfallback
	[WesternMonoBoldItalic][name:TeXGyreCursor-BoldItalic][0x0000-0x0400][force=yes]

    \definefontsynonym
	[Mono][ZhMono][fallbacks=WesternMono]
    \definefontsynonym
	[MonoBold][ZhMonoBold][fallbacks=WesternMonoBold]
    \definefontsynonym
	[MonoItalic][ZhMonoItalic][fallbacks=WesternMonoItalic]
    \definefontsynonym
	[MonoBoldItalic][ZhMonoBoldItalic][fallbacks=WesternMonoBoldItalic]
\stoptypescript

\starttypescript[myscript]
    \definetypeface[myfont][rm][serif][zhfont]
    \definetypeface[myfont][ss][sans][zhfont]
    \definetypeface[myfont][tt][mono][zhfont]
\stoptypescript    

下载中文字体[67],安装,并设置 OSFONTDIR 变量:

export OSFONTDIR="/usr/share/fonts/adobe"1    

1

中文字体的安装路径,建议写入 ctx 文件[68]

执行以下命令刷新文档数据库:

context --generate    

 

最后,使用 chinese.tex 文件生成 PDF

  context chinese.tex


[64] 需要 ruby 支持

[65] 期间可能会出现几次如下提示:

! I can't find file `core-swd'.    

键入core-swd.mkii即可

[66] $TEXMFLOCAL/tex/context/third

mkdir -p $TEXMFLOCAL/tex/context/third1
mv zhfonts.tex $TEXMFLOCAL/tex/context/third2
context --generate3    

1

$TEXMFLOCAL 目录下新建第三方目录

2

zhfonts.tex 文件移动到该目录

3

刷新一下文档数据库,就可以使用该字体配置文件了

[67] 这个配置文件使用 Adobe Creative Suite 4 中附带的四种字体

[68] 前面给出的 ctx 文件已设置此变量