We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
强迫症一下,xeCJK 宏包对边缘处(例如:行首,行末)的标点挤压算法过于「激进」。例如,若句号出现在行末而后面仍有文本,那么这个句号字形右侧的空白将全部被挤压掉。我在想能不能保留半角宽,类似于《日本工业标准》,好处是密排汉字不至于错位太严重,要错位也是错位半个字。
xeCJK
% !TeX program = XeLaTeX \documentclass[linespread=1.25]{ctexart} \usepackage{xcolor} \setmainfont{SourceHanSerifSC-Regular.otf}[ Script = CJK Ideographic, Language = Chinese Simplified ] \setCJKmainfont{SourceHanSerifSC-Regular.otf}[ Script = CJK Ideographic, Language = Chinese Simplified ] \newcommand*\ideographicbaseline{-0.12} \newcommand*\cbox[1]{\fbox{\rule[\ideographicbaseline\ccwd]{0pt}{\ccwd}\rule{#1\ccwd}{0pt}}} \newcommand\drawgrid{% \setbox0\vbox{% \fboxrule0.05pt\fboxsep-\fboxrule \color{red}% \hbox{\cbox{1}\cbox{1}\cbox{0.5}\cbox{0.5}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{0.5}\cbox{0.5}}% \hbox{\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{0.5}\cbox{0.5}}% \hbox{\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}}% \hbox{\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}}% \hbox{\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}}% \hbox{\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}}% \color{blue}% \hbox{\cbox{1}\cbox{1}\cbox{0.5}\cbox{0.5}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{0.5}\cbox{0.5}}% \hbox{\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{0.5}\cbox{0.5}}% \hbox{\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}}% \hbox{\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}\cbox{1}}% }% \leavevmode\smash{\copy0}% } \usepackage[width=115.5bp]{geometry} \begin{document} “《千字文》第一句?”\par 该句号「挤压太多」。注意前两行都错位了!\par ……这个……还行?\par ……这个就不了……尴尬。 \xeCJKsetup{xeCJKactive=false} \hskip-5.25bp\relax “\hskip-5.25bp\relax 《千字文》第一句?\hskip-5.25bp\relax ”\hskip-5.25bp\relax \par 该句号「挤压太多」\hskip-5.25bp\relax 。\hskip-5.25bp\relax 这样做得到吗? \parindent0pt\relax \drawgrid \end{document}
(用 XeLaTeX 编译后)输出
其实……非常希望蓝色网络的那个效果是 xeCJK 的缺省设置……
The text was updated successfully, but these errors were encountered:
\xeCJKEditPunctStyle{quanjiao}{bound-punct-ratio=0.5}
或者
\xeCJKsetup{PunctBoundWidth=0.5em}
Sorry, something went wrong.
@qinglee 感谢提供解决思路,记得曾经试过 \xeCJKEditPunctStyle{quanjiao}{bound-punct-ratio=0.5},但是效果不全,\xeCJKsetup{PunctBoundWidth=0.5\ccwd} 的效果也不全(我文档里的 em 被调整过,\ccwd 是 CTeX 文档类的命令)。
\xeCJKsetup{PunctBoundWidth=0.5\ccwd}
em
\ccwd
更准确地说,以上两种方法只能「正确地」处理 MWE 中 」。 这一行行末的问题,对于行首的双引号、行末的省略号仍然压缩全部空白(行首这个问题会不会是个 bug?)。我觉得我的范例比较有代表性,兼顾了行首、行末出现「全角字框半角字面」标点的情形,还囊括了「全角字框全角字面」的标点(这个包括省略号、破折号、全角浪线),后者的挤压规则当然会不一样(如果还要再加一类,那就是居中对齐的间隔号,挤压时理想只挤压 0.25\ccwd)。
」。
0.25\ccwd
No branches or pull requests
描述问题
强迫症一下,
xeCJK
宏包对边缘处(例如:行首,行末)的标点挤压算法过于「激进」。例如,若句号出现在行末而后面仍有文本,那么这个句号字形右侧的空白将全部被挤压掉。我在想能不能保留半角宽,类似于《日本工业标准》,好处是密排汉字不至于错位太严重,要错位也是错位半个字。最小工作示例(MWE)
(用 XeLaTeX 编译后)输出
其实……非常希望蓝色网络的那个效果是
xeCJK
的缺省设置……The text was updated successfully, but these errors were encountered: