hyperref、smfbook 和参考书目

hyperref、smfbook 和参考书目

我正在为一家法国杂志撰写论文/书籍,这需要使用“smfbook”包。一切似乎都运行良好,只是 hyperref、smfbook 和参考书目似乎不能很好地协同工作(尽管这三对单独运行似乎都很好)。例如,请考虑以下文件:

\documentclass[english]{smfbook} 
\usepackage{hyperref}
\begin{document}

By~\cite{Wiles}.

\bibliographystyle{smfplain}
\bibliography{mybibliography}
\end{document}

假设 mybibliography.bib 格式正确。如果我不使用 hyperref,一切都会完美编译。如果我将“smfbook”更改为“amsbook”,一切都会完美编译。但是,如果我同时使用 smfbook 和 hyperref,当我有参考书目时,我会收到以下错误:

! Use of \H@old@schapter doesn't match its definition.
\NR@schapter #1->\H@old@schapter {
                                  #1}\begingroup \let \@mkboth \@gobbletwo \...
l.10 \begin{thebibliography}{1}

? 
! Extra }, or forgotten \endgroup.
\NR@schapter #1->\H@old@schapter {#1}
                                     \begingroup \let \@mkboth \@gobbletwo \...
l.10 \begin{thebibliography}{1}

不幸的是,这对我来说是官样文章(可能指出了 smfbook 样式与 hyperref 所做的某些冲突,而不是我所为)。鉴于我被迫使用 smfbook,有什么建议吗?

答案1

问题似乎在于书单\chapter*用可选参数定义并超链接没想到这一点。

\documentclass[english]{smfbook}
\usepackage{etoolbox}
\patchcmd{\thebibliography}{*}{}{}{}
\pretocmd\thebibliography{\csname c@secnumdepth\endcsname=-2 }{}{}

\usepackage{hyperref}
\begin{document}

By~\cite{Wiles}.

\bibliographystyle{smfplain}
\bibliography{mybibliography}
\end{document}

我打了补丁thebibliography,让它发出\chapter而不是\chapter*,但也在本地设置secnumdepth为 -2,因此章节仍然不会被编号。这会导致参考书目进入目录,无论如何它都应该这样做。

相关内容