参考书目样式与 amsalpha 类似,但没有年份

参考书目样式与 amsalpha 类似,但没有年份

我见过使用类似于的参考书目样式\bibliographystyle{amsalpha},不同之处在于参考文献看起来像例如“[Se],[Se 1]”代表 Serre 撰写的两篇不同论文,而不是“[Se76]”和“[Se76a]”代表 Serre 于 1976 年撰写的两篇论文。出于某种原因,我更喜欢第一个,即使它包含的信息较少——可能我只是喜欢它占用的空间更少并且看起来更简单。

但是书目样式是什么?我可以使用\bibliographystyle{...}内置样式吗?还是有更复杂的方法?

答案1

由于amsalpha已经完成了您要求的所有事情,我们“只”需要找到一种方法来从标签中删除年份,并将消歧义字母转换为数字。

需要对原文amsalpha.bst进行以下修改

--- amsalpha.bst    2020-06-01 17:00:10.000000000 +0200
+++ amsalpha-authoronly.bst 2020-06-25 08:46:04.906964900 +0200
@@ -1,3 +1,16 @@
+%%%% amsalpha-authoronly
+%%%% version of amsalpha without year in label
+%%%% https://tex.stackexchange.com/q/551022/35864
+%%%% 2020-06-25 MW
+%%%%
+%%%% an unmodified amsalpha.bst can be obtained from
+%%%% https://ctan.org/tex-archive/macros/latex/required/amscls
+%%%%
+%%%% original (unchanged) copyright header follows
+%%%%
+%%%% (this does NOT imply any support or endorsement by any of the
+%%%%  organizations or people listed below)
+%%%%
 %% filename: amsalpha.bst
 %% version: 2.0
 %% date: 2000/03/27
@@ -1135,8 +1148,6 @@
     }
   if$
   duplicate$
-  year field.or.null purify$ #-1 #2 substring$
-  *
   'label :=
   year field.or.null purify$ #-1 #4 substring$
   *
@@ -1294,13 +1305,13 @@
 }
 
 FUNCTION {forward.pass}
-{ last.sort.label sort.label =
+{ last.sort.label label =
     { last.extra.num #1 + 'last.extra.num :=
-      last.extra.num int.to.chr$ 'extra.label :=
+      last.extra.num int.to.str$ "~" swap$ * 'extra.label :=
     }
-    { "a" chr.to.int$ 'last.extra.num :=
+    { #1 'last.extra.num :=
       "" 'extra.label :=
-      sort.label 'last.sort.label :=
+      label 'last.sort.label :=
     }
   if$
   author empty$ { editor empty$ { "" } 'editor if$ } 'author if$
@@ -1318,8 +1329,8 @@
 }
 
 FUNCTION {reverse.pass}
-{ next.extra "b" =
-    { "a" 'extra.label := }
+{ next.extra "~2" =
+    { "~1" 'extra.label := }
     'skip$
   if$
   label extra.label * 'label :=
  • 第一个更改(删除year field.or.null purify$ #-1 #2 substring$)是从标签中删除年份。

  • 然后我们在某些情况下sort.label进行更改label以确保正确计算额外的标签信息。

  • 所有其他更改都与从消歧义字母到消歧义数字的转换有关。

应用这些更改后的文件amsalpha-authoronly.bst可以从以下位置下载:https://gist.github.com/moewew/91da90f4aa73084d5a365d0de7467c18

\bibliographystyle{amsalpha-authoronly}你一起得到

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\begin{filecontents}{\jobname.bib}
@book{appleby0,
  author    = {Humphrey Appleby},
  title     = {On the Importance of the Civil Service},
  year      = {1980},
  publisher = {Pub \& Co.},
  address   = {London},
}
@book{appleby1,
  author    = {Humphrey Appleby},
  title     = {On the Ablative Case in {Greek}},
  year      = {1981},
  publisher = {Latin \& Co.},
  address   = {Oxford},
}
\end{filecontents}

\begin{document}
\cite{appleby0,appleby1}
\bibliographystyle{amsalpha-authoronly}
\bibliography{\jobname}
\end{document}

[应用程序 1、应用程序 2]

答案2

您可以这样使用 Biblatex 大致做到这一点。(moewe 的答案是正确的,但作为参考,我认为这可以很好地进行比较,因为 Biblatex 通常更容易定制。)

这里我从标准样式“字母”开始。我找到了创建标签的定义并从中删除了年份部分。然后我会得到像“Knua”和“Knub”这样的标签,所以我还更改了“额外”字段的格式以添加空格和数字,而不是将其转换为字母。

\documentclass{article}

\usepackage[style=alphabetic]{biblatex}
\addbibresource{biblatex-examples.bib}

% Copied from biblatex.def but with three lines about year commented out
\DeclareLabelalphaTemplate{
  \labelelement{
    \field[final]{shorthand}
    \field{label}
    \field[strwidth=3,strside=left,ifnames=1]{labelname}
    \field[strwidth=1,strside=left]{labelname}
  }
  %\labelelement{
  %  \field[strwidth=2,strside=right]{year}
  %}
}

% In biblatex.def:
% \DeclareFieldFormat{extraalpha}{\mknumalph{#1}}%
% Instead take the number as it is:
\DeclareFieldFormat{extraalpha}{~#1}

\begin{document}
\cite{kullback}
\cite{knuth:ct:c}
\cite{knuth:ct:b}
\cite{knuth:ct:a}
\printbibliography
\end{document}

由此得出以下结论: 在此处输入图片描述

我认为你会喜欢“Knu”、“Knu 1”和“Knu 2”,而不是“Knu 1”、“Knu 2”和“Knu 3”,但我还没有尝试对此做任何事情。(坦率地说,我更喜欢在所有需要区分的标签上添加一些明确的额外内容。)

相关内容