CTeX-org / ctex-kit

Macro Packages and Scripts for Chinese TeX users
966 stars 124 forks source link

newtx宏包(March 2, 2022, v1.7.1)与ctex宏包(2021/12/12 v2.5.8)疑似冲突 #609

Closed perrogg closed 1 year ago

perrogg commented 2 years ago

检查

编译环境

问题描述

使用ctex字体命令(如\songti, \kaishu)之后运行报错,不显示字体之后的中文(下图右侧红色标记处缺失“楷书”二字)。

截屏2022-03-06 23 54 24

最小工作示例(MWE)

\documentclass{ctexart}

\usepackage{newtxtext}
%\usepackage{newtxmath}

\begin{document}
  ABC def 测试 \kaishu 楷书 GH
\end{document}

(用 XeLaTeX 编译后)输出报错,问题及日志如下

截屏2022-03-06 23 55 17 截屏2022-03-06 23 55 47

补充说明

  1. 约一年前无此问题(不记得版本号),所有宏包更新到最新,编译之前的文件,才发现此问题。
  2. 如果不使用字体命令,不报错(输出默认的宋体);但只要使用字体命令,即使是宋体\songti,报错;
  3. 数学字体 newtxmath 不冲突,即不加载newtxtext,只使用 newtxmath 不会报错;
  4. newtx 文档中找到如下一段话:

As of version 1.4, newtxtext no longer depends on txfonts but is based on the richer source TeXGyre Termes,

截屏2022-03-06 23 44 01

经测试,如果直接如下代码将英文字体设置为 TeXGyreTermes ,不报错:

\documentclass{ctexart}

%\usepackage{newtxtext}
%\usepackage{newtxmath}
\setmainfont[BoldFont = texgyretermes-bold.otf,
ItalicFont = texgyretermes-italic.otf, 
BoldItalicFont = texgyretermes-bolditalic.otf
]{texgyretermes-regular.otf} %英文字体设置

\begin{document}
ABC \kaishu 楷书 GH
\end{document}
截屏2022-03-06 23 57 50
Sinofine commented 2 years ago

linux下正常 image

输出 ``` This is XeTeX, Version 3.141592653-2.6-0.999993 (TeX Live 2021/Arch Linux) (preloaded format=xelatex) restricted \write18 enabled. entering extended mode (./mwe.tex LaTeX2e <2021-11-15> patch level 1 L3 programming layer <2021-11-22> (/usr/share/texmf-dist/tex/latex/ctex/ctexart.cls (/usr/share/texmf-dist/tex/latex/ctex/config/ctexbackend.cfg) (/usr/share/texmf-dist/tex/latex/l3kernel/expl3.sty (/usr/share/texmf-dist/tex/latex/l3backend/l3backend-xetex.def (|extractbb --version))) Document Class: ctexart 2021/12/12 v2.5.8 Chinese adapter for class article (CT EX) (/usr/share/texmf-dist/tex/latex/l3packages/xparse/xparse.sty) (/usr/share/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty) (/usr/share/texmf-dist/tex/latex/ctex/ctexhook.sty) (/usr/share/texmf-dist/tex/latex/ctex/ctexpatch.sty) (/usr/share/texmf-dist/tex/latex/base/fix-cm.sty (/usr/share/texmf-dist/tex/latex/base/ts1enc.def)) (/usr/share/texmf-dist/tex/latex/ctex/config/ctexopts.cfg) (/usr/share/texmf-dist/tex/latex/base/article.cls Document Class: article 2021/10/04 v1.4n Standard LaTeX document class (/usr/share/texmf-dist/tex/latex/base/size10.clo)) (/usr/share/texmf-dist/tex/latex/ctex/engine/ctex-engine-xetex.def (/usr/share/texmf-dist/tex/xelatex/xecjk/xeCJK.sty (/usr/share/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty) (/usr/share/texmf-dist/tex/latex/fontspec/fontspec.sty (/usr/share/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty (/usr/share/texmf-dist/tex/latex/base/fontenc.sty) (/usr/share/texmf-dist/tex/latex/fontspec/fontspec.cfg))) (/usr/share/texmf-dist/tex/xelatex/xecjk/xeCJK.cfg))) (/usr/share/texmf-dist/tex/latex/zhnumber/zhnumber.sty (/usr/share/texmf-dist/tex/latex/zhnumber/zhnumber-utf8.cfg)) (/usr/share/texmf-dist/tex/latex/ctex/scheme/ctex-scheme-chinese-article.def (/usr/share/texmf-dist/tex/latex/ctex/config/ctex-name-utf8.cfg)) (/usr/share/texmf-dist/tex/latex/ctex/ctex-c5size.clo) (/usr/share/texmf-dist/tex/latex/ctex/fontset/ctex-fontset-fandol.def Package fontspec Warning: Font "FandolSong-Regular" does not contain requested (fontspec) Script "CJK". )) (/usr/share/texmf-dist/tex/latex/ctex/config/ctex.cfg) (/usr/share/texmf-dist/tex/latex/newtx/newtxtext.sty `newtxtext' v1.701, 2021/12/26 Text macros taking advantage of TeXGyre Termes a nd its extensions (msharpe) (/usr/share/texmf-dist/tex/latex/base/fontenc.sty (/usr/share/texmf-dist/tex/latex/lm/t1lmr.fd)) (/usr/share/texmf-dist/tex/generic/iftex/ifxetex.sty (/usr/share/texmf-dist/tex/generic/iftex/iftex.sty)) (/usr/share/texmf-dist/tex/generic/iftex/ifluatex.sty) (/usr/share/texmf-dist/tex/latex/xkeyval/xkeyval.sty (/usr/share/texmf-dist/tex/generic/xkeyval/xkeyval.tex (/usr/share/texmf-dist/tex/generic/xkeyval/xkvutils.tex (/usr/share/texmf-dist/tex/generic/xkeyval/keyval.tex)))) (/usr/share/texmf-dist/tex/latex/etoolbox/etoolbox.sty) (/usr/share/texmf-dist/tex/latex/base/textcomp.sty) (/usr/share/texmf-dist/tex/generic/xstring/xstring.sty (/usr/share/texmf-dist/tex/generic/xstring/xstring.tex)) (/usr/share/texmf-dist/tex/latex/base/ifthen.sty) (/usr/share/texmf-dist/tex/latex/carlisle/scalefnt.sty) (/usr/share/texmf-dist/tex/generic/kastrup/binhex.tex) ! Undefined control sequence. ... \fi \fi \ifntxotf \ntx@origotftrue \fi l.52 } ? ntxotftrue (/usr/share/texmf-dist/tex/latex/realscripts/realscripts.sty)) (/usr/share/texmf-dist/tex/latex/newtx/TeXGyreTermesX.fontspec) No file mwe.aux. Package fontspec Warning: Font "FandolKai-Regular" does not contain requested (fontspec) Script "CJK". [1] (./mwe.aux) ) Output written on mwe.pdf (1 page). Transcript written on mwe.log. ```
syvshc commented 2 years ago

我已经给作者发了邮件,等待回复吧

stone-zeng commented 2 years ago

mac 上可以复现

stone-zeng commented 2 years ago

原因应该是 newtxtext 宏包加了 Extension = .otf

\defaultfontfeatures{
  Ligatures = TeX ,
  Scale = \ntx@scale ,
  Extension = .otf ,
  SmallCapsFeatures={\ifntx@scosf Numbers = OldStyle ,
  \fi RawFeature = +\ntx@scraw ,
  \ifluatex Renderer=Basic\fi} ,
  \ntx@dflt ,
  RawFeature=-ss05 ,   
  \ntx@defaultfeatures ,
 }
zepinglee commented 2 years ago

原因应该是 newtxtext 宏包加了 Extension = .otf

\defaultfontfeatures{
  Ligatures = TeX ,
  Scale = \ntx@scale ,
  Extension = .otf ,
  SmallCapsFeatures={\ifntx@scosf Numbers = OldStyle ,
  \fi RawFeature = +\ntx@scraw ,
  \ifluatex Renderer=Basic\fi} ,
  \ntx@dflt ,
  RawFeature=-ss05 ,   
  \ntx@defaultfeatures ,
 }

newtx 的 bug,这样设置 \defaultfontfeatures 会导致后续的 \setsansfontfontspec 命令无法按照字体名调用字体,也无法调用 TTF 字体。

@syvshc 需要我发邮件跟作者解释一下吗?

syvshc commented 2 years ago

@zepinglee 可以,您说比我说的会更清楚一些,谢谢了

zepinglee commented 2 years ago

@zepinglee 可以,您说比我说的会更清楚一些,谢谢了

那你把邮件 fwd 给我一份?zepinglee@gmail.com

Guqiuwang commented 2 years ago

原因应该是 newtxtext 宏包加了 Extension = .otf

\defaultfontfeatures{
  Ligatures = TeX ,
  Scale = \ntx@scale ,
  Extension = .otf ,
  SmallCapsFeatures={\ifntx@scosf Numbers = OldStyle ,
  \fi RawFeature = +\ntx@scraw ,
  \ifluatex Renderer=Basic\fi} ,
  \ntx@dflt ,
  RawFeature=-ss05 ,   
  \ntx@defaultfeatures ,
 }

newtx 的 bug,这样设置 \defaultfontfeatures 会导致后续的 \setsansfontfontspec 命令无法按照字体名调用字体,也无法调用 TTF 字体。

@syvshc 需要我发邮件跟作者解释一下吗?

请问解决了吗?我也出现了类似的问题。我把Extension = .otf直接删了,确实没有出现报错,但会有其他影响吗?

syvshc commented 2 years ago

请问解决了吗?我也出现了类似的问题。我把Extension = .otf直接删了,确实没有出现报错,但会有其他影响吗?

宏包作者并没有处理问题, 建议使用 TeX Gyre Termes/STIX Two Text/XITS/TeX Gyre TermesX 进行替代

zepinglee commented 2 years ago

请问解决了吗?我也出现了类似的问题。我把Extension = .otf直接删了,确实没有出现报错,但会有其他影响吗?

@Guqiuwang 没有。可以在调用 newtxtext 后设置 \defaultfontfeatures{} 清除掉该宏包设置的 default font features。

Guqiuwang commented 2 years ago

请问解决了吗?我也出现了类似的问题。我把Extension = .otf直接删了,确实没有出现报错,但会有其他影响吗?

宏包作者并没有处理问题, 建议使用 TeX Gyre Termes/STIX Two Text/XITS/TeX Gyre TermesX 进行替代

好的,多谢建议

Guqiuwang commented 2 years ago

请问解决了吗?我也出现了类似的问题。我把Extension = .otf直接删了,确实没有出现报错,但会有其他影响吗?

@Guqiuwang 没有。可以在调用 newtxtext 后设置 \defaultfontfeatures{} 清除掉该宏包设置的 default font features。

明白,感谢答复