如何在 biblatex 中以数字引用样式使用/引用“在引用的地方”/“loco citato”?

如何在 biblatex 中以数字引用样式使用/引用“在引用的地方”/“loco citato”?

BibLaTex 知道同上我还发现疯狂的引用就像loccit文本中那样。所以现在我想把它们结合起来。

这是如何强制使用数字样式的 ibit 类事物– 我仍然认为这是 biblatex 中缺少的一个功能。现在我想强制它不仅ibid按照定义正确使用,而且l.c.。也就是说,我想要两个都,正如正确的引用指南所建议的那样。

为了说明,再举这个例子:

他们说,“LaTeX 很强大”[96,第 3 页],但在同一页上却说“WordTEX 可能更好”[96,第 3 页]。然后在下一页,他们谈到了“火车倒着开”[96,第 4 页]。

有了这个解决方案,我想要:

他们说,“LaTeX 很强大”[96,第 3 页],但在同一页上却说“WordTEX 可能更好”[同上]。在下一页,他们谈到“火车倒着开”[lc,第 4 页]。

l.c.只是其中一种——非常简短——的可能性,我见过如何缩写或称呼它。“Loc. cit.”是另一种,在德语中称为“aa O.”(“am angegebenen Ort”)。根据其定义,ibid只有在所有内容完全相同的情况下才可以使用,“在引用的地方”仅适用于页面可能不同但来源仍然相同的情况下。

我已经发现它是在 biblatex 中定义的,并且旧的解决方案也使用了它。

因此我尝试调整它,但是我的解决方案失败了,现在根本不再打印后记(引文的可选部分):

% ATTENTION: BROKEN EXAMPLE!

% consider all postnotes for check-if-previous-postnote-was-the-same
\def\blx@loccit@stricttracker#1{%
  \global\csundef{blx@lastnote@#1@\abx@field@entrykey}%
  \blx@imc@iffieldundef{postnote}
    {}
    {\blx@ifcitesingle
       {\global\cslet{blx@lastnote@#1@\abx@field@entrykey}\abx@field@postnote
           \xifinlistcs\abx@field@entrykey{blx@trackkeys@#1}
             {}
             {\listcsxadd{blx@trackkeys@#1}\abx@field@entrykey}}
       {}}}

\def\blx@loccit@numcheck#1{%
  \blx@imc@iffieldundef{postnote}
    {\@secondoftwo}
    {\blx@imc@iffieldequalcs{postnote}{blx@lastnote@#1@\abx@field@entrykey}}}

% ibid for postnote, but repeat number, if you subsequently use different pages/postnotes
% https://tex.stackexchange.com/a/554363/98645
\makeatletter
\newtoggle{cbx:loccit}

\renewbibmacro*{cite:comp}{%
  \global\togglefalse{cbx:loccit}%
  \addtocounter{cbx@tempcntb}{1}%
  \iffieldundef{shorthand}
    {\ifthenelse{\ifciteibid\AND\ifloccit\AND\NOT\iffirstonpage}
       {\usebibmacro{cite:ibid}}
       {\ifbool{bbx:subentry}
          {\iffieldundef{entrysetcount}
             {\usebibmacro{cite:comp:comp}}
             {\usebibmacro{cite:comp:inset}}}
          {\usebibmacro{cite:comp:comp}}}}
    {\ifthenelse{\ifciteibid\AND\NOT\ifloccit\AND\NOT\iffirstonpage}
       {\usebibmacro{cite:loccit}}
       {\ifbool{bbx:subentry}
          {\iffieldundef{entrysetcount}
             {\usebibmacro{cite:comp:comp}}
             {\usebibmacro{cite:comp:inset}}}
          {\usebibmacro{cite:comp:comp}}}}
    {\usebibmacro{cite:comp:shand}}
}

\providecommand*{\mkibid}[1]{#1}
\newbibmacro*{cite:ibid}{%
  \printtext[bibhyperref]{\bibstring[\mkibid]{ibidem}}%
  \global\toggletrue{cbx:loccit}}

\letbibmacro*{orig:postnote}{postnote}
\renewbibmacro*{postnote}{%
  \iftoggle{cbx:loccit}
    {}
    {\usebibmacro{orig:postnote}}}
\makeatother

\ExecuteBibliographyOptions{ibidtracker=constrict, loccittracker=constrict}

所以我的 LaTeX 编码“技能”在这里失败了。

对于 MWE,请参阅前面解决方案中的示例。

如果您能在这里添加如何使用 loccit 的话那就太好了?

答案1

将其构建到所示的解决方案中并不太难在比较 biblatex 中的可选参数/后记时获取 ibid 的数字引用. 大部分已经存在了。

但正如评论中提到的,我不建议使用这些不常见的拉丁缩写。我怀疑它们是否能让你的文章更容易理解。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[british]{babel}
\usepackage{csquotes}
\usepackage[style=numeric-comp, backend=biber]{biblatex}

\addbibresource{biblatex-examples.bib}

\makeatletter
\def\blx@loccit@check#1{%
  \blx@imc@iffieldundef{postnote}
    {\ifcsempty{blx@lastnote@#1@\abx@field@entrykey}}
    {\blx@imc@iffieldequalcs{postnote}{blx@lastnote@#1@\abx@field@entrykey}}}

\let\blx@loccit@numcheck\blx@loccit@check

\def\blx@loccit@stricttracker#1{%
  \global\csundef{blx@lastnote@#1@\abx@field@entrykey}%
  \blx@imc@iffieldundef{postnote}
    {\global\cslet{blx@lastnote@#1@\abx@field@entrykey}\@empty}
    {\blx@ifcitesingle
       {\expandafter\blx@imc@ifpages
        \expandafter{\abx@field@postnote}
          {\global\cslet{blx@lastnote@#1@\abx@field@entrykey}\abx@field@postnote
           \xifinlistcs\abx@field@entrykey{blx@trackkeys@#1}
             {}
             {\listcsxadd{blx@trackkeys@#1}\abx@field@entrykey}}
          {}}
       {}}}

\newtoggle{cbx:loccit}

\renewbibmacro*{cite:comp}{%
  \global\togglefalse{cbx:loccit}%
  \addtocounter{cbx@tempcntb}{1}%
  \iffieldundef{shorthand}
    {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
       {\ifloccit
          {\usebibmacro{cite:ibid}}
          {\usebibmacro{cite:loccit}}}
       {\ifbool{bbx:subentry}
          {\iffieldundef{entrysetcount}
             {\usebibmacro{cite:comp:comp}}
             {\usebibmacro{cite:comp:inset}}}
          {\usebibmacro{cite:comp:comp}}}}
    {\usebibmacro{cite:comp:shand}}}

\providecommand*{\mkibid}[1]{#1}
\newbibmacro*{cite:ibid}{%
  \printtext[bibhyperref]{\bibstring[\mkibid]{ibidem}}%
  \global\toggletrue{cbx:loccit}}

\newbibmacro*{cite:loccit}{%
  \printtext[bibhyperref]{\bibstring[\mkibid]{loccit}}}

\letbibmacro*{orig:postnote}{postnote}
\renewbibmacro*{postnote}{%
  \iftoggle{cbx:loccit}
    {}
    {\usebibmacro{orig:postnote}}}
\makeatother

\ExecuteBibliographyOptions{ibidtracker=constrict, loccittracker=constrict}


\begin{document}
  \autocite[3]{sigfridsson}
  \autocite[3]{sigfridsson}
  \autocite[4]{sigfridsson}

  \autocite{worman}

  \autocite{sigfridsson}
  \autocite{sigfridsson}

  \printbibliography
\end{document}

[1,第 3 页] [同上] [同上,第 4 页]

相关内容