CTeX-org / ctex-kit

Macro Packages and Scripts for Chinese TeX users
976 stars 124 forks source link

ctex: 调用 luatexja 时的禁则处理 #534

Closed tanukihee closed 4 years ago

tanukihee commented 4 years ago

在 #513 下发现的问题,新开一个 issue

ctex 在调用 luatexja 时,似乎并未进行标点的禁则(避头尾)与标点同西文间距的处理?

\documentclass{article}
\usepackage{ctex}
\usepackage[text=9em]{geometry}
\usepackage{lua-visual-debug}

\begin{document}
一二三,四五六,七八(9,0)。
\end{document}

image

而直接调用 luatexja,效果正常。luatexja.lua 下有调用 ltj-kinsoku.tex 相关的语句,不止为何 ctex 在调用时未起作用。

\documentclass{article}
\usepackage{luatexja}
\usepackage[text=9\zw]{geometry}
\usepackage{lua-visual-debug}
\usepackage{luatexja-adjust}
\begin{document}
\parindent=2\zw
一二三,四五六,七八(9,0)。
\end{document}

image

手动调用 ltj-kinsoku.tex

\documentclass{article}
\usepackage{ctex}
\usepackage[text=9em]{geometry}
\usepackage{lua-visual-debug}
\usepackage{luatexja-adjust}

\makeatletter
\input ltj-kinsoku.tex\relax
% 或者 \include{ltj-kinsoku}
\makeatother

\begin{document}
一二三,四五六,七八(9,0)。
\end{document}

避头尾处理与间距处理在 ltj-kinsoku.tex 中得到规定,且其中规定可以较好地适用于中文排版。

tanukihee commented 4 years ago

破案了,ctex 进行禁则处理时,调用的是 ltj-kinsoku.lua

https://github.com/CTeX-org/ctex-kit/blob/60cf6f796763af4f6929e816ad9f3188f36bce0c/ctex/ctex.dtx#L4600-L4605

但 luatexja 在 8/7 的此次更新中,删去了 ltj-kinsoku.lua,改为提供 ltj-kinsoku.tex 文件,故而禁则处理失效了

luatexja 调用 ltj-kinsoku.tex 的代码也转移到了 luatexja.lua 中