10 月 15 日更新 texlive 2019 后,memoir 出现 filehook 错误

10 月 15 日更新 texlive 2019 后,memoir 出现 filehook 错误

LaTeX2e <2019-10-01>版本之后,我得到了这个错误:

!包 filehook 错误:检测到‘scrlfile’包中存在未知的 \InputIfFileExists 定义。

它似乎与 KOMA Script 中的一些定义有关,如下所述这里按照指示,我从他们的存储库更新了 Koma:

tlmgr 安装--重新安装--存储库 https://www.komascript.de/repository/texlive/2019牯牯牯

但错误仍然存​​在。

有人知道最近的更改后是否还有其他软件包需要更新吗LaTeX2e

编辑:MWE 添加,使用@PhelypeOleinik 建议的命令

\PassOptionsToPackage{force}{filehook} 
\documentclass[ebook]{memoir}
\usepackage{fontspec} 
\usepackage{unicode-math} 
\usepackage{xsim}
\begin{document}    
   Test 
\end{document}

EDIT2,2019 年 10 月 22 日:在答案中添加了@PhelypeOleinik 建议的代码:

\RequirePackage{etoolbox}
\makeatletter
\patchcmd\load@onefilewithoptions
{\expandafter\let\csname\@currname.\@currext-h@@k\endcsname\@empty
    \let\CurrentOption\@empty% Anchor point to make sure we're patching     the right place
}{}{}{\errmessage{This patch is no longer necessary}%
    \newcommand\gobblesix[6]{}\gobblesix}
\patchcmd\load@onefilewithoptions
{\InputIfFileExists}
{\expandafter\let\csname\@currname.\@currext-h@@k\endcsname\@empty
    \InputIfFileExists}{}{\FAILED}
\makeatother
\PassOptionsToPackage{force}{filehook}
\documentclass[ebook]{memoir}
\usepackage{filehook}
\usepackage{fontspec}
\usepackage{unicode-math}
\usepackage{xsim}
\begin{document}
    Test
\end{document}

我收到此错误:

Package filehook Warning: Detected 'scrlfile' package with unknown definition of
 \InputIfFileExists.
The 'force' option of 'filehook' is in effect. Macro is overwritten with    default
! on input line 108.

答案1

更新 2020-02-04:memoir都已filehook更新,现在这个问题应该不会再发生了。如果发生了,请更新您的 TeX 发行版。


这里同时有两个问题。第一个问题被报告这里,并且是由于设置包钩子的时间不当造成的。发生这种情况是因为filehook加载了filehook-memoir,并且filehook-memoir确实加载了\RequirePackage{filehook},这导致选项解析器偏离轨道并报告filehook没有force选项(即使它有)。

该问题已得到修复这里最终将以 LaTeX 格式更新。现在,请使用此补丁(这必须是文档中的第一项):

\RequirePackage{etoolbox}
\makeatletter
\patchcmd\load@onefilewithoptions
  {\expandafter\let\csname\@currname.\@currext-h@@k\endcsname\@empty
   \let\CurrentOption\@empty% Anchor point to make sure we're patching the right place
  }{}{}{\errmessage{This patch is no longer necessary}%
        \newcommand\gobblesix[6]{}\gobblesix}
\patchcmd\load@onefilewithoptions
  {\InputIfFileExists}
  {\expandafter\let\csname\@currname.\@currext-h@@k\endcsname\@empty
   \InputIfFileExists}{}{\FAILED}
\makeatother

解决该问题后,只需告诉filehook使用force选项直到memoir更新(应该很快)并filehook-memoir更新以匹配更新memoir

\PassOptionsToPackage{force}{filehook}

顺便说一句,该问题并不依赖于xsimfontspec,而且问题是unicode-math由于它最终会加载而出现filehook的,因此问题可以缩小到:

\PassOptionsToPackage{force}{filehook}
\documentclass{memoir}
\usepackage{filehook}
\begin{document}
\end{document}

答案2

虽然不是最终答案,但让我能够继续工作和编译的是将文件filehook.sty放在filehook-scrlfile.styfilehook-memoir.sty @SergioCallegari 发布了这里texmf-local/tex/latex/filehook/并刷新 TeX 数据库。

相关内容