Closed stone-zeng closed 4 years ago
在当前实现中,输入
\ctexset{
part/hang = true
}
\part{标题标题标题标题标题标题}
内部会执行
\@hangfrom{ \CTEX@partname\CTEX@part@aftername }
% latex.ltx, line 6214:
\def\@hangfrom#1{\setbox\@tempboxa\hbox{{#1}}%
\hangindent \wd\@tempboxa\noindent\box\@tempboxa}
这里 \@hangfrom
把 #1
存入 hbox,所以在 #1
包含换行时报错。
在功能上,hang=true
和 aftername=\par
存在冲突,需要重新考虑这两个选项的关系。例如,考虑在设置 hang=true
时,总是把 aftername
初始化为一段 hskip?
相关源码 https://github.com/CTeX-org/ctex-kit/blob/dacf77095131f169f361437bf4e22dab830a3e7d/ctex/ctex.dtx#L7401-L7435 https://github.com/CTeX-org/ctex-kit/blob/dacf77095131f169f361437bf4e22dab830a3e7d/ctex/ctex.dtx#L7809-L7820
正常情况下 \par
在 \hbox
里并不报错,也合法,就是没有分段效果。这里报错的原因是 part 初始定义的的 aftername
里有一个 \vskip
,\vskip
确实是不能在水平盒子中。
关于这个选项冲突,代码实现层面没有什么好的解决办法,可在文档中说明。
@qinglee 您这个……
@Liam0205 XD
报错为:
加上
aftername = \quad
,即令 name 和 title 处于同一行后,就不再出现问题。ctexart
在scheme=chinese
时默认就是\quad
,所以不报错。