20230106-ConTeXt简介和中文排版效果

ConTeXt是什么

ConTeXt 是一种TeX 排版格式和宏包,TeX 及其衍生的排版格式 宏包通常用于排制 可能包含数学公式的高质量出版物,很多人使用纯TeX,但最流行的是latex 格式宏包,latex 有相当完善的中文支持

ConTeXt 继承了TeX的很多传统,兼容纯TeX 格式,但它的目标是排版高质量的通用文档

ConTeXt 目前通常使用LuaTeX (目前的后继者叫LuaMetaTeX 简称LMTX ) 作为引擎,ConTeXt 和LuaTeX 是同一个团队开发的,有活跃的社区

你可以在排版文档中使用ConTeXt TeX 和第三方宏包控提供的命令,以及自己定制的命令,来控制文档的排版效果,这样的排版文档也叫 排版脚本,你还可以在排版脚本中插入lua 代码,处理数据,干预引擎的行为

需要重复使用、分享的自制命令和lua 代码,可以制成模板和模块

下文会说到的,本人所做的ConTeXt 中文支持,即是模块的形式

你也可以在lua 脚本中通过luatex 接口使用ConTeXt 和tex 命令,实际上是在后台生成包含ConTeXt 和tex 命令的排版脚本,完成排版,这叫ConTeXt lua 文档 CLD 。这就是说,你既可以使用熟悉的tex 系命令和资源,还可以使用灵活的lua 语言,实现自动排版

最后,你几乎可以完全抛开 ConTeXt 和tex 命令,而在lua 端直接使用luatex ,比如生成引擎需要的结点列表数据等,完成排版。

ConTeXt 适合用来做什么

就排版内容来说,ConTeXt +LMTX 特别适合

排制结构化文档,如产品目录,数据表 图表,辞书,试卷 练习题 ,格式规范的图书,卡片

自动化排版,比如自动替换内容,随时根据内容变动更新排版,构建自动排版 网站后台排版流水线

精细排版,比如根据实时数据控制特定字符的格式

多语言排版

所谓结构化文档,格式规范的图书,跟复杂程度无关,而重点在于文档结构对应的排版格式,是否都可以转述为数量有限,可重复使用的排版命令,就是说,重复利用率越高越有价值,即越接近自动化排版

ConTeXt 难学吗

ConTeXt 用户

需要学习ConTeXt格式、命令,可以通过官网学习,教程可以看not-so-short-introduction-to-context(本人有汉译计划)。对技术有一些好爱的图书编辑可以做到

如果要精细排版,可能要学一些tex 知识

如果要实现自动化排版,通过lua 控制排版引擎,则需要学习lua cld 以及luatex luametatex

中文支持怎么样

我做了三个支持ConTeXt+LMTX中文排版的模块(链接为GitHub库):

  • 中文标点支持模块zhpunc,支持全角、半角、开明等常见标点样式,行端标点凸排/悬挂,以及竖排时可能用到的行间标点。此模块最初基于liyanrui/zhfonts,谨致谢忱!
  • 竖排模块vertical-typesetting
  • 双行夹注模块jiazhu

大体而言,目前已经实现中文排版的常见功能,包括竖排,可以尝试用于生产性的中文排版,如有问题和新需求,本人愿意支持,请注意,以上并非保证

已知问题,

较短的双行夹住有时过于稀疏

官方支持字符间断行和拉伸的脚本 hanzi 有个别错误,可以提供修正后的版本

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2015-2024 TeX_baitu
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~