Нумерованные *и* буквенные ссылки в LaTeX

Нумерованные *и* буквенные ссылки в LaTeX

Википедия уже некоторое время имеет действительно удобную систему цитирования, где несколько случаев использования одной и той же ссылки обозначаются как, скажем, 1в тексте, но на них даются обратные ссылки из раздела библиографии как 1a, 1bи т. д.

Мне интересно, есть ли какой-либо пакет, предлагающий такую ​​же функциональность в LaTeX. Я смог найти только biblatex и natbib, ни один из которых не имеет такой схемы цитирования.

Макет:

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore[1] et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Он превозносит свою боль[2], и его сладострастие величает, и он не может убежать ни от кого[1]. За исключением тех случаев, когда человек не совершает никаких поступков, он впадает в ярость, ибо тот, кто официально заслуживает милости, трудится[1].

[1 а,б,в] Lorem ipsum dolor sit amet

[2] Последовательно, элита, се до эйусмод темп

где все 1 ссылаются на одну и ту же строку, но из этой строки каждый из них связан с одной буквой. В качестве альтернативы вы можете посмотреть на библиографию и стиль цитированияЭта статья.

Пожалуйста, помогите мне получить MWE этой функциональности на основе этой основы:

\documentclass{article}
\usepackage{filecontents}

\begin{filecontents}{jobname.bib}
@book{ref1,
title = {Book's title},
author = {Author, Some},
location = {The City},
publisher = {Publisher},
date = {2005},
}
@book{ref2,
title = {Book's title},
author = {A. U. Thor},
location = {The City},
publisher = {Publisher},
date = {2005},
}
\end{filecontents}

\usepackage[style=ieee,backend=bibtex]{biblatex}
\bibliography{jobname}

\begin{document}
Lorem ipsum dolor sit amet, consectetur adipiscing elit\cite{ref1}, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat\cite{ref2}. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui\cite{ref1} officia deserunt mollit anim id est laborum.
\printbibliography
\end{document}

решение1

Использование BibLateX

Можно использовать \AtEveryCiteKeyдля вставки якоря и сохранения backref в каждой команде cite. Затем вы можете использовать возможности форматирования BibLateX для добавления списка backreference где-нибудь в библиографических записях.

\documentclass{article}
\usepackage{filecontents}

\begin{filecontents}{jobname.bib}
@book{ref1,
title = {Book's title},
author = {Author, Some},
location = {The City},
publisher = {Publisher},
date = {2005},
}
@book{ref2,
title = {Book's title},
author = {A. U. Thor},
location = {The City},
publisher = {Publisher},
date = {2005},
}
\end{filecontents}

\usepackage[style=ieee,backend=bibtex]{biblatex}
\bibliography{jobname}

\usepackage[colorlinks]{hyperref} % If needed

\makeatletter
\newcounter{backref@bref}
\AtEveryCitekey{% Appends a target for hyperlink, and setups backref
    \stepcounter{backref@bref}%
        \ifhyperref{%
            \Hy@raisedlink{\hypertarget{bref.\thebackref@bref}{}}%
        }{}%
        \listcsxadd{bref@\abx@field@entrykey}{bref.\thebackref@bref}%
}
\AfterEndPreamble{% Needs to wait until hyperref is loaded
\DeclareFieldFormat{labelnumberwidth}{%
    \printtext[brackets]{#1% Label number
    \setcounter{backref@bref}{0}%
    \renewcommand*{\do}[1]{
        \stepcounter{backref@bref}%
        \ifhyperref{\hyperlink{##1}{\alph{backref@bref}}}%
        {\alph{backref@bref}}%
    }%
    \dolistcsloop{bref@\abx@field@entrykey}% List of back refs
    }%
}}
\makeatother

\begin{document}
Lorem ipsum sit amet, consectetur adipiscing elit\cite{ref1}, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat\cite{ref2}. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui\cite{ref1} officia deserunt mollit anim id est laborum.
\printbibliography
\end{document}

рендеринг

Использование BibTeX и hyperref/backref

Вот способ сделать это, используя hyperrefпакет с backrefопцией. Он просто выводит обратные ссылки, используя a,b,...инкремент счетчика.

\makeatletter
\newcounter{backref@bref} %Define new counter
\long\def\hyper@letters@backref#1#2#3{ %Defines new backref printer
    \stepcounter{backref@bref}%
    \hyperlink{#3}{\alph{backref@bref}}% Shows backref@bref as a letter
}
\let\backrefxxx\hyper@letters@backref %Selects printer
\renewcommand{\backref}[1]{%
    \setcounter{backref@bref}{0} %Reset the counter at each ref
    [#1\ ]%
}
\makeatother

Чтобы поместить обратную ссылку внутрь ссылочной метки, как в Википедии, я полагаю, вам придется подключиться к \bibitem.

Также обратите внимание, что этот backrefпакет предназначен для печати номеров разделов или страниц обратных ссылок, что лучше, чем a,b..нумерация,особенно если вы планируете распечатать документ.

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