Open sergey-s-betke opened 8 years ago
Однако... Лучше бы обеспечить совместимость с Unicode-math
, ещё лучше - принудительно использовать этот пакет. В нём масса опций, которые решат уже возникшие проблемы. В частности - #147.
Однако, проблема #156 остаётся на месте при использовании Unicode-math
.
Для того, чтобы Unicode-math
сам переопределил symbols
и largesymbols
необходимо добавить math
скрипт в шрифт (#165).
Объявление скрипта math
в шрифте проблемы #156 не решает.
И всё-таки... Модуль Unicode-math
нужно отключать и на него ругаться о несовместимости. Всё равно никаких проблем он не решил, но создал. В таком случае проще подглядеть в нём отдельные решения, чем иметь проблемы с fontspec
.
Стоит проверить загрузку и других пакетов, отключающих необходимую нам обработку в fontspec
.
Однако, без Unicode-math
целого ряда символов не хватает. Видимо, всё-таки необходимо использовать Unicode-math
...
Причина, похоже, ясна:
\cs_new:Npn \__um_resolve_greek:
{
\clist_map_inline:nn
{
Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,
alpha,beta,gamma,delta, zeta,eta,theta,iota,kappa,lambda,
Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,
mu,nu,xi,omicron,pi,rho,sigma,tau,upsilon, chi,psi,omega,
varTheta,
varsigma,vartheta,varkappa,varrho,varpi
}
{
\tl_set:cx {##1} { \exp_not:c { mit ##1 } }
\tl_set:cx {up ##1} { \exp_not:N \symup \exp_not:c { ##1 } }
\tl_set:cx {it ##1} { \exp_not:N \symit \exp_not:c { ##1 } }
}
\tl_set:Nn \epsilon
{ \bool_if:NTF \g__um_texgreek_bool \mitvarepsilon \mitepsilon }
\tl_set:Nn \phi
{ \bool_if:NTF \g__um_texgreek_bool \mitvarphi \mitphi }
\tl_set:Nn \varepsilon
{ \bool_if:NTF \g__um_texgreek_bool \mitepsilon \mitvarepsilon }
\tl_set:Nn \varphi
{ \bool_if:NTF \g__um_texgreek_bool \mitphi \mitvarphi }
}
Как видно, все "обычные" макросы греческого алфавита заменяются на символы с наклонным начертанием. Их у меня в шрифте нет. Нет по той простой причине, что они есть в наклонном шрифте!
Unicode-math
переопределяет отдельные макросы fontspec
:
\cs_set:Nn \__fontspec_setmainfont:nn
{
\fontspec_set_family:Nnn \rmdefault {#1}{#2}
\tl_if_eq:onT {\g__fontspec_mathrm_tl} {\rmdefault}
{
\fontspec_set_family:Nnn \g__fontspec_mathrm_tl {#1} {#2}
\SetMathAlphabet\mathrm{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\updefault
\SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\itdefault
\SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\updefault
}
\normalfont
\ignorespaces
}
Стоит воспользоваться этой логикой.
Решаться будет совместно с #179.
Как выяснилось - всё просто. Просто проблемы совместимости с пакетом
Unicode-math
. Отключил пакет - и проблема ушла...Необходимо изучить
fontspec
. В коде этого пакета обрабатываются проблемы совместимости сUnicode-math
. Целесообразно либо генерировать ошибку при подключенииUnicode-math
, либо решить проблему совместимости, переопределяя всё, что необходимо, для своей версии математики.