我很困惑。请看下面的简单代码:
\documentclass{article}
\usepackage{savetrees}
\usepackage{natbib}
\begin{document}
aaa
\end{document}
这将返回“未定义的控制序列。\begin{document}”。如果我删除其中一个包,一切就会恢复正常。但我如何才能同时使用这两个包呢?
答案1
savetrees
调整环境中元素的间距和字体thebibliography
以节省空间(或树)。这些包括\bibfont
和\bibitemsep
。它检查是否存在\bibfont
,如果是,则重新定义\bibitemsep
为几乎不存在:
\AtBeginDocument{%
\@ifundefined{bibfont}{}{%
\renewcommand*{\bibfont}{\normalfont\small}%
\bibitemsep=0pt plus 2pt\relax
}%
}%
以上所有操作均在 处完成\begin{document}
,因此才会在此处抛出错误,因为natbib
定义了一个\bibfont
但没有\bibitemsep
。错误在于savetrees
只假设biblatex
定义了\bibfont
。但是,natbib
也一样。以下是摘录自savetrees
文档:
如果
biblatex
加载了该包,我们将使用 BibLaTeX 的机制将字体大小减小到\small
(\bibfont
)并省略书目条目之间的空行(\bibitemsep
)。
解决这个问题的方法是将其定义\bibitemsep
为长度或尺寸:
\documentclass{article}
\usepackage{natbib}
\newlength\bibitemsep
\usepackage{savetrees}
\begin{document}
% Your masterpiece here...
\end{document}