这有点紧急。我的文件出现错误(它在 Overleaf 上符合要求,但在 pdflatex 上不符合),我不知道如何修复它。我查看了文档和许多其他堆栈溢出问题,但我无法解决这个问题。
有什么建议么?
完整错误:
! Package biblatex Error: Patching \addtocontents failed.
See the biblatex package documentation for explanation.
Type H <return> for immediate help.
我实际上并没有在任何地方使用 addtocontents,并且在 \begin(document) 处出现此错误。
\documentclass{IOS-Book-Article}
\usepackage[utf8]{inputenc}
\makeatletter
\let\c@author\relax
\makeatother
\usepackage{graphicx}
\graphicspath{ {./images/} }
\usepackage{mathptmx}
\usepackage{stmaryrd}
\usepackage{array}
\usepackage{amsmath}
\usepackage{booktabs}
\usepackage{ragged2e}
\usepackage{bbold}
\usepackage{multirow}
\usepackage[compact]{titlesec}
\usepackage[dvipsnames]{xcolor}
\usepackage[backend=biber, style=vancouver, doi=false, isbn=false, url=false]{biblatex}
\addbibresource{references2.bib}
\AtBeginBibliography{\footnotesize}
...
\printbibliography
\end{document}
答案1
由于奇怪的原因,该班级确实
\long\def\addtocontents#1#2{}
这是非常没用的,因为它甚至没有定义\tableofcontents
类似的命令,所以做某事不是问题\addtocontents
。
您可以通过用其核心含义替换来避免错误\addtocontents
,然后稍后执行该类想要的操作(即使无用)。
我会避免打电话,titlesec
因为提交可能会因不合规而被拒绝。
\let\latexaddtocontents\addtocontents
\documentclass{IOS-Book-Article}
\let\addtocontents\latexaddtocontents
\usepackage[utf8]{inputenc}
\makeatletter
\let\c@author\relax
\AtBeginDocument{\let\addtocontents\@gobbletwo\setcounter{author}{0}}
\makeatother
\usepackage{graphicx}
\graphicspath{ {./images/} }
%\usepackage{mathptmx}
\usepackage{stmaryrd}
\usepackage{array}
\usepackage{amsmath}
\usepackage{booktabs}
\usepackage{ragged2e}
\usepackage{bbold}
\usepackage{multirow}
%\usepackage[compact]{titlesec}
\usepackage[dvipsnames]{xcolor}
\usepackage[backend=biber, style=vancouver, doi=false, isbn=false, url=false]{biblatex}
\addbibresource{references2.bib}
\AtBeginBibliography{\footnotesize}
\begin{document}
abc
\end{document}
我还添加了,\setcounter{author}{0}
因为该类为的目的定义了计数器\maketitle
,但是随后需要它,biblatex
并且在主体中,值应该按biblatex
预期从零开始。