CTeX-org / ctex-kit

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

ctex: pdftex 模式不能通过编译 #542

Closed stone-zeng closed 3 years ago

stone-zeng commented 3 years ago
\documentclass[fontset=fandol]{ctexart}
\begin{document}
测试
\end{document}

使用 latex 编译,报错:

! Undefined control sequence.
l.177 \ctex_gadd_hook:Nn
                         \CJKhook { \ctex_set_ignorespaces: }
? 

LaTeX 版本为 2020-10-01,怀疑为钩子机制变动引起的 bug。

stone-zeng commented 3 years ago

一部分问题在 27cad49 中修复,另一部分问题可能是因为 latex3/latex3#814。

CasperYC commented 3 years ago

https://tex.stackexchange.com/questions/565455/ctex-recent-update-causing-problem-ctex-gadd-hooknn-cjkhook-ctex-set-igno

我在这里也提出了。貌似还没有等到更新(fix)嘛。。。 所有用到ctex的都不能编译了呢。。。

stone-zeng commented 3 years ago

LaTeX3 team 已经修了,但还没有发布新版本,所以还要等。

临时的解决方案是在 \documentclass 之前添加:

\ExplSyntaxOn
\cs_new_protected:Npn \ctex_gadd_hook:Nn #1
  {
    \tl_new:N #1
    \tl_gput_right:Nn #1
  }
\exp_args:Nx \cctab_gset:Nn \c_document_cctab
  {
    \cctab_select:N \c_document_cctab
    \bool_lazy_or:nnF
      { \sys_if_engine_xetex_p: } { \sys_if_engine_luatex_p: }
      { \int_step_function:nnN { 128 } { 255 } \char_set_catcode_active:n }
  }
\ExplSyntaxOff
qiancy98 commented 3 years ago

LaTeX3 team 已经修了,但还没有发布新版本,所以还要等。

临时的解决方案是在 \documentclass 之前添加:

\ExplSyntaxOn
\cs_new_protected:Npn \ctex_gadd_hook:Nn #1
  {
    \tl_new:N #1
    \tl_gput_right:Nn #1
  }
\exp_args:Nx \cctab_gset:Nn \c_document_cctab
  {
    \cctab_select:N \c_document_cctab
    \bool_lazy_or:nnF
      { \sys_if_engine_xetex_p: } { \sys_if_engine_luatex_p: }
      { \int_step_function:nnN { 128 } { 255 } \char_set_catcode_active:n }
  }
\ExplSyntaxOff

(我似乎仍然无法编译?) 程序:

\documentclass[a4paper,10pt]{article}
\usepackage{ctex}
\begin{document}
测试
\end{document}

报错:

! Extra \endgroup.
\CTEX@document@left@hook ->\group_end:
                                       \g__ctex_end_preamble_hook_tl \group_...
l.3 \begin{document}

加了前面那一串, 报错不变. 编译命令:xelatex try.tex

stone-zeng commented 3 years ago
\documentclass[a4paper,10pt]{article}
\usepackage{ctex}
\listfiles
\begin{document}
测试
\end{document}

以上代码不能复现问题,加上补丁后也没有报错。版本信息:

This is XeTeX, Version 3.14159265-2.6-0.999992 (TeX Live 2020) (preloaded format=xelatex 2020.10.13)  13 OCT 2020 21:19
entering extended mode
 restricted \write18 enabled.
 %&-line parsing enabled.
**try
(./try.tex
LaTeX2e <2020-10-01> patch level 1
L3 programming layer <2020-10-05> xparse <2020-03-03>

...

 *File List*
 article.cls    2020/04/10 v1.4m Standard LaTeX document class
  size10.clo    2020/04/10 v1.4m Standard LaTeX file (size option)
    ctex.sty    2020/08/23 v2.5.4 Chinese adapter in LaTeX (CTEX)
   expl3.sty    2020-10-05 L3 programming layer (loader) 
l3backend-xetex.def    2020/08/23 v2.5.4 Chinese adapter in LaTeX (CTEX)
  xparse.sty    2020-10-05 L3 Experimental document command parser
xparse-generic.tex
l3keys2e.sty    2020-10-05 LaTeX2e option processing using LaTeX3 keys
ctexhook.sty    2020/08/23 v2.5.4 Document and package hooks (CTEX)
ctexpatch.sty    2020/08/23 v2.5.4 Patching commands (CTEX)
  fix-cm.sty    2015/01/14 v1.1t fixes to LaTeX
  ts1enc.def    2001/06/05 v3.0e (jk/car/fm) Standard LaTeX file
everysel.sty    2011/10/28 v1.2 EverySelectfont Package (MS)
ctexopts.cfg    2020/08/23 v2.5.4 Option configuration file (CTEX)
ctex-engine-xetex.def    2020/08/23 v2.5.4 XeLaTeX adapter (CTEX)
   xeCJK.sty    2020/08/23 v3.8.5 Typesetting CJK scripts with XeLaTeX
xtemplate.sty    2020-10-05 L3 Experimental prototype document functions
fontspec.sty    2020/02/21 v2.7i Font selection for XeLaTeX and LuaLaTeX
fontspec-xetex.sty    2020/02/21 v2.7i Font selection for XeLaTeX and LuaLaTeX
 fontenc.sty
fontspec.cfg
   xeCJK.cfg    2020/08/23 v3.8.5 Configuration file for xeCJK package
zhnumber.sty    2020/05/01 v2.8 Typesetting numbers with Chinese glyphs
zhnumber-utf8.cfg    2020/05/01 v2.8 Chinese numerals with UTF8 encoding
ctex-scheme-chinese.def    2020/08/23 v2.5.4 Chinese scheme for generic (CTEX)
ctex-name-utf8.cfg    2020/08/23 v2.5.4 Caption with encoding UTF-8 (CTEX)
indentfirst.sty    1995/11/23 v1.03 Indent first paragraph (DPC)
ctex-fontset-mac.def    2020/08/23 v2.5.4 macOS fonts definition (CTEX)
ctex-fontset-macnew.def    2020/08/23 v2.5.4 macOS fonts definition for El Capi
tan or later version (CTEX)
    ctex.cfg    2020/08/23 v2.5.4 Configuration file (CTEX)
 ***********
qiancy98 commented 3 years ago

@stone-zeng 好的. 看起来这已经和本问题无关了. 我尝试重装MikTeX, 如果问题没有解决, 我将提交新的Issue. 再次感谢! 更新: 重新安装以后问题已消失. 由于某些玄学原因我原来的CTeX版本停在了2.5.3, 重装后就是2.5.4了... 感谢

CasperYC commented 3 years ago

今天我又更新了下MikTeX的套装,因为一直用的是MikTeX,所以习惯了。

所有的package显示的都是更新到11 Oct 2020的。

貌似还是需要\documentclass[a4paper,10pt]{article}前面的补丁的,不然仍然不能运行。

不知道是MikTeX的问题,还是要再等??

\ExplSyntaxOn
\cs_new_protected:Npn \ctex_gadd_hook:Nn #1
  {
    \tl_new:N #1
    \tl_gput_right:Nn #1
  }
\exp_args:Nx \cctab_gset:Nn \c_document_cctab
  {
    \cctab_select:N \c_document_cctab
    \bool_lazy_or:nnF
      { \sys_if_engine_xetex_p: } { \sys_if_engine_luatex_p: }
      { \int_step_function:nnN { 128 } { 255 } \char_set_catcode_active:n }
  }
\ExplSyntaxOff

\documentclass[a4paper,10pt]{article}
\usepackage{ctex}
\listfiles
\begin{document}
测试
\end{document}

还是会得到

! Undefined control sequence.
l.170 \ctex_gadd_hook:Nn
                         \CJKhook { \ctex_set_ignorespaces: }
? <<< Process has been killed (PID=9740) with Ctrl-Break.

追加一下,我是PDFlatex编译的。。。。

-windows.tex"{C:/Users/Dr Yu - 3XS/AppData/Local/MiKTeX/pdftex/config/pdftex.ma
p}{UGBK.sfd}{Unicode.sfd}) [1] (test.aux)

 *File List*
 article.cls    2020/04/10 v1.4m Standard LaTeX document class
  size10.clo    2020/04/10 v1.4m Standard LaTeX file (size option)
    ctex.sty    2020/08/23 v2.5.4 Chinese adapter in LaTeX (CTEX)
   expl3.sty    2020-10-05 L3 programming layer (loader) 
l3backend-pdftex.def    2020/08/23 v2.5.4 Chinese adapter in LaTeX (CTEX)
  xparse.sty    2020-10-05 L3 Experimental document command parser
xparse-generic.tex
l3keys2e.sty    2020-10-05 LaTeX2e option processing using LaTeX3 keys
ctexhook.sty    2020/08/23 v2.5.4 Document and package hooks (CTEX)
ctexpatch.sty    2020/08/23 v2.5.4 Patching commands (CTEX)
  fix-cm.sty    2015/01/14 v1.1t fixes to LaTeX
  ts1enc.def    2001/06/05 v3.0e (jk/car/fm) Standard LaTeX file
everysel.sty    2011/10/28 v1.2 EverySelectfont Package (MS)
ctexopts.cfg    2020/08/23 v2.5.4 Option configuration file (CTEX)
ctex-engine-pdftex.def    2020/08/23 v2.5.4 (pdf)LaTeX adapter (CTEX)
 CJKutf8.sty    2015/04/18 4.8.4
   ifpdf.sty    2019/10/25 v3.4 ifpdf legacy package. Use iftex instead.
   iftex.sty    2020/03/06 v1.0d TeX engine tests
inputenc.sty    2020/08/01 v1.3d Input encoding file
     CJK.sty    2015/04/18 4.8.4
 MULEenc.sty    2015/04/18 4.8.4
 fontenc.sty
CJKpunct.sty    2016/05/14 4.8.4
CJKpunct.spa
CJKspace.sty    2015/04/18 3.8.0
 ctexspa.def    2020/08/23 v2.5.4 Space info for CJKpunct (CTEX)
zhnumber.sty    2020/05/01 v2.8 Typesetting numbers with Chinese glyphs
zhnumber-utf8.cfg    2020/05/01 v2.8 Chinese numerals with UTF8 encoding
ctex-scheme-chinese.def    2020/08/23 v2.5.4 Chinese scheme for generic (CTEX)
ctex-name-utf8.cfg    2020/08/23 v2.5.4 Caption with encoding UTF-8 (CTEX)
indentfirst.sty    1995/11/23 v1.03 Indent first paragraph (DPC)
ctex-fontset-windows.def    2020/08/23 v2.5.4 Windows fonts definition (CTEX)
    ctex.cfg    2020/08/23 v2.5.4 Configuration file (CTEX)
    UTF8.bdg    2015/04/18 4.8.4
    UTF8.enc    2015/04/18 4.8.4
    UTF8.chr    2015/04/18 4.8.4
   c70rm.fd    2020/08/23 v2.5.4 Chinese font definition (CTEX)
ctex-zhmap-windows.tex    2020/08/23 v2.5.4 Windows font map loader for pdfTeX 
and DVIPDFMx (CTEX)
 ***********
muzimuzhi commented 3 years ago

以上代码不能复现问题,加上补丁后也没有报错。 from https://github.com/CTeX-org/ctex-kit/issues/542#issuecomment-707734402

@stone-zeng 还是因为用了 xetex,而不是 pdftex?

stone-zeng commented 3 years ago

不知道是MikTeX的问题,还是要再等??

@CasperYC latex3 那边还没有更新。

CasperYC commented 3 years ago

不知道是MikTeX的问题,还是要再等??

@CasperYC latex3 那边还没有更新。

好的!感觉这次对我影响还蛮大的。。。。。。以后再也不随便更新了。。。。。