这种因为段落最后一行太挤了,导致多出了一个空行,要怎么消除这个空行?
调整标点符号的方法不好使,因为内容比较多,这一段调整好了,其它段也有这样多出空行的情况:
调了一个MWE如下,Windows环境,字体使用系统默认的SimSun和KaiTi:
\documentclass[openany, zihao=5]{ctexbook}
\usepackage{geometry}
\geometry{a4paper, top=2.54cm, left=3.18cm, bottom=2.54cm, right=3.18cm, includehead=true}
\xeCJKsetup{CJKecglue={\hskip 0.1em plus 0.1em}} % 这些排版需求希望不要改
\setCJKfamilyfont{mysong}{SimSun}
\setCJKfamilyfont{mykai}{KaiTi}
\newcommand*{\mysongti}{\CJKfamily+{mysong}} % 阿拉伯数字也使用中文字体,这些排版需求希望不要改
\newcommand*{\mykaishu}{\CJKfamily+{mykai}} % 阿拉伯数字也使用中文字体,这些排版需求希望不要改
\def\cmda#1{\zihao{-4}\mysongti{#1}\vspace{0.3ex}\par} % \vspace{0.3ex}是希望排版额外增加段后间距。但是在某些临界情况下,好像会出现多出一行的问题
\def\cmdb#1{\zihao{5}\mykaishu{#1}\vspace{0.3ex}\par}
\begin{document}
% 如果\cmda命令里有\vspace{0.3ex},在这个极端情况下,就会多出一个空行
% 有没有办法,即使段落最后一行非常挤,也能多出0.3ex的段后间距,但又不会多出一个空行的段后间距?
\cmda{1王致伯于秦,2诸侯皆贺秦。3秦孝公使公子少官帅师会诸侯于逢泽以朝王。} % 或者干脆让这一行松一点,把“王。”成为新行?
\cmdb{1王致伯于秦,2诸侯皆贺秦。3秦孝公使公子少官帅师会诸侯于逢泽以朝王。}
\end{document}
在句号后面加 \xeCJKnobreak
。参考 https://github.com/CTeX-org/ctex-kit/issues/442#issuecomment-538661116
\documentclass[openany, zihao=5]{ctexbook}
\usepackage{geometry}
\geometry{a4paper, top=2.54cm, left=3.18cm, bottom=2.54cm, right=3.18cm, includehead=true}
\xeCJKsetup{CJKecglue={\hskip 0.1em plus 0.1em}} % 这些排版需求希望不要改
\setCJKfamilyfont{mysong}{SimSun}
\setCJKfamilyfont{mykai}{KaiTi}
\newcommand*{\mysongti}{\CJKfamily+{mysong}} % 阿拉伯数字也使用中文字体,这些排版需求希望不要改
\newcommand*{\mykaishu}{\CJKfamily+{mykai}} % 阿拉伯数字也使用中文字体,这些排版需求希望不要改
\def\cmda#1{\zihao{-4}\mysongti{#1}\vspace{0.3ex}\par} % \vspace{0.3ex}是希望排版额外增加段后间距。但是在某些临界情况下,好像会出现多出一行的问题
\def\cmdb#1{\zihao{5}\mykaishu{#1}\vspace{0.3ex}\par}
\begin{document}
% 如果\cmda命令里有\vspace{0.3ex},在这个极端情况下,就会多出一个空行
% 有没有办法,即使段落最后一行非常挤,也能多出0.3ex的段后间距,但又不会多出一个空行的段后间距?
\cmda{1王致伯于秦,2诸侯皆贺秦。3秦孝公使公子少官帅师会诸侯于逢泽以朝王。\xeCJKnobreak} % 或者干脆让这一行松一点,把“王。”成为新行?
\cmdb{1王致伯于秦,2诸侯皆贺秦。3秦孝公使公子少官帅师会诸侯于逢泽以朝王。}
\end{document}
他在评论区给了MWE,是
xeCJK
的 bug