边注中首次出现引用,未明确提及

边注中首次出现引用,未明确提及

我正在使用tufte-book文档类和biblatex包,并希望在“第一次”引用时添加边注,以表明几乎完整的引用。具体来说,我希望文内引用本身充当一种注释调用。我能实现的最接近的事情是:

在此处输入图片描述

注意两个不该注意的地方。首先,第二个边注不应该存在。其次,边注的引用信息应该与正文中的引用信息完全相同。也就是说,名字中不能有首字母。

我写第一次引号之间,因为我想重置以下行为:i) 每一页、ii) 除章节第一页之外的每对奇偶页(应包括行为)以及 iii) 每一章。当然,对于任何完整文档,只应有一个案例。

我尝试改编代码,但没有成功这里这里, 和这里我怀疑问题有两个根源:

1)citetracker在所有浮动中被禁用(biblatex 手册第 59 页 - 版本 3.11)。我认为该marginfix包使用浮动来排列边注,因此我尝试了\citetrackertrue几种设置方法,但都失败了。

2) 该\newbibmacro*部分语法不正确。更准确地说,是该\ifciteseen部分内部的语法不正确。

我尝试的另一种策略是在第一次使用键时\AtEveryCitekey添加额外的代码( ),但这并没有带来预期的结果。\marginnote{}

最后,请注意,我无法脱离这个fixmargin包,我需要维护 APA 风格,并且我正在使用 overleaf.com 进行编译。

我的最小工作示例是:

\RequirePackage{filecontents}
\begin{filecontents}{mybib.bib}
@article{acemoglu2001colonial,
  title={The colonial origins of comparative development: An empirical investigation},
  author={Acemoglu, Daron and Johnson, Simon and Robinson, James A},
  journal={American Economic Review},
  volume={91},
  number={5},
  pages={1369--1401},
  year={2001}
}
\end{filecontents}

% ---------------------------------------

\documentclass[nobib]{tufte-book} 
\usepackage[T1]{fontenc}

\usepackage[
    style=apa,
    citestyle=apa,
    backend=biber
]{biblatex}
\addbibresource{mybib.bib}

\ExecuteBibliographyOptions{citetracker,sorting=none}
\DeclareCiteCommand{\fullcite}
  {\usebibmacro{prenote}}
  {\usedriver
     {\DeclareNameAlias{sortname}{default}}
     {\thefield{entrytype}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\newbibmacro*{fullcite}{%
  \ifciteseen
    {}
    {\fullcite{\thefield{entrykey}}\addperiod}
}

\usepackage{xargs}
\newcommandx{\mytextcite}[3][1={0pt},2={}]{
    \textcite{#3}\marginnote[#1]{\fullcite[#2]{#3}.}
    }

\AtEveryCitekey{\clearfield{pages}}
\AtEveryCitekey{\clearfield{volume}}
\AtEveryCitekey{\clearfield{number}}

% For Apa to work
\DeclareLanguageMapping{english}{english-apa}

\usepackage{marginfix}

\begin{document}

\mytextcite{acemoglu2001colonial} argue that the evidence is not robust.

This new paragraph repeats a citation. We now want to check how repeated in-text citations are treated in the margin. \mytextcite{acemoglu2001colonial} are the only authors that \ldots

\printbibliography

\end{document}

答案1

据我所知,1 和 2 实际上都不是问题。

biblatex的跟踪器未被禁用,\marginnote并且的语法\newbibmacro*{fullcite}实际上是正确的,但没有调用 bibmacro fullcite,而且它从未被调用,所以该定义不执行任何操作。

但是,所提出的方法存在一个问题。\mytextcite被拆分为两个不同的、独立的 cite 命令(\textcite\fullcite)。当然,这两个命令的 值不同\ifciteseen。如果之前没有见过引用,\textcite则切换\ifciteseen为 false,但对于所有后续引用, 则将其切换为 true。这意味着无论如何,\ifciteseen对于后续的 都将为 true \fullcite

解决这个问题的最好方法是只定义一个引用命令,用\DeclareCiteCommand它决定是否直接发出边注。这样,\ifciteseen就有了正确的值。

我应用的第二个更改是个人喜好问题。\AtEveryCitekey我发现定义一个宏来打印所需的信息比使用 fullcite 和删除“多余”信息更优雅。nearfullcite显示标签名称(作者、编辑等)、年份、标题和附件作品的标题(journaltitlebooktitle)(如果适用)。

因为您想使用biblatex-apa代码,所以需要进行一些肮脏的黑客攻击。bibaltex-apa必须非常努力才能正确获取一些 APA 要求,并且干扰这一点可能会很痛苦。

\RequirePackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{acemoglu2001colonial,
  title   = {The colonial origins of comparative development: An empirical investigation},
  author  = {Acemoglu, Daron and Johnson, Simon and Robinson, James A},
  journal = {American Economic Review},
  volume  = {91},
  number  = {5},
  pages   = {1369--1401},
  year    = {2001}
}
\end{filecontents}

\documentclass[nobib]{tufte-book} 
\usepackage[T1]{fontenc}

\usepackage[
    style=apa,
    citetracker=true,
    backend=biber,
]{biblatex}

\newcommand*{\bibmarginnote}[2][0pt]{%
  \marginnote[#1]{\protecting{\blxmkbibnote{foot}{#2}}}}

\DeclareCiteCommand{\margtextcite}
  {\usebibmacro{cite:init}%
   \usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \usebibmacro{textcite}%
   \ifciteseen
     {}
     {\bibmarginnote{\usebibmacro{nearfullcite}}}}
  {}
  {\usebibmacro{textcite:postnote}%
   \usebibmacro{cite:post}}

\newrobustcmd*{\Margtextcite}{\bibsentence\margtextcite}

\makeatletter
% this macro is specific to biblatex-apa
\newbibmacro*{nearfullcite}{%
  \begingroup
  \let\ifciteseen\@secondoftwo% <- bad hack for biblatex-apa
  \printnames[labelname][-\value{listtotal}]{labelname}%
  \setunit{\addspace}%
  \usebibmacro{cite:paren:labeldate+extradate}%
  \newunit
  \ifbooklikeentrytype
    {\usebibmacro{maintitle+title}} 
    {\usebibmacro{title}}%
  \newunit
  \ifentrytype{article}
    {\usebibmacro{journal}}
    {}%
  \newunit
  \ifinbooklikeentrytype
    {\usebibmacro{maintitle+booktitle}}
    {}%
  \endgroup
}
\makeatother

\providebibmacro*{cite:paren:labeldate+extradate}{%
  \iffieldundef{labelyear}
    {}
    {\printtext[parens]{\printlabeldateextra}}}

\newcommand*{\ifbooklikeentrytype}{%
  \ifboolexpr{   test {\ifentrytype{book}}
              or test {\ifentrytype{collection}}
              or test {\ifentrytype{proceedings}}}}

\newcommand*{\ifinbooklikeentrytype}{%
  \ifboolexpr{   test {\ifentrytype{inbook}}
              or test {\ifentrytype{incollection}}
              or test {\ifentrytype{inproceedings}}}}

\newcommand*{\ifmisclikeentrytype}{%
  \ifboolexpr{   test {\ifentrytype{booklet}}
              or test {\ifentrytype{manual}}
              or test {\ifentrytype{misc}}
              or test {\ifentrytype{online}}
              or test {\ifentrytype{report}}
              or test {\ifentrytype{thesis}}
              or test {\ifentrytype{unpublished}}}}

\usepackage{marginfix}

\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
\Margtextcite{acemoglu2001colonial,sigfridsson,nussbaum} argue that the evidence is not robust.

This new paragraph repeats a citation. We now want to check how repeated in-text citations are treated in the margin. It has been shown by \margtextcite{acemoglu2001colonial,geer,sigfridsson} that \ldots

\printbibliography
\end{document}

在此处输入图片描述

可以使用选项等按章节(如果可用)、按节、按小节重置引用跟踪器citereset=chapter

对于每页重置,没有citereset你只需要\iflastciteonsamepage使用https://tex.stackexchange.com/a/275524/35864代替\ifciteseen

相关内容