如何避免shorthand在同一作品的每个后续引用中打印标签?

如何避免shorthand在同一作品的每个后续引用中打印标签?

如何避免shorthand在同一作品的每个后续引用中打印标签?

坚持使用biblatex采用标准风格的MLA(就我而言authortitle-ticomp),我对已定义的条目存在问题shorthand

不使用ibid机制,而是在同一部作品的每个后续引文中biblatex打印。我会使用shorthandibid解决方案从步调一致地重新定义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时才应省略它。此外,如果定义了,我们还应该抑制标点符号,否则标点符号会将后记和标签分开。postnoteprenote

\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}

相关内容