如何创建自定义引用样式

如何创建自定义引用样式

例如我想按以下方式引用:

[FHK+2002] U. Fischer、M. Heinzler、R. Kilgus、F. Näher、S. Oesterle、H. Paetzold、W. Röhrer、A. Stephan、R. Winkow:金属表册,欧洲教学出版社,2002 年

[GHS2002] D. Gross、W. Hauger、W. Schnell:力学技术,Band2 Elastostatik,Springer-Verlag,柏林,2002

[MMWW2004] G. Merzinger、G. Mühlbach、D. Wille、T. Wirth:《Formeln + Hilfen zur höheren Mathematik》,Binomi Verlag,2004 年

[QuSa2006] A. Quarteroni、F. Saleri:《用 MATLAB 进行科学计算》,Springer-Verlag,柏林,2006 年

我如何在 LaTeX 中做到这一点?我尝试使用alpha样式,apa它只提供第一个作者的名字。我不想那样。有人能帮我吗?我上面给出了多个作者的例子,它需要名字中的首字母和单个作者的前 4 个字母。希望得到好的答案...

答案1

biblatexalphabetic在生成标签时,样式非常灵活,使用时可以高度定制比贝尔;所以接下来我们将必须使用 Biber。

以下内容似乎非常接近您的需要。

您必须加载biblatex选项style=alphabetic, maxnames=999, minalphanames=3, firstinits=true, backend=biber

\usepackage[style=alphabetic, maxnames=999, minalphanames=3, firstinits=true, backend=biber]{biblatex}

使用alphabetic在参考书目中显示所有名称、标签中至少显示三个名称(如果可用)并且仅显示首字母的样式。

标签格式变为

\DeclareLabelalphaTemplate{
  \labelelement{
    \field[final]{shorthand}
    \field{label}
    \field[strwidth=4,strside=left,ifnames=1]{labelname}
    \field[strwidth=2,strside=left,ifnames=2]{labelname}
    \field[strwidth=1,strside=left]{labelname}
  }
  \labelelement{
    \field{year}
  }
}

这将打印单个姓名的前四个字母、两个姓名的前两个字母以及姓氏的第一个字母(如果有多个姓名)。年份将始终以完整形式显示。

\renewcommand*{\finalnamedelim}{\multinamedelim}
\renewcommand*{\labelnamepunct}{\addcolon\space}

我们还重新定义了名称之间的分隔符(没有“和”之类的词,列表中姓氏仅用逗号分隔)和参考书目中名称和标题之间的标点符号以及出版商和位置的顺序:

\renewbibmacro*{publisher+location+date}{%
  \printlist{publisher}%
  \setunit{\addcomma\space}%
  \printlist{location}%
  \setunit{\addcomma\space}%
  \usebibmacro{date}%
  \newunit}

平均能量损失

\documentclass[ngerman]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{filecontents}
\usepackage{lmodern}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=alphabetic,maxnames=999,minalphanames=3,firstinits=true]{biblatex}
\usepackage{hyperref}
\begin{filecontents*}{\jobname.bib}
@book{tabmet,
  author    = {Ulrich Fischer and Max Heinzler and Roland Kilgus and Friedrich Näher and Stefan Oesterle and Heinz Paetzold and Werner Röhrer and Andreas Stephan and Ralf Winkow},
  title     = {Tabellenbuch Metall},
  edition   = {42},
  year      = {2002},
  publisher = {Verlag Europa-Lehrmittel},
  location  = {Haan-Gruiten},
}
@book{techmech:elast,
  author    = {Walter Schnell and Dietmar Gross and Werner Hauger},
  maintitle = {Technische Mechanik},
  volume    = {2},
  title     = {Elastostatik},
  edition   = {4},
  publisher = {Springer},
  date      = {2002},
  location  = {Berlin},
}
@book{fohi,
  title     = {Formeln + Hilfen zur höheren Mathematik},
  author    = {Gerhard Merziger and Günter Mühlbach and Detlef Wille and Thomas Wirth},
  location  = {Springe},
  publisher = {Binomi},
  date      = {2004},
}
@book{matlab,
  author      = {Alfio Quarteroni and Fausto Saleri},
  title       = {Wissenschaftliches Rechnen mit MATLAB},
  translator  = {Klaus Sapelza},
  publisher   = {Springer},
  date        = {2006},
  location    = {Berlin},
}
\end{filecontents*}
\renewcommand*{\finalnamedelim}{\multinamedelim}
\renewcommand*{\labelnamepunct}{\addcolon\space}

\DeclareLabelalphaTemplate{
  \labelelement{
    \field[final]{shorthand}
    \field{label}
    \field[strwidth=4,strside=left,ifnames=1]{labelname}
    \field[strwidth=2,strside=left,ifnames=2]{labelname}
    \field[strwidth=1,strside=left]{labelname}
  }
  \labelelement{
    \field{year}
  }
}

\renewbibmacro*{publisher+location+date}{%
  \printlist{publisher}%
  \setunit{\addcomma\space}%
  \printlist{location}%
  \setunit{\addcomma\space}%
  \usebibmacro{date}%
  \newunit}

\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}
  \cite{tabmet,techmech:elast,fohi,matlab,wilde}
  \printbibliography
\end{document}

在此处输入图片描述

相关内容