使用 bibtex 获取 Kelley 的书《General topology》的书目样式

使用 bibtex 获取 Kelley 的书《General topology》的书目样式

我想得到bibliography style凯利的书通用拓扑在此处输入图片描述 在此处输入图片描述

我一直在LaTeX阅读这里显然没有人能读出凯利的书。

我能得到我想要的吗?

谢谢

PD:我没说过,但它应该使用标准bibtex,即data_base.bib+ style_file.bst,但如果我需要额外的包,我并不介意。@AlanMunn 说使用此选项很困难。请随意提供其他解决方案。我只关注风格,而不是方式。

附录

根据@moewe的建议,我将重点介绍我想要重建的主要部分。显然是格式

作者(在sc)引用(缩进并随着每个新作者重新开始)。

正确引用的格式并不重要。例如,我想

标题(版本)、编辑、国家(年份)。注释

对于书籍,也许

期刊名称、期刊、卷数(页数bf)(年份),

但这根本无所谓。

我想要一个领域字幕能够正确地写字幕,因为有时字幕是用笔记字段。

最后,如果我使用\cite{kuratowski:topologie2},我希望自动获得Kuratowski [2]。

谢谢。

答案1

我专注于风格中“有趣”的部分:作者+数字引用和粗略的参考书目布局。其余的调整应该可以通过对本网站进行一些研究来完成。

如果我们以biblatex-philosophy“s”为基础确定我们的风格philosophy-modern,我们只需要确保引用不是“作者年份”,而是“作者编号”。

我目前想不出一个简单的方法来做到这一点(功能请求已经出来:https://github.com/plk/biblatex/issues/718),所以我想到了以下方法。我们假装使用一种字母样式,该样式在标签中只使用作者姓名。通常style=alphabetic只使用作者姓名和年份的部分(例如 SR98、Knu84)。如果标签不明确,Biber 会计算一个extraalpha值(例如 Knu86A, Knu86b)。由于我们的标签只是名称,因此extraalpha会得到“Nussbaum”(如果没有“Nussbaum”的其他作品)和“Knutha”,“Knuthb”。这extraalpha几乎就是我们的数字:如果没有extraalpha(“Nussbaum”),我们取 1,否则extraalpha就是我们的数字。

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

\usepackage[style=philosophy-modern, backend=biber, labelalpha, giveninits, uniquename=init, mergedate=false, volnumformat=plain]{biblatex}
\addbibresource{biblatex-examples.bib}


\DeclareLabelalphaTemplate{
  \labelelement{
    \field[final]{shorthand}
    \field{label}
    \field{labelname}
  }
}

\renewbibmacro*{relateddate}{%
  \setunit*{\addspace}%
  \printtext[parens]{\printdate}}
\renewbibmacro*{commarelateddate}{\usebibmacro{relateddate}}

\DeclareFieldFormat{extraalpha}{\mkbibbrackets{#1}}
\renewbibmacro{date+extradate}{%
  \postsepyear{%
    \usebibmacro{extralabel}}}

\newbibmacro{extralabel}{%
  \iffieldundef{extraalpha}
    {\printtext[extraalpha]{1}}
    {\printfield{extraalpha}}}

\newbibmacro{cite:extralabel}{%
  \printtext[bibhyperref]{\usebibmacro{extralabel}}}

\makeatletter
\renewbibmacro*{cite:AY:noshorthand}{%
  \ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
       {\usebibmacro{cite:label}%
        \usebibmacro{cite:reinit}}
       {\iffieldequals{namehash}{\cbx@lasthash}
          {\setunit{\addcomma\space}%
           \usebibmacro{cite:extralabel}}
          {\printnames{labelname}%
           \setunit{\addspace}%
           \usebibmacro{cite:extralabel}%
           \savefield{namehash}{\cbx@lasthash}}}}
\makeatother

\DeclareNameAlias{sortname}{given-family}
\AtBeginBibliography{\renewcommand*{\mkbibnamefamily}{\textsc}}

\DeclareFieldFormat*{title}{\mkbibemph{#1}}
\DeclareFieldFormat*{journaltitle}{#1}
\DeclareFieldFormat[article,periodical]{volume}{\mkbibbold{#1}}

\begin{document}
\cite{sigfridsson,worman,knuth:ct:a,knuth:ct:b}
\printbibliography
\end{document}

在此处输入图片描述


biblatex3.12 版新增了extraname计数器,我们可以在这里使用它来代替 hack extraalpha。只需在上面的代码中替换extraalpha为,然后删除选项即可。extraname\DeclareLabelalphaTemplatelabelalpha

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

\usepackage[style=philosophy-modern, backend=biber, giveninits, uniquename=init, mergedate=false, volnumformat=plain]{biblatex}
\addbibresource{biblatex-examples.bib}

\renewbibmacro*{relateddate}{%
  \setunit*{\addspace}%
  \printtext[parens]{\printdate}}
\renewbibmacro*{commarelateddate}{\usebibmacro{relateddate}}

\renewbibmacro{date+extradate}{%
  \postsepyear{%
    \usebibmacro{extralabel}}}

\DeclareFieldFormat{extraname}{\mkbibbrackets{#1}}
\newbibmacro{extralabel}{%
  \iffieldundef{extraname}
    {\printtext[extraname]{1}}
    {\printfield{extraname}}}

\newbibmacro{cite:extralabel}{%
  \printtext[bibhyperref]{\usebibmacro{extralabel}}}

\makeatletter
\renewbibmacro*{cite:AY:noshorthand}{%
  \ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
       {\usebibmacro{cite:label}%
        \usebibmacro{cite:reinit}}
       {\iffieldequals{namehash}{\cbx@lasthash}
          {\setunit{\addcomma\space}%
           \usebibmacro{cite:extralabel}}
          {\printnames{labelname}%
           \setunit{\addspace}%
           \usebibmacro{cite:extralabel}%
           \savefield{namehash}{\cbx@lasthash}}}}
\makeatother

\DeclareNameAlias{sortname}{given-family}
\AtBeginBibliography{\renewcommand*{\mkbibnamefamily}{\textsc}}

\DeclareFieldFormat*{title}{\mkbibemph{#1}}
\DeclareFieldFormat*{journaltitle}{#1}
\DeclareFieldFormat[article,periodical]{volume}{\mkbibbold{#1}}

\begin{document}
\cite{sigfridsson,worman,knuth:ct:a,knuth:ct:b}
\printbibliography
\end{document}

输出是一样的。

相关内容