BibLaTeX 引用样式中的冒号问题

BibLaTeX 引用样式中的冒号问题

我必须使用参考书目条目来首次引用来源。此参考书目字符串包含几个冒号,但遗憾的是在脚注中看不到。以下最小示例应该是该问题的展示。

\documentclass{article}
\usepackage[german]{babel}
\usepackage{csquotes}

% Bibliography database
\begin{filecontents}{\jobname.bib}
  @book{Knu86,
    author = {Knuth, Donald E.},
    year = {1986},
    title = {The \TeX book},
    publisher = {publisher},
    location = {location},
  }
\end{filecontents}

% Biblography style
\begin{filecontents}{\jobname.bbx}
    \ProvidesFile{\jobname.bbx}
    \RequireBibliographyStyle{standard}

    \renewcommand*{\newblockpunct}{\addcolon\space}

    \DeclareBibliographyDriver{book}{
    \usebibmacro{bibindex}%
    \usebibmacro{author}
    \addspace
    \printfield[parens]{year}
    \newblock
    \printfield{title}
    \newunit
    \printlist{location}
    \newblock
    \printlist{publisher}
    }
    \endinput
\end{filecontents}

% Citation style
\begin{filecontents}{\jobname.cbx}
    \ProvidesFile{\jobname.cbx}
    \RequireCitationStyle{verbose}

    \renewbibmacro*{cite:full}{%
    \usebibmacro{cite:full:citepages}%
    \printtext[bibhypertarget]
        { \usedriver{}{\thefield{entrytype}}}
    }
    \endinput
\end{filecontents}

\usepackage[backend=bibtex8,citestyle=\jobname,bibstyle=\jobname]{biblatex}
\ExecuteBibliographyOptions{citepages=omit,citetracker=true,labelyear}
\bibliography{\jobname}


\begin{document}
\null\vfill\noindent
Filler text \footcite[85]{Knu86}.
\printbibliography
\end{document}

为什么参考书目没有完全复制?我的第一个猜测是该\newblockpunct命令只有在参考书目样式下才能正确执行。但我如何将其转换为引用样式?

答案1

完整引用由 生成\usedriver,其内部定义调用:

\let\newblock\relax

为了避免这种情况,您可以在序言中添加以下内容。

\makeatletter
\patchcmd{\blx@imc@usedriver}{\let\newblock\relax}{}{}{}
\makeatother

但是块分隔符\newblockpunct旨在分隔参考书目条目的较大部分。默认值对应于选项block设置指定的某种形式的空格。在您的自定义驱动程序中,您可能最好使用\setunit{\addcolon\space}

相关内容