biblatex 在參考書目中印出「family=, familyi=」等

biblatex 在參考書目中印出「family=, familyi=」等

我的目標是使用 BiBLaTeX 與 numeric-comp 風格和 family-given/given-family 方式對作者姓名進行排序,所有姓名均以粗體顯示。這是我的 MWE:

\documentclass{scrreprt}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}

\usepackage[
backend=biber,
style=numeric-comp,
sorting=none,
]{biblatex}

\addbibresource{test.bib}

\DeclareNameAlias{sortname}{family-given/given-family-bold}
\DeclareNameFormat{family-given/given-family-bold}{\mkbibbold{%
        \ifnumequal{\value{listcount}}{1}
        {\ifgiveninits
            {\usebibmacro{name:family-given}
                {\namepartfamily}
                {\namepartgiveni}
                {\namepartprefix}
                {\namepartsuffix}}
            {\usebibmacro{name:family-given}
                {\namepartfamily}
                {\namepartgiven}
                {\namepartprefix}
                {\namepartsuffix}}%
            \ifboolexpe{%
                test {\ifdefvoid\namepartgiven}
                and
                test {\ifdefvoid\namepartprefix}}
            {}
            {\usebibmacro{name:revsdelim}}}
        {\ifgiveninits
            {\usebibmacro{name:given-family}
                {\namepartfamily}
                {\namepartgiveni}
                {\namepartprefix}
                {\namepartsuffix}}
            {\usebibmacro{name:given-family}
                {\namepartfamily}
                {\namepartgiven}
                {\namepartprefix}
                {\namepartsuffix}}}%
        \usebibmacro{name:andothers}}}

    \DeclareNameAlias{sortname}{given-family-bold}

    \DeclareNameAlias{author}{given-family-bold}
    \DeclareNameAlias{editor}{given-family-bold}
    \DeclareNameAlias{translator}{given-family-bold}

    \usepackage{filecontents}

    \begin{filecontents}{test.bib}
        @book{Doe86,
            author = {Doe, John},
            year = {1986},
            title = {some book},
        }
    \end{filecontents}


\begin{document}

I'm citing \cite{Doe86}

\printbibliography

\end{document}

奇怪的是,無論我編譯的頻率如何(乳膠和 biber),它都會產生以下輸出。我究竟做錯了什麼?

在此輸入影像描述

答案1

在目前版本中,biblatex我將使用名稱包裝器將粗體套用至名稱。如果您想要混合family-given/given-family順序,您仍然需要重新定義名稱格式(因為數字樣式的預設值是given-family順序)。

\documentclass{scrreprt}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}

\usepackage[
  backend=biber,
  style=numeric-comp,
  sorting=none,
]{biblatex}

\DeclareNameAlias{sortname}{family-given/given-family}

\DeclareNameAlias{author}{sortname}
\DeclareNameAlias{editor}{sortname}
\DeclareNameAlias{translator}{sortname}

\DeclareNameWrapperFormat{sortname}{\mkbibbold{#1}}

\DeclareNameWrapperAlias{author}{sortname}
\DeclareNameWrapperAlias{editor}{sortname}
\DeclareNameWrapperAlias{translator}{sortname}

\addbibresource{biblatex-examples.bib}

\begin{document}
I'm citing \cite{sigfridsson,nussbaum}

\printbibliography
\end{document}

**西格弗里德森、艾瑪和烏爾夫·賴德**。 「從靜電勢和力矩導出原子電荷的方法比較」。參見:《計算化學期刊》19.4 (1998),第 377–395 頁。 doi: 10.1002/(SICI)1096-987X(199803)19:4<377::AID-JCC1>3.0.CO;2-P.//**努斯鮑姆,瑪莎**。亞里斯多德的“De Motu Animalium”。普林斯頓:普林斯頓大學出版社,1978 年。


問題中的程式碼的問題在於它定義了一種名稱格式(family-given/given-family-bold),但隨後用過的一種不同的、不存在的格式 ( given-family-bold)。不存在的格式會導致你得到奇怪的輸出。可以如下重新設計(但我仍然更喜歡上面的解決方案)。

\documentclass{scrreprt}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}

\usepackage[
  backend=biber,
  style=numeric-comp,
  sorting=none,
]{biblatex}


\DeclareNameFormat{family-given/given-family-bold}{%
  \mkbibbold{%
    \ifnumequal{\value{listcount}}{1}
      {\ifgiveninits
          {\usebibmacro{name:family-given}
              {\namepartfamily}
              {\namepartgiveni}
              {\namepartprefix}
              {\namepartsuffix}}
          {\usebibmacro{name:family-given}
              {\namepartfamily}
              {\namepartgiven}
              {\namepartprefix}
              {\namepartsuffix}}%
          \ifboolexpe{%
              test {\ifdefvoid\namepartgiven}
              and
              test {\ifdefvoid\namepartprefix}}
          {}
          {\usebibmacro{name:revsdelim}}}
      {\ifgiveninits
          {\usebibmacro{name:given-family}
              {\namepartfamily}
              {\namepartgiveni}
              {\namepartprefix}
              {\namepartsuffix}}
          {\usebibmacro{name:given-family}
              {\namepartfamily}
              {\namepartgiven}
              {\namepartprefix}
              {\namepartsuffix}}}%
    \usebibmacro{name:andothers}}}

\DeclareNameAlias{sortname}{family-given/given-family-bold}

\DeclareNameAlias{author}{sortname}
\DeclareNameAlias{editor}{sortname}
\DeclareNameAlias{translator}{sortname}


\addbibresource{biblatex-examples.bib}

\begin{document}
I'm citing \cite{sigfridsson,nussbaum}

\printbibliography
\end{document}

輸出是相同的。

相關內容