修补 babel 包时出现的问题

修补 babel 包时出现的问题

我正在尝试使用babelbiblatex打包但是出现以下错误:

! Package biblatex Error: Patching 'babel' package failed.

这是我的代码示例:

\documentclass[12pt,a4paper,twoside,openright]{book}
\usepackage{cmap}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[slovak]{babel}
\usepackage{xpatch}
\usepackage{csquotes}
\usepackage{biblatex}
\begin{document}
\enquote{quote}
\end{document}

我需要的结果如下:

在此处输入图片描述

好吧,看来我可以摆脱使用xpatch包时的错误,但只有当我删除 babel 包的“slovak”选项时它才有效。这样结果看起来就像这样:

在此处输入图片描述

请问,有没有什么办法可以解决这个问题?我真的被这个问题难住了。

答案1

和这里基本一样使用 babel 3.33 和 biblatex 3.13a 编译的带有自定义书目驱动程序的文档;但未使用最新的软件包版本进行编译。只不过它不仅是连字符,也是撇号。

禁用所有简写:

\usepackage[slovak,shorthands=off]{babel}

或者修补两个有问题的角色:

\documentclass[12pt,a4paper,twoside,openright]{book}
\usepackage{cmap}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[slovak]{babel}
\usepackage{etoolbox}
\makeatletter
\newcommand\my@hyphen{-}
\newcommand\my@apostroph{'}
\patchcmd\select@language{-}{\my@hyphen }{}{\fail}
\patchcmd\select@language{'}{\my@apostroph }{}{\fail}
\makeatother

\usepackage{csquotes}
\usepackage{biblatex}
\begin{document}
\enquote{quote}
\end{document}

答案2

更新

最近发布的biblatex3.15 现在使用适当的babel钩子polyglossia并且不再需要修补包内部。

这应该可以解决这些问题。更新后,下面和 Ulrike 的回答中显示的修复应该不再需要biblatex

如果您遇到此问题,请更新您的 TeX 系统。


这在结构上与使用 babel 3.33 和 biblatex 3.13a 编译的带有自定义书目驱动程序的文档;但未使用最新的软件包版本进行编译。但对于斯洛伐克语,我们不仅需要考虑破折号 ( -),还需要考虑撇号 ( ')。

\documentclass[12pt,a4paper,twoside,openright]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[slovak]{babel}

\usepackage{csquotes}

\usepackage{etoolbox}
\makeatletter
\newcommand\my@hyphen{-}
\patchcmd\select@language{-}{\my@hyphen }{}{\fail}
\newcommand\my@apo{'}
\patchcmd\select@language{'}{\my@apo }{}{\fail}
\makeatother
\usepackage{biblatex}
\begin{document}
\enquote{quote}
\end{document}

“引用”


这个问题应该会在下一个biblatex版本中得到解决,这要归功于https://github.com/plk/biblatex/commit/0f8488545292e01626dd854fee0fed8ab40adc7dhttps://github.com/plk/biblatex/commit/06913511f881172a0878cc19a6e5677af5885e74但我们或许应该想出一个比babel这么晚才修补内部漏洞更好的方法\AtBeginDocument。参见https://github.com/plk/biblatex/issues/970

相关内容