包含子标题包时出错

包含子标题包时出错

我是 latex 的新用户,正在尝试用 latex 写论文。我收到了一个 latex 模板,它使用以下软件包。当我尝试将\usepackage{subcaption}子图包含到我的论文中时,文件无法编译并出现错误。我不知道以下哪个软件包与 subcaption 软件包冲突。此致

\documentclass[b5paper, 11pt]{report}
\usepackage{arabtex}
\usepackage{lipsum}
\usepackage{utf8}
\pagestyle{plain}
\usepackage{graphicx}
\usepackage{bm}
\usepackage[]{amsmath}
\usepackage{amssymb}
\usepackage{afterpage}
\usepackage{verbatim}
\usepackage{psfrag}
\usepackage{color}
\usepackage{cite}
\usepackage{epsfig}
\usepackage{epstopdf}
\usepackage{footmisc}
\usepackage{fmtcount}
\usepackage{stackrel}
\usepackage{float}
\usepackage{tocloft}
\usepackage{silence}
\usepackage{url}
\usepackage{enumerate}
\usepackage{hyperref}
\usepackage{fancyhdr}
\usepackage{nomencl}
\usepackage{makeidx}
\makeindex
\usepackage{setspace}
\usepackage{geometry}
\usepackage{graphicx}
%\usepackage{caption}
%\usepackage{subcaption}
\geometry{  b5paper,
            total={185mm,255mm},
            left=25mm,
            right=25mm,
            top=25mm,
            bottom=25mm,
            }
\doublespacing
\hypersetup{urlcolor=black, colorlinks=true, citecolor=blue}
\title{\ttitle}

答案1

更全面的 MWE 是

\documentclass{report}
\usepackage{arabtex}
\usepackage{caption}
\begin{document}
  A
\end{document}

错误信息是

Runaway argument?
{\caption@CheckCommand \@makecaption {\long \def \@makecaption ##1##2\ETC.
! Paragraph ended before \@gobble was complete.
<to be read again> 
               \par 

为什么会被\@gobble打扰\par?这个会展示主要问题:

\documentclass{report}
\makeatletter\show\@gobble\makeatother
\usepackage{arabtex}
\makeatletter\show\@gobble\makeatother
\begin{document}
A
\end{document}

运行该文档时,很明显正在arabtex重新定义内部 LaTeX 宏,\@gobble在我看来,\long\def\@gobble#1{}\def\@gobble#1{}显然是一个致命的错误。

这使得整个caption软件包注定要失败,因为(与许多其他软件包一样)它依赖于一些内部 LaTeX 命令的正确定义,如\@ifundefined、、等等。\@gobble\@firstofone\@firstoftwo

\@gobble作为一种解决方法,可以在加载后恢复定义arabtex

\documentclass{report}
%
\usepackage{arabtex}
% arabtex cripples \@gobble, so we need to restore it
\makeatletter
\long\def\@gobble#1{}
\makeatother
%
\usepackage{caption}
%
\begin{document}
  A
\end{document}

但是,这个错误应该报告给 的维护者arabtex。这肯定需要修复,我非常怀疑这个caption软件包是唯一一个遇到这个问题的软件包。

更新:快速的互联网搜索显示,这是一个重复的问题使用 caption 包时产生的错误,而且这个错误已经好几年没被修复了。

更新 #2:由于没有迹象表明这个错误将在 2017 年得到修复,因此arabtex我在caption软件包中添加了一个解决方法。因此,如果您遇到此问题,只需更新 TeX 发行版,问题就会消失。另请参阅:https://sourceforge.net/p/latex-caption/tickets/33/

相关内容