![有关 BibLaTeX 自定义引用格式的帮助](https://linux22.com/image/454960/%E6%9C%89%E5%85%B3%20BibLaTeX%20%E8%87%AA%E5%AE%9A%E4%B9%89%E5%BC%95%E7%94%A8%E6%A0%BC%E5%BC%8F%E7%9A%84%E5%B8%AE%E5%8A%A9.png)
我正在使用基于 biblatex 的自定义引用格式:
\DeclareCiteCommand{\mycite}
{\usebibmacro{prenote}}
{\usebibmacro{author}
\newunitpunct
\usebibmacro{journal}
\newunitpunct
\usebibmacro{date}}
{\multicitedelim}
{\usebibmacro{postnote}}
这会导致诸如这样的条目(A. Einstein, Annalen der Physik, 1916)
。
不幸的是,如果 A. Einstein 在同一年在同一期刊上发表两篇论文,那么这并不是引用每篇论文的唯一方法。
如果可能的话,以优雅的方式获取(A. Einstein, Annalen der Physik, 1916a)
和的最好方法是什么?(A. Einstein, Annalen der Physik, 1916b)
谢谢你!
我添加了一个 MNWE:
\documentclass{article}
\usepackage[backend=biber, sorting=ydnt, sortcites=true, defernumbers=true, maxbibnames=99, natbib=true, giveninits=true]{biblatex}
\usepackage{hyperref}
\DeclareCiteCommand{\mycite}
{\usebibmacro{prenote}}
{\usebibmacro{author}
\newunitpunct
\usebibmacro{journal}
\newunitpunct
\usebibmacro{date}}
{\multicitedelim}
{\usebibmacro{postnote}}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{einstein_Elektrodynamik,
author = {Albert Einstein},
title = {Zur Elektrodynamik bewegter Körper},
journal = {Annalen der Physik},
number = {322},
issue = {10},
pages = {891--921},
date = {1905},
}
@article{einstein_Lichtes,
author = {Albert Einstein},
title = {Über einen die Erzeugung und Verwandlung des Lichtes betreffenden heuristischen Gesichtspunkt},
journal = {Annalen der Physik},
number = {322},
issue = {6},
pages = {132--148},
date = {1905},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\begin{document}
\mycite{einstein_Elektrodynamik}
\mycite{einstein_Lichtes}
\printbibliography
\end{document}
答案1
非常感谢@moewe!我想我现在明白了:
\usepackage[backend=biber, sorting=ydnt, sortcites=true, style=authoryear,%
maxbibnames=99, maxnames=1, minnames=1, natbib=true, giveninits=true,%
defernumbers=true, uniquelist=false]{biblatex}
\renewbibmacro*{cite}{%
\iffieldundef{shorthand}
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}}
{\printnames[mynameformat]{labelname}}%
\setunit{\addcomma\space}%
\usebibmacro{journal}%
\setunit{\addcomma\space}%
\usebibmacro{cite:labeldate+extradate}}
{\usebibmacro{cite:shorthand}}}
\renewbibmacro*{cite:labeldate+extradate}{%
\iffieldundef{labelyear}
{}
{ \printtext[bibhyperref]{%
\printlabeldateextra}}}
\renewcommand{\mkbibnamefamily}[1]{\textsc{#1}}
\DeclareNameFormat{mynameformat}{%
\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffix}%
\usebibmacro{name:andothers}}
\renewcommand{\multicitedelim}{\addsemicolon\space}
\renewcommand{\newunitpunct}{\addcomma\addspace}
也使用这个帖子: biblatex 的作者-期刊-(年份)样式