![Суперполный текст со стилем=алфавитный](https://rvso.com/image/305907/%D0%A1%D1%83%D0%BF%D0%B5%D1%80%D0%BF%D0%BE%D0%BB%D0%BD%D1%8B%D0%B9%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%20%D1%81%D0%BE%20%D1%81%D1%82%D0%B8%D0%BB%D0%B5%D0%BC%3D%D0%B0%D0%BB%D1%84%D0%B0%D0%B2%D0%B8%D1%82%D0%BD%D1%8B%D0%B9.png)
Я использую \superfullcite{}
объясненныйздесь. Насколько я понимаю (боюсь, что это не так уж много), это в основном , \footfullcite{}
который появляется только один раз в качестве сноски, даже если цитируется несколько раз. Мне это очень нравится, так как это позволяет мне (используя \AtEveryCiteKey{\clearfield{...}}
) помещать (небольшие) цитаты в нижний колонтитул (или поле для tufte) и иметь (полную, длинную) цитату в конце.
Однако он использует numeric-comp
, и я бы предпочел, чтобы ссылки на мои цитаты были [XYZ99]
такими, (я думаю, это было бы alphabetic
) Таким образом, не существует подразумеваемого числового порядка, который сбивается при сортировке по алфавиту. Но если человек читает только библиографию.
Я не совсем уверен, как это сделать. По сути, не хватает только смены этикеток, однако я не уверен, как это сделать.
- Продолжать использовать
numeric-comp
иsorting=true
как-то изменять метки? - Начать использовать
alphabetic
и попытаться приступить\superfullcite{}
к работе?
MWE будет вот этим
% !TEX TS-program = pdflatex
% !TEX encoding = UTF-8 Unicode
%\documentclass[a4paper, nobib, notoc, symmetric, marginals=raggedouter, justified]{tufte-book} %
%\morefloats
%\morefloats
\documentclass{article}
\usepackage{csquotes}
\usepackage{hyphenat}
\usepackage[american]{babel}
\usepackage[block=nbpar, firstinits=false, backref=true, maxcitenames=1, maxbibnames=99, isbn=false, doi=false, url=false, eprint=false, style=numeric-comp, backend=biber, sorting=none, citetracker=true, defernumbers=true]{biblatex}
\bibliography{biblatex-examples}
%%=====
\makeatletter
\DeclareCiteCommand{\notefullcite}[\mkbibbrackets]
{\usebibmacro{cite:init}%
\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{notefullcite}%
\usebibmacro{cite:comp}}
{}
{\usebibmacro{cite:dump}%
\usebibmacro{postnote}}
\newbibmacro*{notefullcite}{%
\ifciteseen
{}
{\footnotetext[\thefield{labelnumber}]{%
\usedriver{}{\thefield{entrytype}}.}}}
% Declare superfullcite and remap it to cite
\DeclareCiteCommand{\superfullcite}[\cbx@superscript]%
{\usebibmacro{cite:init}%
\let\multicitedelim=\supercitedelim
\iffieldundef{prenote}
{}
{\BibliographyWarning{Ignoring prenote argument}}%
\iffieldundef{postnote}
{}
{\BibliographyWarning{Ignoring postnote argument}}}
{\usebibmacro{citeindex}%
\usebibmacro{superfullcite}%
\usebibmacro{cite:comp}}
{}
{\usebibmacro{cite:dump}}
\newbibmacro*{superfullcite}{%
\ifciteseen
{}
{\xappto\cbx@citehook{%
\noexpand\footnotetext[\thefield{labelnumber}]{%
\fullcite{\thefield{entrykey}}.}}}}
\newrobustcmd{\cbx@superscript}[1]{%
\mkbibsuperscript{#1}%
\cbx@citehook
\global\let\cbx@citehook=\empty}
\let\cbx@citehook=\empty
\makeatother
%\renewcommand{\cite}[1]{\superfullcite{#1}} %remap \superfullcite to \cite
\begin{document}
Some filler text \notefullcite{cotton}, then some more text
\notefullcite{hammond}. Perhaps some more text and the same
citation again \notefullcite{hammond}. Yet another one
\notefullcite{knuth:ct:a}. Now all again
\notefullcite{cotton,hammond,knuth:ct:a}.
Some filler text,\superfullcite{augustine} then some more
text.\superfullcite{companion} Perhaps some more text and the
same citation again.\superfullcite{companion} Yet another
one.\superfullcite{kastenholz} Now all
again.\superfullcite{augustine,companion,kastenholz}
\printbibliography
\end{document}
Как видите, я использую, sorting=none
но не могу изменить стиль на алфавитный, так как cite:init
и подобные макросы не работают. Может кто-нибудь объяснить, что они делают? Поиск в документации biblatex не дал результатов.
решение1
Мы можем определить новую команду \sfcite
, которая печатает стандартную ссылку и добавляет \footfullcite
сноску с полной библиографической записью при первом появлении ссылки.
\DeclareCiteCommand{\sfcite}[\mkbibbrackets]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}%
\ifciteseen
{}
{\footfullcite{\thefield{entrykey}}}}
{\multicitedelim}
{\usebibmacro{postnote}}
(Определение выше предназначено для работы с alphabetic
, но если вы удалите , [\mkbibbrackets]
оно будет работать со многими другими стандартными стилями. Основная идея заключается в добавлении \ifciteseen{}{\footfullcite{\thefield{entrykey}}}
блока после \usebibmacro{cite}
определения.)
МВЭ
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[style=alphabetic,backend=biber,citetracker=constrict]{biblatex}
\usepackage[colorlinks=true]{hyperref}
\addbibresource{biblatex-examples.bib}
\DeclareCiteCommand{\sfcite}[\mkbibbrackets]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}%
\ifciteseen
{}
{\footfullcite{\thefield{entrykey}}}}
{\multicitedelim}
{\usebibmacro{postnote}}
\begin{document}
Lorem \sfcite{wilde} ipsum \sfcite{cicero} dolor \sfcite{wilde} sit
\sfcite{geer} amet \sfcite{knuth:ct:a,knuth:ct:b}.
Cite again \sfcite{geer} and \sfcite{cicero}.
\end{document}