CTeX-org / ctex-kit

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

CheckSingle不起作用 #565

Closed ostaith closed 3 years ago

ostaith commented 3 years ago

MWE如下:

\documentclass[openany, zihao=5]{ctexbook}

\usepackage{geometry}

\geometry{a4paper, top=2.54cm, left=3.18cm, bottom=2.54cm, right=3.18cm, includehead=true}

\xeCJKsetup{CheckSingle=true, 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\xeCJKnobreak}\vspace{0.3ex}\par} % 如果不加\xeCJKnobreak会有另外一个空白行的问题
\def\cmdb#1{\zihao{5}\mykaishu{#1\xeCJKnobreak}\vspace{0.3ex}\par} % 不管加不加\xeCJKnobreak,CheckSingle都不起作用

\begin{document}

\cmda{1这是第一段,2测试这是第。3二段测试这是第三段测试这是第四段测试这。}
\cmdb{这。《是第》一:“段测试这是第二,段测试这是第三。”段测试《这是第四》,段测试这是。}

\end{document}

2021-03-21 0-52-15

muzimuzhi commented 3 years ago

这样可以

\def\cmda#1{\zihao{-4}\mysongti#1\par\vspace{0.3ex}} % 如果不加\xeCJKnobreak会有另外一个空白行的问题
\def\cmdb#1{\zihao{5}\mykaishu#1\par\vspace{0.3ex}}
ostaith commented 3 years ago

非常感谢!请问是什么原理呢?编组还不能乱用吗?

muzimuzhi commented 3 years ago

如果这倒数三个字有作为控制序列的参数的情况,那么一般来说也不能正确处理。

你例子里的 \xeCJKnobreak\vspace 都是控制序列。