![hyperref、smfbook 和参考书目](https://linux22.com/image/239181/hyperref%E3%80%81smfbook%20%E5%92%8C%E5%8F%82%E8%80%83%E4%B9%A6%E7%9B%AE.png)
我正在为一家法国杂志撰写论文/书籍,这需要使用“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,因此章节仍然不会被编号。这会导致参考书目进入目录,无论如何它都应该这样做。