biblatex 样式 authoryear-luh-ipw 与最新的 MikTeX 不兼容

biblatex 样式 authoryear-luh-ipw 与最新的 MikTeX 不兼容

更新到最新的 MikTeX 后,我发现pdflatex在此文档上运行:

\documentclass{article} 
\usepackage[style=authoryear-luh-ipw]{biblatex}

\begin{document}

\end{document}

出现错误

... MiKTeX 2.9\tex\latex\biblatex\lbx\engli
sh.lbx")

! LaTeX Error: Missing \begin{document}.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.

检查后... MiKTeX 2.9\tex\latex\biblatex-luh-ipw\lbx\english-luh-ipw.lbx我发现

% english-luh-ipw.bbx, Oliver Heins ([email protected]) 2012--2013

\ProvidesFile{english-luh-ipw.lbx}[2013/11/18 v0.3 bibliography localization for use with biblatex 2.x]

\InheritBibliographyExtras{english}

\DeclareBibliographyExtras{%
  \savecommand\mkbibvolume
  \protected\def\mkbibvolume#1{\bibstring{jourvol}\adddot~#1}}

\UndeclareBibliographyExtras{%
  \restorecommand\mkbibvolume}

\NewBibliographyString{issue}

\DeclareBibliographyStrings{%
  inherit          = {english},
  issue            = {issue}{iss\adddot}},

\endinput

我认为,末尾的逗号DeclareBibliographyStrings看起来不合适,因此我将它删除,并将文件保存到本地texmf树中,确实似乎解决了问题。这是 中的错误吗biblatex-luh-ipw?如果是,删除末尾的逗号是否是合适的修复方法?

答案1

文件.lbxbiblatex-luh-ipw声明中包含语法错误\DeclareBibliographyStrings。早期biblatex版本会默默忍受,不会引发错误。v3.11biblatex更加外向,会发出错误消息(不幸的是,该错误消息没有什么帮助)。正确的语法是

\DeclareBibliographyStrings{%
  inherit      = {<language>},
  bibstring_1  = {{<short_1>}{<long_1>}},
  bibstring_2  = {{<short_2>}{<long_2>}},
               .
               .
               .
  bibstring_n  = {{<short_n>}{<long_n>}},
}

该键inherit比较特殊,只接受括号中的一种语言。所有其他键都是预定义的参考书目字符串,接受一对括号,每个括号中包含翻译的长格式和短格式。

这意味着.lbx文件应该看起来像这样。

german-luh-ipw.bbx

\DeclareBibliographyStrings{%
  inherit          = {german},
  issue            = {{Heft}{H\adddot}},
}

english-luh-ipw.lbx

\DeclareBibliographyStrings{%
  inherit          = {english},
  issue            = {{issue}{iss\adddot}},
}

你肯定应该将此事报告给软件包维护者,但考虑到该软件包四年半没有更新,我不确定他是否还活跃。

相关内容