我正在尝试使用babel
和biblatex
打包但是出现以下错误:
! 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
更新
最近发布的biblatex
3.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/0f8488545292e01626dd854fee0fed8ab40adc7d和
https://github.com/plk/biblatex/commit/06913511f881172a0878cc19a6e5677af5885e74但我们或许应该想出一个比babel
这么晚才修补内部漏洞更好的方法\AtBeginDocument
。参见https://github.com/plk/biblatex/issues/970。