Получить стиль библиографии книги Келли «Общая топология» с помощью bibtex

Получить стиль библиографии книги Келли «Общая топология» с помощью bibtex

Я хотел бы получитьbibliography style книгу КеллиОбщая топология: введите описание изображения здесь введите описание изображения здесь

Я читал варианты, которыеLaTeX естьздесьи, по-видимому, нет ничего похожего на книгу Келли.

Возможно ли получить то, что я хочу?

Спасибо

PD: Я этого не говорил, но предполагается, что он будет использовать стандарт bibtex, т. е. data_base.bib+ style_file.bst, но я не против, если мне понадобятся дополнительные пакеты. @AlanMunn говорит, что с этой опцией сложно. Пожалуйста, не стесняйтесь предлагать другое решение. Я сосредоточен только на стиле, а не на пути.

Приложение.

Следуя совету @moewe, я собираюсь выделить то, что является основной частью, которую я хочу воссоздать. Очевидно, это формат

Автор (в sc) Цитата (с отступом и перезаписью для каждого нового автора).

Формат надлежащего цитирования не имеет значения. Например, я хотел бы

Название (Издание), Редакционная статья, Страна (Год). Примечания

для книг и, возможно,

Название, Журнал, Том (в bf) Страницы (год) для журналов,

но это вообще не имеет значения.

Что бы я хотел иметь полесубтитрыуметь правильно писать субтитры, потому что иногда они пишутсяпримечаниеполя.

И наконец, если я использую \cite{kuratowski:topologie2}, я хочу автоматически получить Куратовского [2].

Спасибо.

решение1

Я сосредоточился на «интересной» части стиля: ссылка автора+номера и грубая разметка библиографии. Остальные правки должны быть выполнимы с небольшим исследованием этого сайта.

Если мы основываем наш стиль на biblatex-philosophy«s», philosophy-modernнам нужно только убедиться, что в ссылках указан не «год автора», а «номер автора».

На данный момент я не могу придумать простого способа сделать это (запрос на функцию уже отправлен):https://github.com/plk/biblatex/issues/718), поэтому я придумал следующее. Мы делаем вид, что используем алфавитный стиль, который использует только имена авторов в своей метке. Обычно style=alphabeticиспользует только части имени автора и года (например, SR98, Knu84). Если метка неоднозначна, Biber вычисляет значение extraalpha(например, Knu86а, Кну86б). Поскольку наши метки — это только имена, 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}

введите описание изображения здесь


biblatexВ версии 3.12 появился новый extranameсчетчик, который мы можем использовать здесь вместо хака с extraalpha. Просто замените extraalphaна extranameв коде выше и удалите \DeclareLabelalphaTemplateопцию labelalpha.

\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}

Результат тот же.

Связанный контент