biblatex-ext:手册中的参考书目自定义功能不起作用

biblatex-ext:手册中的参考书目自定义功能不起作用

我很高兴看到biblatex-ext 手册 biblatex-ext 可以提供,我已经使用 MikTex 2.9 数据包管理器添加了 biblatex-ext。

我已成功使用“[”和“]”进行引用:

\DeclareOuterCiteDelim{parencite}{\bibopenbracket}{\bibclosebracket}
\DeclareInnerCiteDelim{parencite}{\bibopenparen}{\bibcloseparen}

在第 16 页上,我找到了我论文所需的参考书目样式,并通过剪切粘贴到我的主文件中接管了这五行:

\documentclass{scrreprt}

\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}

\usepackage[babel,german=quotes]{csquotes}
\usepackage[ext-style=authoryear-icomp,sorting=nyt]{biblatex}

\DeclareOuterCiteDelim{parencite}{\bibopenbracket}{\bibclosebracket}
\DeclareInnerCiteDelim{parencite}{\bibopenparen}{\bibcloseparen}
%the interesting lines start here:
\DeclareFieldFormat{bbx:introcite}{\mkbibbold{#1}}
\DeclareDelimcontextAlias{bbx:introcite}{textcite}
\DeclareInnerCiteDelim{bbx:introcite}{\bibopenparen}{\bibcloseparen}
\setlength{\introcitewidth}{0pt}
\setlength{\introcitesep}{\bibhang}
%the interesting lines end here:
\addbibresource{Literatur.bib}

\begin{document}

Citation1: \autocite{Knuth:Texbook}
Citation2: \autocite{Schlosser:Latex}
Citation2: \autocite[siehe][S. 130]{Beucher:MATLAB}

\printbibliography

\end{document}

Literatur.bib 文件:

@Book{Knuth:Texbook,
author = {Donald Knuth},
title = {The TeXbook},
editor = {unknown},
publisher = {Addison Wesley},
year = {1986},
}
@Book{Schlosser:Latex,
author = {Joachim Schlosser},
title = {Wissenschaftliche Arbeiten schreiben mit Latex},
editor = {unknown},
publisher = {mitp Verlag},
year = {2014},
}
@Book{Beucher:MATLAB,
author = {Ottmar Beucher},
title = {Immer Ärger mit MATLAB und Simulink},
publisher = {mitp Verlag},
editor = {unknown},
year = {2012},
url = {http://www.amazon.de},
}

这五行没有任何作用:

\DeclareFieldFormat{bbx:introcite}{\mkbibbold{#1}}
\DeclareDelimcontextAlias{bbx:introcite}{textcite}
\DeclareInnerCiteDelim{bbx:introcite}{\bibopenparen}{\bibcloseparen}
\setlength{\introcitewidth}{0pt}
\setlength{\introcitesep}{\bibhang}

到参考书目!LaTeX 运行时没有错误消息。当我从代码中删除它们时,参考书目外观没有任何变化。

我已经完全更新了 MikTex,尽管花了一段时间并且我重新启动了电脑 - 但没有任何变化。

我不是 LaTeX 专业人士,我也不知道为什么这五行代码无效。

您知道可能是什么原因吗?

非常感谢您的提示!

来自德国的问候

答案1

introcite只有将选项与值一起使用时,这些行才会生效label。这就是为什么代码示例的标题是“示例自定义introcite=label”。如果没有introcite给出选项,则假定默认值false,这意味着参考书目中没有引用标签。因此,样式化不会产生任何效果。

\documentclass{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[babel,german=quotes]{csquotes}
\usepackage[style=ext-authoryear-icomp, introcite=label]{biblatex}

\DeclareOuterCiteDelims{parencite}{\bibopenbracket}{\bibclosebracket}
\DeclareInnerCiteDelims{parencite}{\bibopenparen}{\bibcloseparen}
%the interesting lines start here:
\DeclareFieldFormat{bbx@introcite}{\mkbibbold{#1}}
\DeclareDelimFormat[bbx@introcite]{nameyeardelim}{\addspace}
\DeclareInnerCiteDelims{bbx@introcite}{\bibopenparen}{\bibcloseparen}
\setlength{\introcitewidth}{0pt}
\setlength{\introcitesep}{\bibhang}
%the interesting lines end here:

%\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Book{Knuth:Texbook,
author = {Donald Knuth},
title = {The TeXbook},
publisher = {Addison Wesley},
year = {1986},
}
@Book{Schlosser:Latex,
author = {Joachim Schlosser},
title = {Wissenschaftliche Arbeiten schreiben mit Latex},
publisher = {mitp Verlag},
year = {2014},
}
@Book{Beucher:MATLAB,
author = {Ottmar Beucher},
title = {Immer Ärger mit MATLAB und Simulink},
publisher = {mitp Verlag},
year = {2012},
url = {http://www.amazon.de},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
Citation1: \autocite{Knuth:Texbook}
Citation2: \autocite{Schlosser:Latex}
Citation2: \autocite[siehe][130]{Beucher:MATLAB}

\printbibliography
\end{document}

作品。

由于\DeclareDelimcontextAlias{bbx@introcite}{textcite}可能会产生违反直觉的结果,我将其替换为\DeclareDelimFormat[bbx@introcite]{nameyeardelim}{\addspace}

请注意,您不需要写\autocite[S. 130]{Beucher:MATLAB}biblatex如果合适,只需添加“S.”本身就\autocite[130]{Beucher:MATLAB}足够了。

我也不认为写作editor = {unknown}有多大用处,所以我删除了它。

sorting=nyt是的默认值style=authoryear-icomp(因此也是的默认值ext-authoryear-icomp),所以您不需要明确给出该选项。

在此处输入图片描述


biblatex-extv0.4 中,“虚拟”引用宏bbx:introcite被重命名为,bbx@introcite以符合一致性和实现原因。请参阅https://github.com/moewew/biblatex-ext/issues/10https://github.com/moewew/biblatex-ext/pull/11

bbx:introcite这意味着

\DeclareFieldFormat{bbx:introcite}{\mkbibbold{#1}}
\DeclareDelimFormat[bbx:introcite]{nameyeardelim}{\addspace}
\DeclareInnerCiteDelims{bbx:introcite}{\bibopenparen}{\bibcloseparen}

必须替换为bbx@introcite上述代码中的 。旧代码的常见用法将生成警告。

\DeclareInnerCiteDelim并被\DeclareOuterCiteDelim替换为\DeclareInnerCiteDelims\DeclareOuterCiteDelims(带有s)。该更改完全向后兼容:旧名称将继续有效,并会生成一个方便的警告,请使用新名称。

相关内容