使用 Biblatex numeric-comp 樣式時直接參考引用

使用 Biblatex numeric-comp 樣式時直接參考引用

我最喜歡使用的引用樣式biblatexnumeric-comp帶有autocite=superscript選項的樣式。然而,有時我需要引用文本中的特定參考,因此想切換到類似authoryear本例的內容。

使用\textcite只是否定上標選項。是否可以寫一個新函數來允許我混合兩種引用樣式?

微量元素:

\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)討論一個主題怎麼樣?

它連結到適當的參考書目。

相關內容