使用 biblatex 字母样式控制缩进

使用 biblatex 字母样式控制缩进

我有以下使用 biblatex 的最少代码:

测试.tex

\documentclass[twoside,twocolumn,10pt]{article}

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

\usepackage[backend=biber,style=alphabetic]{biblatex}
\addbibresource{bibliography.bib}

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

参考书目

@article{thorvarson61,
   author={Þorvarson, Æsir},
   title={Using \LaTeX{} in Norse Linguistics},
   journal={J Nor Ling},
   volume={1},
   year=1981,
   pages={1--10}
}

由于我的参考书目中有包含非 ASCII UTF-8 字符的作者姓名,因此需要 Biber。但是,我得到的缩进如下:

不想要的压痕

虽然我希望缩进看起来像:

所需缩进

后者来自一个包含以下代码和手动创建的参考书目列表的文件(该代码似乎不会影响 bibtex 或 biblatex 生成的参考书目)

\renewenvironment{thebibliography}[1]
 {\section{\refname}%
  \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}%
  \list{\@biblabel{\@arabic\c@enumiv}}%
       {\settowidth\labelwidth{\@biblabel{#1}}%
        \leftmargin\labelwidth
        \advance\leftmargin\labelsep
       \setlength{\itemsep}{-0.5\parsep}
       \wscgraggedright
       \setlength{\parsep}{1.0ex}
        \@openbib@code
        \usecounter{enumiv}%
        \let\p@enumiv\@empty
        \renewcommand\theenumiv{\@arabic\c@enumiv}}%
  \sloppy
  \clubpenalty4000
  \@clubpenalty \clubpenalty
  \widowpenalty4000%
  \sfcode`\.\@m}
 {\def\@noitemerr
   {\@latex@warning{Empty `thebibliography' environment}}%
  \endlist}

我尝试复制\defbibenvironmentalphabetic.bst修改它,但无法实现类似的风格,因为所有的更改似乎\leftmargin都会以不良的方式影响标签。

答案1

您可以尝试以下方法

\setlength{\biblabelsep}{\labelsep}% <-- adjust this to your liking, the standard is 2\labelsep
\defbibenvironment{bibliography}
  {\list
     {\printtext[labelalphawidth]{%
        \printfield{prefixnumber}%
        \printfield{labelalpha}%
        \printfield{extraalpha}}}
     {\setlength{\labelsep}{\biblabelsep}%
      \setlength{\leftmargin}{\labelsep}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}}%
      \renewcommand*{\makelabel}[1]{##1\hss}}
  {\endlist}
  {\item}

相关内容