我正在处理许多论文,其中有一些头文件可以做重要的事情(定义函数等)。我想创建一个新的“页眉”(或“页脚”)文件,其中包含以下内容:
\clearpage
\section{Sources}
\printbibliography
\clearpage
但有些文献没有注明来源,而是添加了一个空白页。
有什么办法可以做到这一点?
\if(numberOfUsedSources > 1) {
\clearpage
\section{Sources}
\printbibliography
\clearpage
}
这真的很有帮助!
答案1
您可以简单地使用\printbibliography[heading=bibintoc,title={Sources}]
。这应该只在有引用条目的情况下打印任何内容,并且在这种情况下会添加标题为“来源”的部分。如果 documentclass 使用章节(例如book
),则应改用subbibintoc
。
由于缺少 MWE,我们不知道您的整体设置的更多细节,我只能猜测,clearpage
考虑到出现/不出现的参考书目,可能可以在没有条件的情况下处理 s。
更新:稍微复杂一些,处理\clearpage
s 也很好。全文:
\documentclass{article}
\usepackage{biblatex}
\usepackage{kantlipsum}
\addbibresource{biblatex-examples.bib}
\defbibheading{myheading}[Sources]{%
\clearpage%
\section{#1}}
\defbibnote{mypostnote}{\clearpage}
\begin{document}
\section{Section 1}
\kant[1-4]
\nocite{*}
\printbibliography[heading=myheading,postnote=mypostnote]
\kant[1-4]
\newrefsection
\section{Section 2}
\kant[1-4]
\printbibliography[heading=myheading,postnote=mypostnote]
\kant[1-4]
\end{document}
答案2
在提问时,最好加上最小工作示例这样人们就知道\documentclass
你正在使用什么。MWE 还可以让你更轻松地回答你的问题,因为它通常有助于澄清问题所在——并且它为人们提供了可以开始使用的工作代码。
可能有一个标准比布拉特克斯这样做的方法,但如果做不到这一点,我建议创建一个新的布尔值,比如\ifCiting
,然后重新定义\cite
,以便它首先设置\Citingtrue
然后使用真实\cite
命令。然后您可以使用它\ifCiting...\fi
来打印参考书目部分,也可以不打印。
以下是实现此目的的一种方法:
\documentclass{article}
\usepackage{biblatex}
\let\realCite\cite% save the orginal \cite macro as \realCite for future use
\newif\ifCiting\Citingfalse% no citations by default
\renewcommand\cite[2][]{% optional argument is empty by default
\Citingtrue% we have at least one citation!
\if\relax\detokenize{#1}\relax% no optional argument
\realCite{#2}%
\else% an optional argument
\realCite[#1]{#2}%
\fi%
}
\begin{document}
\ifCiting
\clearpage
\section{Sources}
\printbibliography
\clearpage
\fi
\end{document}
唯一棘手的是检查可选参数是否为\cite
“空”。执行此操作的标准方法是使用以下代码行\if\relax\detokenize{#1}\relax
。
编辑
正如 Skillmon 在评论中指出的那样,一个更有效(并且“全局”正确)的解决方案是:
\documentclass{article}
\usepackage{biblatex}
\let\realCite\cite% save the orginal \cite macro for future use
\newif\ifCiting\Citingfalse% no citations by default
\renewcommand*\cite{\global\Citingtrue\realCite}
\begin{document}
\ifCiting
\clearpage
\section{Sources}
\printbibliography
\clearpage
\fi
\end{document}