在 BibLaTeX 中将数字引用与非数字样式相结合

在 BibLaTeX 中将数字引用与非数字样式相结合

我正在写一篇论文,需要一种特定的书目样式,但我发现没有任何软件包直接支持这种样式。具体来说,我需要一个主要采用芝加哥风格的书目,但带有数字引文。这个问题触及了我的目标的核心,但却留下一个未解答的问题。答案满足了 OP 的要求,但并没有完全解决我的问题。
我需要芝加哥风格的作者姓名:Last1、First1、First2 Last2、First3 Last3 等。我还需要一些其他我已经想出来的小修改(引号内的逗号、大写姓名、期刊卷不斜体)。但该答案中的解决方案是在 biblatex 调用后插入 numeric.bbx,它不会保留姓名顺序,而是为所有作者打印 First Last。
enter image description here

我不知道如何将此命名切换为数字样式。我目前的解决方案是其他答案来自那篇文章,但每个条目的标签都未对齐:

Misaligned Labels

我的问题是:如果我使用数字样式(图 1),我该如何更改仅第一作者的命名顺序,或者我该如何调整插入的数字标签以一致对齐我的条目文本(图 2)?

我正在使用 .bib 文件来记录我的条目,我的 BibLaTeX 调用如下:

% Produce modified CMS citations and bibliography using bastardized MLA 
\usepackage[
bibstyle=mla,       % mla as starting point
citestyle=numeric,  % force numeric inline citations
natbib=true,        % not sure whether this is required
backend=biber,      % compiling stuff
maxnames=7,         % DTM guideline is up to 10
minnames=7,         %   biblatex defaults to minnames when max is exceeded,         
                    %   but need 7 per DTM
showmedium=false,   % don't print publication medium 
sorting=nty,        % sort name, title, year
language=american   % proper comma inside quotation behavior
]{biblatex}
\addbibresource{thbib.bib}

\AtBeginBibliography{\renewcommand*{\mkbibnamefamily}[1]
{\MakeUppercase{#1}}} % force author names to be uppercase
\AtBeginBibliography{\renewcommand*{\mkbibnamegiven}[1]{\MakeUppercase{#1}}}     
\DeclareFieldFormat{journalvolume}{#1} % Remove italicized formatting from 
                                       % journal volumes
\DeclareFieldFormat{booktitle}{#1} % Remove italicized formatting from 
                                   %   book title per CMS
\defbibheading{bibliography}{      % Change "Works Cited" to "Bibliography"
    \section*{Bibliography}}

%% SOLUTION FROM ANSWER/PHOTO 1 (does not give correct naming)
%% add citation numbers to bibliography (simulate numeric citation)
%\makeatletter
%\input{numeric.bbx}
%\makeatother

%% SOLUTION FROM ANSWER/PHOTO 2 (does not give correct number alignment)
\AtEveryBibitem{[\printfield{labelnumber}]\addspace}% Numbers in the bib

答案1

我认为这里最简单(也是最合理)的方法是从 moewe 的答案开始,然后简单地将名称格式更改为:

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

在全:

\documentclass{article}
\usepackage[
    citestyle=numeric,
    bibstyle=authoryear,
    maxbibnames=99,
]{biblatex}

\makeatletter
\input{numeric.bbx}
\makeatother

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

\addbibresource{biblatex-examples.bib}

\begin{document}
\cite{wilde,geer,worman,herrmann}
\printbibliography
\end{document}

enter image description here

但是,我注意到您使用的是mla书目样式的基础,而不是authoryear像这两个答案中那样。moewe 的方法将 bibstyle 和 citestyle 调动得更紧密一些。由于这mla不是标准样式,也许 Ulrike Fisher 的回答中保持事物更加分离的态度可能是明智的。为此,处理书目对齐的解决方案将是:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[citestyle=numeric,bibstyle=mla,maxbibnames=99]{biblatex}

\addbibresource{biblatex-examples.bib}

\defbibenvironment{bibliography}
  {\list
     {\printtext[labelnumberwidth]{%
        \printfield{labelprefix}%
        \printfield{labelnumber}}}
     {\setlength{\labelwidth}{\labelnumberwidth}%
      \setlength{\leftmargin}{\labelwidth}%
      \setlength{\labelsep}{\biblabelsep}%
      \addtolength{\leftmargin}{\labelsep}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}}%
      \renewcommand*{\makelabel}[1]{\hss##1}}
  {\endlist}
  {\item}

\DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{#1}}

\begin{document}

\cite{wilde,geer,worman,herrmann}

\printbibliography
\end{document}

enter image description here

相关内容