ctex-kit icon indicating copy to clipboard operation
ctex-kit copied to clipboard

ctex: 支持 LuaTeXja 的更多功能

Open Man-Ting-Fang opened this issue 7 years ago • 3 comments

目前 ctex 貌似是通过避免读取 ltj-latex 来实现的。但是,我个人感觉,这里面有些功能是很有用、很合理的。我暂时还没有仔细看过,只举两个例子:

一、脚注与页底浮动体之间的顺序

当浮动体出现在页面底部(可以用 [b] 来测试)、而同时此页又有脚注时,LaTeX 默认是脚注在上、浮动体在下,这似乎不符合中文习惯,甚至未必符合西文习惯。pLaTeX 内核跟其他一些宏包都有处理这个问题,luatexja 对这些都做了补丁,但是 ctex 目前不读取相关文件,无法使用这些功能。直接使用其他宏包的话,则无法应用 luatexja 对它们打的补丁。

二、正文中脚注序号与标点之间的间距

虽说正文中脚注序号与标点孰先孰后目前似乎并无一定之规,各人偏好也有不同,但有些情况下可能确实需要脚注序号出现在标点之后,例如(尽管这两个问答里的某些观点我个人不是很赞同): https://www.zhihu.com/question/32145906 https://www.zhihu.com/question/21014960 中文通常使用全形标点,这样一来,脚注序号出现在标点之后时,如果不调整间距,会比较难看,例如这里的抱怨: http://bbs.ctex.org/forum.php?mod=viewthread&tid=71931 以及这里: https://www.zhihu.com/question/30846956 pLaTeX 内核以及 luatexja 都对此做了处理,但同样地,ctex 目前不读取相关文件,没有自动调整。

所以,我个人的希望是,最好能够逐一、仔细甄别 luatexja 的功能,尽量少禁用一些,或者提供控制开关,使用户能够选择是否禁用、甚至更进一步能够选择禁用哪些/类、不禁用哪些/类。当然,这样做会使 ctex 在不同引擎下的效果不完全一致,但类似的不一致目前在其他方面也有,而且,我个人觉得,既然是效果相较过去有所改善,就不必强求与过去一致。

以上只是我个人的想法,而且处理起来应该会比较费神,不过还是请 ctex 开发者们考虑一下~

Man-Ting-Fang avatar May 01 '18 03:05 Man-Ting-Fang

我的理解是,ctex 在功能之上,跟多的是为不同的底层引擎提供统一的上层接口。因此在不同引擎之间,保持兼容性是 ctex 的主要任务之一。考虑到 LuaTeX-ja 的这些功能,目前在其他引擎上不好实现,所以不便引入 ctex

Liam0205 avatar May 02 '18 01:05 Liam0205

我的理解是,ctex 在功能之上,跟多的是为不同的底层引擎提供统一的上层接口。因此在不同引擎之间,保持兼容性是 ctex 的主要任务之一。考虑到 LuaTeX-ja 的这些功能,目前在其他引擎上不好实现,所以不便引入 ctex。

其实,我不是想说主动新增什么新功能,只是希望能够 不要彻底禁用,如果用户有需要的话,可以 选择载入 相应功能(亦即,可以选择禁用与否),同时为兼容性考虑,可以设置为 默认不载入。当然,这只是我的简单想法,可能还是 naive 了。

不过,请容许我牢骚一下,xeCJK 也有很多在其他引擎上不易实现、或至少是尚未实现的功能,可是用户看了 xeCJK 的说明文档后,使用 XeLaTeX 编译时仍然可以放心大胆地使用这些功能,因为它们并未被禁用;然而,用户看了 luatexja 的说明文档后,使用 LuaLaTeX 编译时却发现有些功能无法使用(哪怕并无冲突),这令人十分困扰(虽说 ctex 说明文档对此有所提及,但并未(也不大可能)详细列举)。

另外,目前 ctex 也有为特定引擎做处理的(用户层面的)功能,例如 zhmap 选项,所以,为 LuaLaTeX 增加一些(用户层面的)选择性质 的功能,应该也是可以接受的。

Man-Ting-Fang avatar May 02 '18 05:05 Man-Ting-Fang

当时依赖 LuaTeX-ja 做中文支持的时候,LuaTeX-ja 的功能还没现在这么全面。你上面提到的这些功能包括比较重要的直排都是后来陆续开发出来的,我们没有进一步跟进,这确实是需要改进的地方。

qinglee avatar May 02 '18 10:05 qinglee