使用 \cite 的简写形式

使用 \cite 的简写形式

我正在使用修改后的verbose-ibidcitestyle(按照建议这里)。如果我使用\cite,它不会使用短版本,这可能很好,但现在我需要使用短版本(cite:short)。那么我如何使用\cite并强制使用短格式?

答案1

由于标题(以及一般的浮动字)很少被视为文本流的一部分(毕竟浮动字的位置非常不稳定,而且更难预测读者何时会看浮动字),因此在这些环境中跟踪器是被禁用的。

biblatex文档§4.11.5 浮标和 TOC/LOT/LOF 中的跟踪器中的状态,第 232 页

如果在浮动体中给出引文(通常在图表或表格的标题中),学术反向引用(如“ibidem”)或基于页面跟踪器的反向引用将变得含糊不清,因为浮动体是(物理和逻辑上)位于文本流之外的对象,因此此类引用的逻辑不太适用于它们。为了避免任何此类歧义,所有浮动体中的引文和页面跟踪器都暂时禁用。此外,这些跟踪器以及反向引用跟踪器(backref)在目录、图表列表和表格列表中都暂时禁用。

所以这种行为确实是有意图的,如果你想强制使用简短的引用,你可以定义一个“执行者”

\makeatletter
\newcommand{\captshort}{\let\blx@imc@ifciteseen\@firstoftwo}
\makeatother

如果在标题中使用它(例如\caption{\captshort\cite{foo}}),则会强制使用简短引用。

\documentclass{article}
\usepackage[style=verbose]{biblatex}
\addbibresource{biblatex-examples.bib}
\makeatletter
\newcommand{\captshort}{\let\blx@imc@ifciteseen\@firstoftwo}
\makeatother

\begin{document}
  \cite{geer} \cite{geer}

  \begin{table}[!h]
  \caption{\captshort\cite{geer}}
  \end{table}

  \cite{wilde} \cite{wilde}
\end{document}

表 1: Geer,“伯爵、圣人、主教、吟游诗人和音乐”


或者,我们可以定义一个新的 cite 命令\shrtcite,它总是打印简短格式,并使用它

\newbibmacro*{shrtcite}{%
  \usebibmacro{cite:citepages}%
  \iffieldundef{shorthand}
    {\usebibmacro{cite:short}}
    {\usebibmacro{cite:shorthand}}}

\DeclareCiteCommand{\shrtcite}
  {\usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \usebibmacro{shrtcite}}
  {\multicitedelim}
  {\usebibmacro{cite:postnote}}

平均能量损失

\documentclass{article}
\usepackage[style=verbose]{biblatex}
\addbibresource{biblatex-examples.bib}

\newbibmacro*{shrtcite}{%
  \usebibmacro{cite:citepages}%
  \iffieldundef{shorthand}
    {\usebibmacro{cite:short}}
    {\usebibmacro{cite:shorthand}}}

\DeclareCiteCommand{\shrtcite}
  {\usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \usebibmacro{shrtcite}}
  {\multicitedelim}
  {\usebibmacro{cite:postnote}}

\begin{document}
  \cite{geer} \cite{geer}

  \begin{table}[!h]
  \caption{\shrtcite{geer}}
  \end{table}

  \cite{wilde} \cite{wilde}
\end{document}

表 1: Geer,“伯爵、圣人、主教、吟游诗人和音乐”

相关内容