CTeX-org / ctex-kit

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

xeCJK: 细化对盒子节点的判断 #528

Closed RuixiZhang42 closed 4 years ago

RuixiZhang42 commented 4 years ago

重构过程中发现的一个 bug:

% !tex program = xelatex
\documentclass{ctexart}
\begin{document}
测试文本(测试文本)

测试\hbox{\hbox{文本}(测试文本)}
\end{document}

indentbug

其中,\hbox{文本} 在左括弧之前,作为 \lastbox 的宽度恰好跟 \parindent 完全一样,于是错误地认为接下来的左括弧处于自然段首。相关代码: https://github.com/CTeX-org/ctex-kit/blob/dbf79a0dcb771d567176c974d03f0f8f4a711728/xeCJK/xeCJK.dtx#L4145-L4156 仅仅判断 { \box_wd:N \l_@@_tmp_box } = \tex_parindent:D 还不够,要不要再在 True 分支里面加一层

\dim_compare:nNnTF { \box_ht:N \l_@@_tmp_box } = \c_zero_dim

基于 indent box 的高度(和深度)为零。