-
Notifications
You must be signed in to change notification settings - Fork 125
New issue
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
如何基于 luatex-ja 实现 xeCJK 的 \CJKfamily+{} 的功能? #618
Comments
塞一个 |
考虑过这个解决方案,但是模板中配置了中易、思源等多种字体,而且 |
可以从对应于 \documentclass{ctexart}
\setCJKmainfont{SimSun}
\begin{document}
2022年5月2日(星期一)\par
{\makeatletter
\ExplSyntaxOn
\use:e { \cs_new:Npn \exp_not:N \__@@_fontspec:w #1 \token_to_str:N : } #2 at #3pt #4 \s_stop
{
\fontspec{#1}[RawFeature={#2}]
}
\RenewDocumentCommand \CJKfamily { t+ m }
{
\ctex_ltj_switch_family:x {#2}
\bool_if:nT {#1}
{
\DeclareFixedFont \l_tmp_font {\CJK@encoding} {\CJK@family} {\f@series} {\f@shape}
{ \fp_eval:n { \f@size * 1.00001 } pt }
\exp_after:wN \__@@_fontspec:w \tex_fontname:D \l_tmp_font at 10.0pt \s_stop
}
\tex_ignorespaces:D
}
\ExplSyntaxOff
2022年5月2日(星期一)
\CJKfamily+{zhsong}
2022年5月2日(星期一)
\CJKfamily+{zhkai}
2022年5月2日(星期一)
}
\end{document} |
@Sophanatprime |
覆盖原本的设定在本例中应该问题不大吧。否则就使用 latex3/unicode-math#515 (comment) 动态确定了。 |
问题源自 tuna/thuthesis#771。
xeCJK
的\CJKfamily+{}
可以使包括西文字符在内的所有字符都使用当前的 CJK 字体,这一功能在实现宋体的数字时比较方便。不过ctex
在使用 LuaTeX 编译时虽然也提供了\CJKfamily{}
命令,但是并没有\CJKfamily+
对所有字符有效的功能。如果基于luatex-ja
让西文字符使用 CJK 字体,尤其是对数字(0~9)和括号等符号?luatex-ja
可以使用\ltjdefcharrange
和\ltjsetparameter{jacharrange = {-1, +2}}
设置部分字符选择 CJK/西文字体,但这一方法不能用于 U+0000–U+007F,包括数字和括号。另外需要考虑的一点是,需要使用 CJK 字体的内容是由用户录入的,保存在
\thu@date
的宏中,所以不能直接使用\ltjjachar`2
的方式。xeCJK 的效果:
使用 LuaTeX 编译时会给出警告
Package ctex Warning: Unknown CJK family `+' is being ignored.
。The text was updated successfully, but these errors were encountered: