(从 stackoverflow 重新发布/移动:目前没有答案)
这是我的 LateX 问题:
我使用 (PDF)LaTeX 和IEEEtran
documentclass 以及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%
}