我使用的是 verbose-trad1 样式。使用\cite{x}
命令得到了此结果。
如您所见,引用跟踪工作正常,但如果我使用\citetitle{x}
引用跟踪则不起作用。(没关系,当然,biblatex 文档中提到了这一点。)我想要的是避免引用作者,即使在第一次引用时也是如此。但是,当然,如果我使用 \citetitle 命令,我会失去引用跟踪。有没有办法修改 \citetitle 命令以包含引用跟踪?
答案1
有几种方法可以做到这一点。在 的定义中启用跟踪器\citetitle
不会给你ibidem
和shorthand
缩写,除非你做一些额外的工作。仅仅省略labelname
会使\cite
一些缩写(即opcit
、loccit
和)变得(语义)混乱idem
。
下面的代码(希望)通过定义一个钩子来消除这些限制,以抑制labelname
、author
或editor
并修复有问题的缩写。此钩子可用于文档正文或命令定义中。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=verbose-trad1]{biblatex}
\addbibresource{biblatex-examples.bib}
\newbibmacro*{cite:full:noname}{%
\usebibmacro{cite:full:citepages}%
\printtext[bibhypertarget]{%
\usedriver
{\clearname{author}%
\clearname{editor}}
{\thefield{entrytype}}}%
\usebibmacro{shorthandintro}}
\newrobustcmd*{\citetitlehook}{%
\AtNextCite{%
\renewbibmacro*{cite:full}{\usebibmacro{cite:full:noname}}%
\renewbibmacro*{cite:name}{}%
\renewbibmacro*{cite:idem}{}%
\renewbibmacro*{cite:loccit}{\usebibmacro{cite:title}}%
\renewbibmacro*{cite:opcit}{\usebibmacro{cite:title}}}}
\renewrobustcmd*{\citetitle}{\citetitlehook\cite}
\newrobustcmd*{\citetitles}{\citetitlehook\cites}
\newrobustcmd*{\parencitetitle}{\citetitlehook\parencite}
\newrobustcmd*{\parencitetitles}{\citetitlehook\parencites}
\newrobustcmd*{\autocitetitle}{\citetitlehook\autocite}
\newrobustcmd*{\autocitetitles}{\citetitlehook\autocites}
\newrobustcmd*{\footcitetitle}{\citetitlehook\footcite}
\newrobustcmd*{\footcitetitles}{\citetitlehook\footcites}
\begin{document}
\null\vfill\noindent
Citetitle: \citetitle{kant:kpv}.
Parencitetitle: \parencite{kant:kpv}.
Autocitetitle.\autocitetitle[10]{companion}
Footcite with recurrent entry.\footcite[10]{companion}
Footcites with recurrent entry+page.\footcites{knuth:ct,knuth:ct:a}[10]{companion}
Footcite with recurrent author.\footcite{knuth:ct,knuth:ct:a}
Footcite with hook.\citetitlehook\footcite{augustine}
Footcite with hook and recurrent entry.\citetitlehook\footcite[10]{augustine}
Footcites with hook and recurrent entry+page.\citetitlehook\footcites{knuth:ct,knuth:ct:a}[10]{augustine}
Footcite with hook and recurrent author.\citetitlehook\footcite{knuth:ct,knuth:ct:a}
\end{document}