该线程的原始问题(biblatex 中的 Dashed=true 选项导致 biblatex2.sty 错误)已由下面的@JosephWright 解决,应保留以供将来参考。
当我更好地理解了问题的本质后,我决定编辑原标题并在下面提供答案。我还删除了我的旧评论以清理帖子。
我用\RequirePackage[backend=biber,sorting=nyt]{biblatex
}
答案1
该dashed
选项不是内置的,biblatex
但由一些标准样式提供:authoryear
和衍生品。authoryear.bbx
你会发现
\DeclareBibliographyOption{dashed}[true]{%
\ifstrequal{#1}{true}
{\ExecuteBibliographyOptions{pagetracker}%
\renewbibmacro*{bbx:savehash}{\savefield{fullhash}{\bbx@lasthash}}}
{\renewbibmacro*{bbx:savehash}{}}}
随着
\newbibmacro*{bbx:savehash}{%
\savefield{fullhash}{\bbx@lasthash}}
并在各个地方使用这个新的宏。
因此,为了提供dashed
选项,自定义样式必须加载authoryear
并进行更改或者包含上述行(或其变体)。
答案2
这个宏插入到我的.def
文件中,为同一作者的不同书目项目生成水平线、句号和空格。
行高可以通过“ex”调整,长度可以通过“em”调整
\renewcommand*{\bibnamedash}{%
\leavevmode\raise -0.4ex\hbox to 5.5em{\hrulefill}.\space}
\newbibmacro*{bbx:dashcheck}[2]{%
\ifboolexpr{
test {\iffieldequals{fullhash}{\bbx@lasthash}}
and
not test \iffirstonpage
}
{#1}
{#2}}
\newbibmacro*{cbx:dashcheck}[2]{#2}
\newbibmacro*{dashcheck}[2]{%
\usebibmacro{cbx:dashcheck}{#1}{#2}}
\newbibmacro*{savehash}{}
它看起来是这样的: