软件包 titlepage 和 biblatex 不能一起工作

软件包 titlepage 和 biblatex 不能一起工作

以下代码运行良好:

\documentclass{scrbook}
\usepackage[british,ngerman]{babel}
\usepackage{blindtext}
\usepackage{titlepage}
\begin{document}
\begin{fullsizetitle}
\blindtext[13]
\end{fullsizetitle}
\end{document}

此代码也一样:

\documentclass{scrbook}
\usepackage[british,ngerman]{babel}
\usepackage{blindtext}
\usepackage{biblatex}
\begin{document}
    \begin{fullsizetitle}
        \blindtext[13]
    \end{fullsizetitle}
\end{document}

但两者同时

\documentclass{scrbook}
\usepackage[british,ngerman]{babel}
\usepackage{blindtext}
\usepackage{titlepage}
\usepackage{biblatex}
\begin{document}
    \begin{fullsizetitle}
        \blindtext[13]
    \end{fullsizetitle}
\end{document}

给出错误信息:

Undefined control sequence. \begin{document}

答案1

此错误已在 3.13 版本中修复。

请更新您的 TeX 系统以获取当前(和匹配)的biblatexBiber 版本。

下面的答案仅用于历史兴趣和背景信息。

这是 中的一个非常难以捉摸的错误biblatex。经过https://komascript.de/node/2242,KOMA-Script 开发人员已在https://github.com/plk/biblatex/issues/894并建议了一个可能的解决方案,并添加biblatexhttps://github.com/plk/biblatex/commit/26c2072829d78447a9bb1931bd22662b34a19e18

该问题已在 v3.13 中解决biblatex

只有当 的biblatex语言模块(.lbx)以特定方式<language_1>继承自并且未作为文档语言加载时,才会发生此错误。在这些情况下,会将未定义的宏添加到。由于未加载,因此通常不会使用此宏,因此这不会导致任何问题。但是使用挂钩 的方式,未定义的命令会导致问题。<language_0><language_0>biblatex\extras<language_0><language_0>titlepage\providecaptionname\extras<language>

在特定情况下,MWEbritish继承自english,但未english加载。仍然biblatex写入未定义的命令\extrasenglish\providecaptionname出错。

问题不会发生,因为和ngerman之间的继承设置略有不同,这意味着在这种情况下最终未定义的宏实际上是在这里定义的。ngermangermanbritish

在修复版本发布之前,我可以提供两种解决方法

  1. 只需加载english即可british。(请确保加载顺序/主要语言正确。)

  2. 将建议的修复合并到您的前言中。请注意,当发布新版本时,应从您的前言中删除该修复biblatex。因此,下面的代码块将在即将发布的版本中产生错误biblatex

    \makeatletter
    \@ifpackagelater{biblatex}{2019/05/28}
      {\blx@error
         {'\string\blx@maplang' fix no longer needed. Remove it}
         {Remove the redefinition of '\string\blx@maplang' from your preamble}}
      {\def\blx@maplang#1#2{%
         \csgappto{extras#1}{%
           \blx@resetpunct
           \csuse{abx@extras@#2}%
           \csuse{abx@strings@#2}}%
         \csgappto{noextras#1}{%
           \blx@resetpunct
           \csuse{abx@noextras@#2}}}}
    \makeatother
    

相关内容