如何才能对参考书目中的参考文献进行编号,而不考虑它们在文档中的出现顺序?

如何才能对参考书目中的参考文献进行编号,而不考虑它们在文档中的出现顺序?

lsalike.bib我正在使用和整理一份语言学参考书目lsalike.sty。我使用 和 生成它\nocite{*},并希望对参考文献进行编号(但保持通常的顺序)。

我对 LaTeX 还不太熟悉,但这是我尝试 MWE 的方法。这是我目前能做到的最接近的程度。

文档:

\documentclass{article}
\usepackage{lsalike}

\makeatletter
\renewcommand\@biblabel[1]{\@arabic\c@enumi}
\makeatother

\begin{document}

\nocite{*}

\bibliographystyle{lsalike}
\bibliography{mwe-bib}
\end{document}

参考书目文件:

@phdthesis{Nossalik:2009aa,
    Author = {Larissa Nossalik},
    School = {McGill University},
    Title = {L2 Acquisition of {R}ussian Aspect},
    Year = {2009}
    }

 @article{Bermel:1995aa,
    Author = {Neil Bermel},
    Journal = {{R}ussian {L}inguistics},
    Number = {3},
    Pages = {333--348},
    Title = {Aspect and the Shape of Action in {O}ld {R}ussian},
    Volume = {19},
    Year = {1995}
    }

这给了我一个引用列表,0每个引用前面都有 。有没有办法1在列表中的第一个引用之前、2第二个引用之前等等显示?

答案1

lsalike包用于进行作者年份引用:

“lsalike”书目样式(lsalike.bst)创建带有标签的引文,例如

  \citeauthoryear{author-info}{year}

这些标签由以下命令处理:[...]

因此参考书目不应该有数字。如果您仍然想要数字,您可以执行不同的修补:

\usepackage{etoolbox}
\patchcmd{\thebibliography}{\setlength}{\usecounter{enumiv}\setlength}{}{}
\makeatletter
\renewcommand\@biblabel[1]{\stepcounter{enumiv}[\arabic{enumiv}]}
\makeatother

数字将会出现在边缘处。

在此处输入图片描述

根据 Guido 的建议,可以将数字推到边距内:

\renewcommand\@biblabel[1]{\stepcounter{enumiv}\hspace{\bighang}[\arabic{enumiv}] }

答案2

我不知道你对这种lsalike风格有多固执,但这biblatex将是一项非常简单的任务:

\begin{filecontents}{mwe-bib.bib}
@phdthesis{Nossalik:2009aa,
    Author = {Larissa Nossalik},
    School = {McGill University},
    Title = {L2 Acquisition of {R}ussian Aspect},
    Year = {2009}
    }

 @article{Bermel:1995aa,
    Author = {Neil Bermel},
    Journal = {{R}ussian {L}inguistics},
    Number = {3},
    Pages = {333--348},
    Title = {Aspect and the Shape of Action in {O}ld {R}ussian},
    Volume = {19},
    Year = {1995}
    }

\end{filecontents}

\documentclass{article}
%\usepackage{lsalike}
\usepackage[
    sorting=nyt,
    style=numeric,
    backend=bibtex,
]{biblatex}

%\makeatletter
%\renewcommand\@biblabel[1]{\@arabic\c@enumi}
%\makeatother

\bibliography{mwe-bib}

\begin{document}
\cite{Nossalik:2009aa}
\cite{Bermel:1995aa}
\nocite{*}

\printbibliography

%\bibliographystyle{lsalike}
%\bibliography{mwe-bib}
\end{document}

我认为调整 biblatex 风格以适应 lsalike 风格可能比在现有的参考书目风格中引入一些奇怪的计数器要容易得多

答案3

提出的解决方案的替代方案@egeg

\usepackage{etoolbox}
\newcounter{lsaref}
\makeatletter
\apptocmd{\@lbibitem}{\stepcounter{lsaref}\arabic{lsaref}.}{}{}
\makeatother

相关内容