如何设置全角右标点与西文标点之间的间距

发布于 2025-03-26 22:36:19

PunctStyle=quanjiao 时,全角右标点与西文逗号之间没有“标点挤压”:

\documentclass{ctexart}
\begin{document}
查看《手册》, 可以知道
\end{document}

image.png

希望实现的效果为
image.png

\XeTeXinterchartoks 机制可以做到,但是代码怎么写呢?有没有其他方法呢?

查看更多

关注者
0
被浏览
427
4 个回答
尊咾哎哟
尊咾哎哟 6天前
¥a^2+b^2=c^2¥. . .

详情xeCJK宏包手册的3.5 标点符号的处理

这里我有种错觉:既然您都知道PunctStyle这个key的存在,那应该能顺势从xeCJK手册后面摸排到专门处理标点符号的方法才对...

仅针对个别case的话(例如这里的,),可以使用\xeCJKsetwidth命令来修改其宽度。

MWE:

\documentclass{ctexart}

\xeCJKsetwidth{《》}{0.5em} %一次可对多个标点符号同时修改

\begin{document}

查看《手册》, 可以知道。

\end{document}

效果:
image.png

但如果是一般的全角标点宽度问题/全角标点与西文标点间距问题,可能得用到3.5.2中的命令了。

其实有点卡
其实有点卡 4天前
这家伙很懒,什么也没写!

xeCJK 对不同的字符设置了不同的字符类:
image.png
可见全角右标点是 3 类,半角右标点是 5 类,可以使用 \XeTeXinterchartoks 设置这两类标点之间的空白即可。

代码和效果如下:

\documentclass{ctexart}
\XeTeXinterchartoks 3 5 = {\kern-0.5em}
% \ExplSyntaxOn
% \XeTeXinterchartoks
%   \c__xeCJK_FullRight_class_int \c__xeCJK_HalfRight_class_int {\kern-0.5em}
% \ExplSyntaxOff
\begin{document}
查看《手册》, 可以知道\par
查看《手册》可以知道
\end{document}

image.png

其实有点卡
其实有点卡 2天前
这家伙很懒,什么也没写!

以下代码完美解决:

\documentclass{ctexart}
\ExplSyntaxOn
\xeCJK_pre_inter_class_toks:nnn {FullRight} {HalfRight} {\kern-0.5em}
\ExplSyntaxOff
\begin{document}
查看《手册》, 可以知道\par
查看《手册》可以知道
\end{document}
泪过无痕
泪过无痕 6天前
这家伙很懒,什么也没写!

这个问题里面,设置了若干标点特性。请注意“设为无效”的优先级顺序。
https://www.latexstudio.net/index/details/index/mid/4462.html
但是仍有两行(标红色)搞不定

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览