\documentclass{article}
\usepackage{mwe}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\begin{document}
\cite*{kastenholz}, \citeyear{kastenholz}
\end{document}
我正在寻找一种方法,用一个命令仅引用第一作者(如果不是唯一的,则引用更多作者)和年份。有点像,fullcite{}
但反过来。我在文档中找不到这个。
我需要将其用于论文的特定部分。该功能应在“本地”工作,不会影响文档的任何全局设置。我想在表格中使用它来引用数据来源的论文,但表格中的空间使用量最少。
答案1
您可以从可用的命令中创建一个新的引用命令来执行您想要的操作。
\documentclass{article}
\usepackage{mwe}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\newcommand\mycite[1]{\AtNextCite{\defcounter{maxnames}{1}}\citeauthor{#1}, \citeyear{#1}}
\begin{document}
\mycite{kastenholz}
\end{document}
更新:正如 moewe 在评论中指出的那样,这种方法虽然简单,但也有相关的局限性。它不会处理前后注释(尽管可以对其进行调整以处理其中一种),也不会处理多个条目。如果这对您的情况来说足够了,那么很好,否则,对于更通用的解决方案,\DeclareCiteCommand
最好使用(请参阅https://tex.stackexchange.com/a/398595/105447)。
答案2
答案3
您可以像这样定义一个新命令
\documentclass{article}
\usepackage{mwe}
\usepackage[style=numeric, labeldateparts]{biblatex}
\addbibresource{biblatex-examples.bib}
\newbibmacro{aycite}{%
\defcounter{maxnames}{1}%
\ifnameundef{labelname}
{\printfield{labeltitle}%
\setunit{\printdelim{nonameyeardelim}}}
{\printnames{labelname}%
\setunit{\printdelim{nameyeardelim}}}
\printtext[bibhyperref]{\printlabeldateextra}}
\DeclareCiteCommand{\aycite}
{\usebibmacro{prenote}}%
{\usebibmacro{citeindex}%
\usebibmacro{aycite}}
{\multicitedelim}
{\usebibmacro{postnote}}
\begin{document}
\aycite{kastenholz}
\end{document}
我本来希望使用mincitenames=1, maxcitenames=1, uniquelist=true
而不是\defcounter{maxnames}{1}
,但这违背了您不更改任何设置的愿望。只有使用 才能满足“如果不是唯一的,则使用更多”的要求mincitenames=1, maxcitenames=1, uniquelist=true
。由于您使用样式,numeric
因此这三个选项不太可能影响其他引用,但并非不可能(如果您使用,\textcite
则可能会发生变化,如果您仅使用,\cite
则应该不会有问题)。
我引入了该labeldateparts
选项,但这不会影响其他命令。