LaTeX 与 biblatex 和 biber:如何在两列 IEEE 翻译论文中平衡 \printbibliography?

LaTeX 与 biblatex 和 biber:如何在两列 IEEE 翻译论文中平衡 \printbibliography?

(从 stackoverflow 重新发布/移动:目前没有答案)

这是我的 LateX 问题:

我使用 (PDF)LaTeX 和IEEEtrandocumentclass 以及biblatex/biber作为参考书目系统。正如 IEEE 示例(两栏论文)中提到的那样,参考文献应在最后一页的各栏之间保持平衡。所呈现的\IEEEtriggeratref{}命令在给定的参考文献后插入一个\newpage命令来手动平衡参考文献列表。但是,它不起作用biblatex-> 什么都没有发生。

我怎样才能以等效的方式平衡我的参考文献和 biblatex?

这是我的设置:

\documentclass[conference]{IEEEtran}
[...]
\usepackage[backend=biber,      % replace bibtex with biber (bibliography backend engine)
    bibstyle=ieee,              % write literature lists in IEEE style
    citestyle=numeric-comp,     % \cite uses a numeric key
    sortcites=true,                             
    maxbibnames=3
]{biblatex}
[...]

以下是原文natbib/bibtex示例:

% trigger a \newpage just before the given reference
% number - used to balance the columns on the last page
% adjust value as needed - may need to be readjusted if
% the document is modified later
\IEEEtriggeratref{8}

答案1

我没有使用过该类,所以我可能误解了你的问题。但我认为你应该能够在你的序言中做这样的事情

\renewbibmacro{finentry}{%
  \iffieldequalstr{entrykey}{KEY}%<- key after which you want the break
   {\finentry\newpage}
   {\finentry}}

您不必通过编号来提供引用,而是提供要在其后插入的条目类型的键\newpage(在上面我所用宏的位置KEY)。当然,您可以在此处添加任何其他内容。基本上,您替换的代码\newpage将在打印相关条目后执行。

答案2

\IEEEtriggeratref根据保罗的回答,这是一个适用于以下宏的替代品biblatex

\usepackage{ifthen}

\makeatletter
\newcounter{IEEE@bibentries}
\renewcommand\IEEEtriggeratref[1]{%
  \renewbibmacro{finentry}{%
    \stepcounter{IEEE@bibentries}%
    \ifthenelse{\equal{\value{IEEE@bibentries}}{#1}}
    {\finentry\@IEEEtriggercmd}
    {\finentry}%
  }%
}
\makeatother

用法和原宏相同:

\IEEEtriggeratref{9} % Breaks the column after the 9th entry
\printbibliography

答案3

适应回答 biblatex,这是一个自动版本。

\usepackage{balance}
\usepackage{lastpage}

\makeatletter
\def\lastreferencepage{\lastpage@lastpage} % can use a hard-coded number instead
\makeatother
\def\balanceissued{unbalanced}% ensure \balance only used once
\renewbibmacro{finentry}{%
    \ifnum\thepage=\lastreferencepage%
        \expandafter\ifx\expandafter\relax\balanceissued\relax%
        \else%
            \balance%
            \gdef\balanceissued{\relax}%
        \fi%
    \fi%
    \finentry%
}

相关内容