中文标点间距不正确

中文标点间距不正确

使用 键入中文时xeCJK,句号和/或右方括号之间的间距太近。如何才能获得更自然的间距(例如,调整xeCJK设置以匹配下面的 Word 输出),而无需手动插入水平空格(如\thinspace)?

梅威瑟:

\documentclass[12pt,a4paper]{article}
\usepackage{fontspec}
\usepackage{xeCJK}
\setCJKmainfont{標楷體}
\XeTeXlinebreaklocale "zh" 
\XeTeXlinebreakskip = 0pt plus 1pt
\begin{document}
她說:「你好。」
\end{document}

输出:

在此处输入图片描述

Word 输出:

在此处输入图片描述

答案1

标点符号间距样式是可配置的。xeCJK中有 6 种预定义样式:quanjiaobanjiaokaiminghangmobanjiao和。您需要的是不改变标点符号原始宽度的样式。如果您能读懂中文,您应该读懂CCTplainplain包裹文件xeCJK第一的。

\documentclass[12pt,a4paper]{article}
\usepackage{xeCJK}
\setCJKmainfont{標楷體}
\xeCJKsetup{PunctStyle=plain}
\begin{document}
她說:「你好。」
\end{document}

在此处输入图片描述

顺便说一句,我删除了代码中无用的\XeTeXlinebreaklocale和。请注意,该包提供的功能比这更强大。\XeTeXlinebreakskipxeCJK

答案2

这就是您所寻求的吗?想法由此受到启发

在此处输入图片描述

代码

\documentclass[border=10pt,varwidth]{standalone}%[12pt,a4paper]{article}
\usepackage{fontspec}
\usepackage{xeCJK}
\setCJKmainfont{標楷體}
\XeTeXlinebreaklocale "zh" 
\XeTeXlinebreakskip = 0pt plus 1pt

\makeatletter
\newcommand\myc{\@ifnextchar:{「}{:\@}}
\newcommand\myp{\@ifnextchar。{」}{。\@}}
\makeatother

\begin{document}

她說:「你好。」


她說\myc「你好\myp」
\end{document}

相关内容