面对 ConTeXt MkIV,弯曲或者折断

LiYanrui posted @ Apr 24, 2008 04:32:22 AM in Dream of TeX with tags ConTeXt luatex , 6359 阅读

这两天,正式使用 ConTeXt MkIV来写文档。初,我还很愉悦地写道:“写文档是一件很费心伤神的事情,但是有 ConTeXt MkIV 的帮助,写文档就变成了一种快乐。“ 而今,我却为 MkIV 苦不堪言。譬如,我想在文档中插入一副图片,使用 \placefigure 指令,结果图片标题中的每个汉字都间距着一个空格,而且图片后面的第一个段落的首行缩进也没有了。譬如下图所示这副鬼样子:

图片标题中汉字的间隔问题,估计是 MkIV 制定的中文断行规则有问题。没有办法,只好自定义了一个专用于图片标题的字体,并将其挂到图片标题风格的设定中:

\font\labelfont=name:AdobeHeitiStd-Regular at 11pt
\setupcaptions[style=\tfx\labelfont]

对于图片之后的段落首行缩进问题,可以通过在 \placefigure 指令后缀上一个 \blank 指令来解决:

\placefigure[here,force][fig:mindmap-struct]
        {思维导图一般结构}
        {\externalfigure[box-fig-1][width=.6\textwidth]}\blank[disable]

经过如此蹩脚地修补之后,看上去就有些顺眼了:

当我在文档中使用 \starttyping ... \stoptyping 指令试图插入一段代码时,又发现一个很恼人的问题,源文档中代码是有缩进的,但是排版后,所有的缩进都没有了:

对源文档采用 pdfTeX 编译,代码中的缩进是正常的,这让我非常非常郁闷了好大一会。后来想起 Hans 所写的 MkIV 文档中对于代码的排版是正确的,于是就从 http://context.aanhet.net/svn/manuals/mk/ 上找了一份 MkIV 文档的源码,发现 MkIV 文档中的代码缩进并非是 Tab 缩进,而是空格缩进。当我把 vim 的 Tab 设置为 expandtab 后,代码缩进就正常了:

虽然遭遇的都是些小问题,但是感觉很窝囊。这些问题,也许应该反映到 ConTeXt 邮件列表中,但过于胆怯自己的英文交流能力,还是等一段时间再说。

现在,我好像是手中的尺子,正在被折弯,幸好还能够适应这种现状。不知道日后如果会遇到我怎么耍弄小聪明也无法解决的问题,那时我是否会被折断,是选择放弃,还是会去邮件列表灌水发泄。

Yue Wang 说:
2008年4月25日 02:33 starttyping的问题有ConTeXt开发者提出的,结果Hans没回复。你可以在他的下面吼一下。搜索Aditya Mahajan的Bug with typing in mkiv
Yue Wang 说:
2008年4月25日 02:38 你说的图片后的indent的问题可能是你自己的问题,抱歉我手头没有中文的文档可以测试,不过下面的文档是正确的。 \setupindenting[always,1em,first] \starttext \setupfloats[indentnext=yes] \indent Here, a new paragraph shall begin -- indented! \placefigure[here,force][fig:mindmap-struct]{}{} Here, a new paragraph shall begin -- indented! \stoptext
Avatar_small
LiYanrui 说:
2008年4月25日 02:58

图片后段落首行缩进,英文的我也测过,没有问题。但是中文的就有问题,你可以用下面的这份文档测试一下:

\definefontfeature[chinese][mode=node,script=hang,lang=zhs]
\definefontsynonym[songti][name:AdobeSongStd-Light][features=chinese]
\definefontsynonym[Serif][songti]

\definetypeface[song][rm][serif][songti]
\setupbodyfont[song,12pt,rm]

\setupindenting[always,2em,first]

\starttext
和风熏柳,花香醉人,正是南国春光漫烂季节。福建省福州府西门大街,青石板路笔直的伸展出去,直通西门。一座建构宏伟的宅第之前,左右两座石坛中各竖一根两丈来高的旗杆,杆顶飘扬青旗。

\placefigure[here,force][fig:mindmap-struct]{测试图片}{}

五骑马一出城门,少镖头林平之双腿轻轻一挟,白马四蹄翻腾,直抢出去,片刻之间,便将后面四骑远远抛离。
\stoptext
Avatar_small
LiYanrui 说:
2008年4月25日 02:59

比较奇怪的是,当\placefigure 后面的段落如果是英文的,那么图片标题中出现的汉字之间就不会有空白间隔。

Yue Wang 说:
2008年4月25日 03:25 你确定加了\setupfloats[indentnext=yes] ?我这里没有中文字体可以试,我考完G好好看看。
Avatar_small
LiYanrui 说:
2008年4月25日 03:37 惭愧,惭愧,把 \setupfloats[indentnext=yes] 给漏了。现在段落缩进的问题正常了,不过图片的标题中的汉字空白间隔的问题依然存在。
Avatar_small
LiYanrui 说:
2008年4月25日 03:44 \placefigure 语句中,如果插入 \externalfigure,图片标题汉字之间的空白间距就很大;否则,空白间距很小,但可确定它们是存在的。

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter