Мой предпочтительный стиль цитирования biblatex
— это numeric-comp
стиль с autocite=superscript
опцией. Однако иногда мне нужно сослаться на конкретную ссылку в тексте, и поэтому я хотел бы перейти на что-то вроде authoryear
этого.
Использование \textcite
just отменяет опцию superscript. Можно ли написать новую функцию, которая позволит мне смешивать два стиля цитирования?
МВЭ:
\documentclass{report}
\begin{filecontents}{example.bib}
@article {Example_article,
AUTHOR = {Author, A. B.},
TITLE = {A example paper},
JOURNAL = {Example journal},
VOLUME = {1},
YEAR = {2018},
NUMBER = {1},
PAGES = {1-100}}
\end{filecontents}
\usepackage[style=numeric-comp,
autocite=superscript,
backend=biber
]{biblatex}
\addbibresource{example.bib}
\begin{document}
I normally cite like this \autocite{Example_article} which is great but sometimes I want to do this \textcite{Example_article} but it doesn't seem to to work.
\end{document}
Это производит:
Обычно я цитирую так 1 , что замечательно, но иногда мне хочется сделать так: Автор [1], но это, похоже, не работает.
когда я хотел бы:
Обычно я цитирую так: 1 , что замечательно, но иногда мне хочется сделать это: Автор (2018), но это, похоже, не работает.
Предпочтительно указывать только одного автора и др. (год), если авторов несколько.
решение1
В целом, лучше определить новую команду через \DeclareCiteCommand
вместо того, чтобы объединять несколько \cite...
команд в \newcommand
. Хотя вы можете не увидеть преимуществ для вашего конкретного варианта использования, хорошей идеей будет избегать плохих привычек. Подход \newcommand
может пойти не так, особенно в случаях с пред- и постсносками или если вы хотите сослаться на несколько источников одновременно.
\documentclass{report}
\usepackage[style=numeric-comp,
minbibnames=3,
maxbibnames=5,
maxcitenames=2,
mincitenames=1,
autocite=superscript,
backend=biber,
labeldateparts,
]{biblatex}
\usepackage{hyperref}
\newbibmacro{aycite}{%
\printtext[bibhyperref]{%
\printnames{labelname}%
\setunit{\addspace}%
\printtext[parens]{%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
\printlabeldate
\setunit{\addsemicolon\space}%
\printtext{ref\adddot}%
\setunit{\addspace}%
\printfield{labelprefix}%
\printfield{labelnumber}%
\ifnumequal{\value{citecount}}{\value{citetotal}}
{\usebibmacro{postnote}}
{}}}}
\DeclareCiteCommand{\aycite}
{}
{\usebibmacro{citeindex}%
\usebibmacro{aycite}}
{\multicitedelim}
{}
\addbibresource{biblatex-examples.bib}
\begin{document}
How about this where \aycite{sigfridsson} discus a topic.
How about this where \aycite[cf.][1]{sigfridsson} discuss a topic.
How about this where \aycite{sigfridsson,worman} discuss a topic.
\printbibliography
\end{document}
решение2
Я придумал ответ, который, как мне кажется, является удовлетворительным. В процессе эти два вопроса были полезны:Вопрос 1ивопрос 2
Я также должен сказать, что согласен с комментариями @cfr о справочных метках, но это не было в моих мыслях, так как я обычно использую пакет, hyperref
поэтому цитаты и ссылки связаны. Я обычно просто нажимаю на цитаты, а не использую их как ключи в справочной таблице. Поэтому я включил метки в свое решение.
Вот что у меня получилось:
\documentclass{report}
\begin{filecontents}{example.bib}
@article {Example_article,
AUTHOR = {Author, A. B.},
TITLE = {A example paper},
JOURNAL = {Example journal},
VOLUME = {1},
YEAR = {2018},
NUMBER = {1},
PAGES = {1-100}}
\end{filecontents}
\usepackage[style=numeric-comp,
minbibnames=3,
maxbibnames=5,
maxcitenames=2,
mincitenames=1,
autocite=superscript,
backend=biber
]{biblatex}
\usepackage{hyperref}
\DeclareCiteCommand{\tabcite}
{\usebibmacro{cite:init}%
\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite:comp}}
{}
{\usebibmacro{cite:dump}%
\usebibmacro{postnote}}
\addbibresource{example.bib}
\newcommand{\citelink}[2]{\hyperlink{cite.\therefsection @#1}{\citeauthor{#1} (\citeyear{#1}; ref. \tabcite{#1})}}
\begin{document}
How about this where \citelink{Example_article}{} discusses a topic.
\printbibliography
\end{document}
который производит:
А как вам вот это, где Автор (2018; ссылка 1) обсуждает тему?
который ссылается на соответствующую библиографическую ссылку.