При использовании стиля Biblatex numeric-comp ссылайтесь непосредственно на цитату.

При использовании стиля Biblatex numeric-comp ссылайтесь непосредственно на цитату.

Мой предпочтительный стиль цитирования biblatex— это numeric-compстиль с autocite=superscriptопцией. Однако иногда мне нужно сослаться на конкретную ссылку в тексте, и поэтому я хотел бы перейти на что-то вроде authoryearэтого.

Использование \textcitejust отменяет опцию 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) обсуждает тему?

который ссылается на соответствующую библиографическую ссылку.

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