CTeX-org / forum

A temporarily alternate forum of `bbs.ctex.org`
https://t.me/chinesetex
Apache License 2.0
210 stars 16 forks source link

能否实现英语句子中自动使用非中文字体的标点符号 #291

Closed zwz closed 1 year ago

zwz commented 1 year ago

检查

编译环境

描述问题

文档中可能会出现一些英语句子,其中可能还包含一些标点符号(例如单引号) 这时候,这个标点(见MWE,可以用article 替换 ctexart 进行效果对比)看起来和周边的英语不协调 不知道是否可以自动判断并处理这种情况

最小工作示例(MWE)

\documentclass{ctexart}
\begin{document}
Childrens' Day, just for test
\end{document}
muzimuzhi commented 1 year ago

这时候,这个标点(见MWE,可以用article 替换 ctexart 进行效果对比)看起来和周边的英语不协调

哪种不协调?建议提供截图,具体指出。

现在 mwe 里的单引号 '(U+27),总是使用西文字体排版的

muzimuzhi commented 1 year ago

补充:使用 \showbox 输出盒子内容,可以在 log 里看到具体某个字符使用了什么字体。

\documentclass{article}
%\documentclass[10pt]{ctexart}
\showboxbreadth=\maxdimen
\showboxdepth=\maxdimen

\begin{document}
\setbox0=\hbox{Childrens' Day, just for test}
\showbox0
\box0
\end{document}
% article.cls, 10pt
> \box0=
\hbox(7.05+2.04999)x122.04001
.\TU/lmr/m/n/10 Childrens’
.\glue 3.33 plus 1.665 minus 1.11
.\TU/lmr/m/n/10 Day,
.\glue 3.33 plus 2.08124 minus 0.888
.\TU/lmr/m/n/10 just
.\glue 3.33 plus 1.665 minus 1.11
.\TU/lmr/m/n/10 for
.\glue 3.33 plus 1.665 minus 1.11
.\TU/lmr/m/n/10 test

% ctexart.cls, 10pt
> \box0=
\hbox(7.05+2.04999)x122.04001
.\TU/lmr/m/n/10 Childrens’
.\glue 3.33 plus 1.665 minus 1.11
.\TU/lmr/m/n/10 Day,
.\glue 3.33 plus 2.08124 minus 0.888
.\TU/lmr/m/n/10 just
.\glue 3.33 plus 1.665 minus 1.11
.\TU/lmr/m/n/10 for
.\glue 3.33 plus 1.665 minus 1.11
.\TU/lmr/m/n/10 test
.\kern -0.0002
.\kern 0.0002

这里的 \TU/lmr/m/n/10 是一个由 \font 定义的 font selection command,根据 latex nfss 的命名约定,\TU/lmr/m/n/10 代表 TU encoding, Latin Modern Roman, medium weight (font series), upright shape, at 10pt。

zwz commented 1 year ago

我发现原来是我在 xeCJK.cfg 中做了一些字体设置导致的