如何修复 etoolboox 错误?BibLaTex 使用 bibstyle=uni-wtal-ger

如何修复 etoolboox 错误?BibLaTex 使用 bibstyle=uni-wtal-ger

我正在尝试使用 BibLaTeXcitestyle=authoryear-ibidbibstyle=uni-wtal-ger

我的main.tex样子是这样的:

\documentclass[paper=a4,pagesize=auto,oneside,fontsize=12pt,toc=bib]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage[hidelinks]{hyperref}
\usepackage[onehalfspacing]{setspace}
\usepackage{csquotes}

\usepackage[%
    backend=biber,%
    sorting=nyt,%
    citestyle=authoryear-ibid,%
    bibstyle=uni-wtal-ger,%
    hyperref=auto,%
    maxnames=2,%
    ]{biblatex}
\addbibresource{lit.bib}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

但我努力解决一个etoolbox错误:

[Loading MPS to PDF converter (version 2006.09.02).]
) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty
(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty)
(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg))
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty))
(./main.out) (./main.out)
(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/bookmark.sty
(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/bkm-pdftex.def))

! Package etoolbox Error: Boolean '\ifcbx:omiteditor' undefined.

我认为该包可能有问题uni-wtal-ger,因为当我使用类似的东西时问题就消失了bibstyle=draft

只使用style=uni-wtal-ger而不定义citestyle作品,但不会产生预期的结果。

答案1

uni-wtal-ger基于biblatex-dwauthortitle-dw样式。该系列的样式biblatex-dw在引用和参考书目样式之间具有非常紧密的集成,这实质上意味着 的参考书目样式biblatex-dw必须与 的引用样式一起使用biblatex-dw

正如我在评论中提到的那样,uni-wtal-ger自 2013 年以来就没有更新过,而且biblatex-dw(上次更新于 2016 年 12 月)的开发似乎也处于停滞状态。样式仍按预期工作,但修改可能会变得越来越复杂,因此如果您需要调整它们,最好选择完全不同的基础。

这里尝试uni-wtal-ger使用更现代的基础 ( biblatex-ext) 进行复制,并使其成为作者年份引用样式。(这不会是 的完美模仿uni-wtal-ger,但它应该是一个开始。如果您需要其他调整,请随时提出新问题。)

请注意,我把风格做得更偏向于作者年份uni-wtal-ger(参考书目中的作者/编辑后面是年份)。可以将年份移到条目后面,但这样读者可能更难找到年份。

\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{csquotes}

\usepackage[backend=biber,
  style=ext-authoryear-ibid,
  innamebeforetitle=true, innameidem=true,
]{biblatex}

\usepackage[hidelinks]{hyperref}

\setlength{\bibitemsep}{0.8\baselineskip}

\DefineBibliographyStrings{german}{%
  and      = {u\adddot},
  editor   = {Hg\adddot},
  editors  = {Hg\adddot},
  byeditor = {hg\adddot\thinspace v\adddotspace},
  thiscite = {hier\addcolon\thinspace},
  number   = {H\adddot},
}

\DeclareNameAlias{sortname}{family-given}

\DeclareDelimFormat{multinamedelim}{\addspace\slash\space}
\DeclareDelimAlias{finalnamedelim}{multinamedelim}

\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\DeclareDelimFormat{editortypedelim}{\addspace}

\DeclareFieldAlias{translatortype}{editortype}
\DeclareDelimAlias{translatortypedelim}{editortypedelim}

\DeclareDelimFormat[bib]{nametitledelim}{\addcolon\space}

\renewcommand*{\intitlepunct}{\addcolon\space\midsentence}

\renewbibmacro*{journal+issuetitle}{%
  \usebibmacro{journal}%
  \setunit*{\jourvoldelim}%
  \iffieldundef{series}
    {}
    {\setunit*{\jourserdelim}%
     \printfield{series}%
     \setunit{\servoldelim}}%
  \usebibmacro{volume+number+eid}%
  \setunit{\addcolon\space}%
  \usebibmacro{issue}%
  \newunit}

\newcommand*{\voldatedelim}{\addspace}
\newcommand*{\datenumdelim}{\addcomma\space}
\DeclareFieldFormat[article,periodical]{number}{\bibstring{number}~#1}
\renewbibmacro*{volume+number+eid}{%
  \printfield{volume}%
  \setunit*{\voldatedelim}%
  \usebibmacro{issue+date}%
  \setunit*{\datenumdelim}%
  \printfield{number}%
  \setunit{\addcomma\space}%
  \printfield{eid}}

\renewcommand*{\locdatedelim}{\addspace}
\renewbibmacro*{publisher+location+date}{%
  \usebibmacro{location+date}}

\renewcommand*{\bibpagespunct}{\addperiod\space}


\addbibresource{biblatex-examples.bib}


\begin{document}
Lorem \autocite[380]{sigfridsson}
ipsum \autocite[s.][12]{worman}
dolor \autocite{geer,nussbaum,cicero,pines,westfahl:space,markey,baez/online}
\printbibliography
\end{document}

Sigfridsson, Emma / Ryde, Ulf (1998):“从电势和电势矩推导原子电荷的方法比较”。刊于:《计算化学杂志》19,H. 4. S. 377–395。doi:10.1002/(SICI)1096-987X(199803)19:4<377::AID-JCC1>3.0.CO;2-P。


如果您坚持使用uni-wtal-ger标准引用样式,您可以尝试以下方法,这应该可以避免错误,但在某些边缘情况下可能会产生意外结果(因为biblatex-dw缺少引用文件所依赖的底层结构)。

\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[backend=biber,
  bibstyle=uni-wtal-ger, sorting=nyt,
  citestyle=authoryear-ibid,
]{biblatex}

% list of bools defined by standard-dw.cbx (copied from there)
\providebool{cbx:authauthxref}
\providebool{cbx:authedxref}
\providebool{cbx:citeauthor}
\providebool{cbx:citeauthorfoot}
\providebool{cbx:citeauthornormalfont}
\providebool{cbx:citeauthornamefirstfull}
\providebool{cbx:citeauthornamefull}
\providebool{cbx:citedas}
\providebool{cbx:edstringincitations}
\providebool{cbx:fullcite}
\providebool{cbx:idemfull}
\providebool{cbx:noidem}
\providebool{cbx:omiteditor}
\providebool{cbx:rpcited}
\providebool{cbx:xrefparent:firstcite}
\providebool{cbx:shorthandibid}
\providebool{cbx:loccit}

\addbibresource{biblatex-examples.bib}


\begin{document}
\autocite{sigfridsson}
\printbibliography
\end{document}

相关内容