如何避免shorthand
在同一作品的每个后续引用中打印标签?
坚持使用biblatex
采用标准风格的MLA(就我而言authortitle-ticomp
),我对已定义的条目存在问题shorthand
:
不使用ibid
机制,而是在同一部作品的每个后续引文中biblatex
打印。我会使用shorthand
ibid
解决方案从步调一致地重新定义cite:ibid
宏来消除ibid
并因此实际上拥有 mla 风格的引用。
因此,对我来说,最简单的方法似乎是利用biblatex
已定义ibid
的条目shorthand
。我同样乐意采用这样的解决方案:不是shorthand
在同一文本的任何后续引用中打印更多内容。
我觉得这应该是一个功能,biblatex
并发布了功能要求很久以前,但最终还是向 TEX.SE 寻求解决方案。
最小工作示例:
\documentclass{scrartcl}
\usepackage[backend=biber,style=authortitle-ticomp]{biblatex}
\usepackage{filecontents}
% lockstep's solution to have no "ibid"
%\renewbibmacro*{cite:ibid}{%
%% \printtext[bibhyperref]{\bibstring[\mkibid]{ibidem}}% DELETED
% \ifloccit
% {\global\booltrue{cbx:loccit}}
% {}}
\begin{filecontents}{\jobname.bib}
@INBOOK{adorno:halbbildung,
author = {Theodor W. Adorno},
title = {Theorie der Halbbildung},
year = {1959},
pages = {93-121},
shorthand = {Halbbildung},
booktitle = {Gesammelte Schriften Band 8},
booksubtitle = {Soziologische Schriften I},
editor = {Rolf Tiedemann},
publisher = {Suhrkamp},
location = {Frankfurt am Main},
options = {useeditor=false},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
A quote \autocite[93]{adorno:halbbildung}. A second one \autocite[94]{adorno:halbbildung}. A third one \autocite[94]{adorno:halbbildung}.
\end{document}
答案1
解决样式问题的功能请求经常被拒绝。相反,我们鼓励用户在文档前言或 biblatex 配置文件中自定义相关命令、宏和驱动程序。
对于您的问题,使用钩子可以轻松地在重复引用中抑制简写\AtEveryCitekey
。同上可以通过重新定义宏来避免引用标签,但只有在定义字段cite:ibid
时才应省略它。此外,如果定义了,我们还应该抑制标点符号,否则标点符号会将后记和标签分开。postnote
prenote
\documentclass{article}
\usepackage[style=authortitle-ticomp]{biblatex}
\AtEveryCitekey{%
\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
{\clearfield{shorthand}}
{}}
\renewbibmacro*{cite:ibid}{%
\iffieldundef{postnote}
{\printtext[bibhyperref]{\bibstring[\mkibid]{ibidem}}}
{\iffieldundef{prenote}
{}
{\nopunct}}%
\ifloccit
{\global\booltrue{cbx:loccit}}
{}}
\addbibresource{biblatex-examples.bib}
\begin{document}
Filler text \autocite[93]{kant:kpv}. Filler text \autocite{kant:kpv}.
Filler text \autocite[94]{kant:kpv}. Filler text \autocite[93]{kant:ku}.
Filler \autocite[e.g.][10]{kant:ku}. \Textcite{kant:ku} showed that...
\Textcite[10--15]{kant:ku} showed that...
\end{document}