APA 样式:Et al. 不再出现在图片标题中

APA 样式:Et al. 不再出现在图片标题中
\documentclass[fontsize=12pt,oneside,headsepline]{scrbook}
    \usepackage[demo]{graphicx}
    \usepackage{csquotes}
    \usepackage[style=apa,natbib=true,backend=biber,uniquename=false,pagetracker=true]{biblatex}
    \usepackage[T1]{fontenc} 
    \usepackage[utf8]{inputenc} 
    \usepackage[ngerman]{babel} 

    \DeclareLanguageMapping{german}{german-apa}
    \DeclareFieldFormat{apacase}{#1} 
    \DefineBibliographyStrings{ngerman}{ 
        andothers = {{et al\adddot}},  } 


    \usepackage{filecontents}   
    \addbibresource{\jobname.bib}


    \begin{filecontents}{\jobname.bib}
    @article{zapkau2015,
      author   = {Florian B. Zapkau and Christian Schwens and Holger Steinmetz and R{\"u}diger Kabst},
      title    = {Disentangling the effect of prior entrepreneurial exposure on entrepreneurial intention},
      journal  = {Journal of Business Research},
      year     = {2015},
      volume   = {68},
      number   = {3},
      pages    = {639 - 653},
      issn     = {0148-2963},
      keywords = {Prior entrepreneurial exposure, Role models, Work experience, Entrepreneurial intention, Theory of planned behavior },
    }
    \end{filecontents}

    \begin{document}    

    Some Text ...\citep{zapkau2015}.
    More Text ... 

    \begin{figure}[h]
      \centering
      \caption{Caption Text \citet{zapkau2015}.} \label{fig:forschungsmodell}
      \vspace{2ex}
      \includegraphics[width=0.7\linewidth]{TPB.eps}\\
    \end{figure}


    \end{document}

我的问题是:第一次引用 zapkau 时会带上所有作者的名字。这里,这是正确的。多次引用 zapkau 时,在文中使用时会在作者名字后面加上“et al.”

在此处输入图片描述

第二次引用。

问题:

在图的标题中引用时,再次:

尽管必须有等,但作者太多了。

我搜索了其他解决方案,但似乎没有一个适合我的情况。提前感谢您的帮助!:-)

答案1

这是因为biblatex禁用了图表内的引用跟踪,如figure如果在环境中使用,\footcite 总是打印长引用,您可以按照那里的答案所述重新启用图形中的引用跟踪。如果您将浮动对象视为文本的一部分,并希望事物表现得像它们出现在文本中一样,那么这可能是“最佳”解决方案。

\ifciteseen或者,您可以重置浮点数的非跟踪行为

\makeatletter
\AtBeginDocument{
  \apptocmd\@floatboxreset
    {\let\blx@imc@ifciteseen\@firstoftwo}
    {}
    {\blx@err@patch{floats}}%
}
\makeatother

这将导致浮动中的所有引用都出现在缩短版本中,而不是长的第一个引用版本中。


由于您正在使用natbib定义带星号的命令版本的兼容模式,我们不妨重新定义这些版本。通常情况下natbib,兼容模式下带星号的 cite 命令版本将打印所有作者。但是,biblatex-apa该代码不适用于 。因此带星号的natbib命令对 毫无用处biblatex-apa。我们可以恢复它们并让它们执行相反的操作:始终打印出缩短的列表,无论其他内容如何。

\makeatletter
\renewrobustcmd*{\citet}{%
  \@ifstar
    {\AtNextCite{\AtEachCitekey{\let\ifciteseen\@firstoftwo}}%
     \textcite}
    {\textcite}}
\makeatletter

應該足够了。

Mico 的 MWE 给出

\RequirePackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{zapkau2015,
  author   = {Florian B. Zapkau and Christian Schwens 
     and Holger Steinmetz and R{\"u}diger Kabst},
  title    = {Disentangling the effect of prior 
     entrepreneurial exposure on entrepreneurial 
     intention},
  journal  = {Journal of Business Research},
  year     = {2015},
  volume   = {68},
  number   = {3},
  pages    = {639 - 653},
  issn     = {0148-2963},
  keywords = {Prior entrepreneurial exposure, Role 
     models, Work experience, Entrepreneurial intention, 
     Theory of planned behavior},
}
\end{filecontents}

\documentclass[american]{article}
\usepackage[demo]{graphicx}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=apa,natbib=true,backend=biber,
    uniquename=false,pagetracker=true]{biblatex}
\DeclareLanguageMapping{american}{american-apa}
\addbibresource{\jobname.bib}

\usepackage[skip=0.333\baselineskip]{caption}    % <-- optional

\makeatletter
\renewrobustcmd*{\citet}{%
  \@ifstar
    {\AtNextCite{\AtEachCitekey{\let\ifciteseen\@firstoftwo}}%
     \textcite}
    {\textcite}}
\makeatletter

\begin{document}    
Some Text \dots\ \citep{zapkau2015}.

More Text \dots\ \citep{zapkau2015}

\begin{figure}[h]
  \centering
  \caption{Caption Text \dots\ \citet*{zapkau2015}.} % <-- new 
  \label{fig:forschungsmodell}
  \includegraphics[width=0.7\linewidth]{TPB.eps}
\end{figure}

More Text \dots\ \citep{zapkau2015}

\printbibliography
\end{document}

例子

答案2

如果biblatex包中装有选项,它会模拟引文管理包natbib=true中的一些“核心”命令——但并非模拟所有的宏和选项,例如选项,它指示和在第一次引用条目时排版完整的作者列表,并为后续的引文调用排版缩写列表(“et al”)。natbibnatbiblongnamesfirst\citet\citep

然而,natbib 的命令\defcitealias\citetalias 如果设置了该选项,则会进行模拟natbib=true。因此,我建议您使用它们在\caption命令内创建缩写列表引用调用。诚然,这有点笨拙,但我相信您的文档中没有那么多在\caption指令内创建引用调用的实例……

在此处输入图片描述

\RequirePackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{zapkau2015,
  author   = {Florian B. Zapkau and Christian Schwens 
     and Holger Steinmetz and R{\"u}diger Kabst},
  title    = {Disentangling the effect of prior 
     entrepreneurial exposure on entrepreneurial 
     intention},
  journal  = {Journal of Business Research},
  year     = {2015},
  volume   = {68},
  number   = {3},
  pages    = {639 - 653},
  issn     = {0148-2963},
  keywords = {Prior entrepreneurial exposure, Role 
     models, Work experience, Entrepreneurial intention, 
     Theory of planned behavior},
}
\end{filecontents}

\documentclass[american]{article}
\usepackage[demo]{graphicx}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=apa,natbib=true,backend=biber,
    uniquename=false,pagetracker=true]{biblatex}
\DeclareLanguageMapping{american}{american-apa}
\addbibresource{\jobname.bib}

\defcitealias{zapkau2015}{Zapkau et~al.\ (2015)} % <-- new
\usepackage[skip=0.333\baselineskip]{caption}    % <-- optional

\begin{document}    
Some Text \dots\ \citep{zapkau2015}.

More Text \dots\ \citep{zapkau2015}

\begin{figure}[h]
  \centering
  \caption{Caption Text \dots\ \citetalias{zapkau2015}.} % <-- new 
  \label{fig:forschungsmodell}
  \includegraphics[width=0.7\linewidth]{TPB.eps}
\end{figure}

\printbibliography
\end{document}

相关内容