使用 caption 包时产生的错误

使用 caption 包时产生的错误

我的.tex 文件:

\documentclass[a4paper,twoside,portrait,12pt,openright,final,pdflatex]{report}
\usepackage[bindingoffset=8mm]{geometry}
\usepackage[T1]{fontenc}
\usepackage{arabtex}
\usepackage{utf8}
\usepackage{graphicx}
\usepackage{float} 
\usepackage{caption}
\captionsetup{font=small,labelfont=bf}
\setcounter{secnumdepth}{3}
\usepackage{fixltx2e} 
\usepackage{paralist} 
\usepackage{hyperref}
\hypersetup{pdftex,linktocpage=true,bookmarks=true,colorlinks=true,citecolor=blue,filecolor=black,linkcolor=blue,urlcolor=black,pdfauthor={Ayman Elmasry},pdftitle={Algorithmic Form Generation: A Thermal Building
Envelope Design Approach}}
\usepackage[all]{hypcap}
\usepackage{lipsum}

\begin{document}

\lipsum[1-20]

\end{document}

我使用 pdflatex 进行编译,出现以下错误:

(/usr/local/texlive/2011/texmf-dist/tex/latex/caption/caption.sty
(/usr/local/texlive/2011/texmf-dist/tex/latex/caption/caption3.sty
Runaway argument?
{\caption@CheckCommand \@makecaption {\long \def \@makecaption ##1##2\ETC.
! Paragraph ended before \@gobble was complete.
<to be read again> 
                   \par 
l.901         \unskip\kern-2\captionindent\par

当我注释掉时:

%\usepackage{caption}
%\captionsetup{font=small,labelfont=bf}

... 我毫无问题地获得了一个输出 PDF 文件。

答案1

该问题是一个arabtex将重新定义\@gobble为非长的错误。

\documentclass{article}
{\makeatletter\typeout{\meaning\@gobble}}
\usepackage{arabtex}
{\makeatletter\typeout{\meaning\@gobble}}
\stop

首先获取\long macro:#1->,然后获取macro:#1->。宏必须在其参数中\long允许,因此存在问题。一种解决方案是在加载 之后立即\par添加。{\makeatletter\long\gdef\@gobble#1{}}arabtex

\usepackage{arabtex}
{\makeatletter\long\gdef\@gobble#1{}}

这将恢复 LaTeX 核函数的原始定义\@gobble

答案2

正如下面的 MWE 所演示的那样,该错误不是由于标题包引起的。

\documentclass{article}
\usepackage{caption}
\captionsetup{font=small,labelfont=bf}
\begin{document}
\captionof{figure}{Just a test.}
\end{document}

提供最小的工作示例总是最好的。我建议您开始从代码中删除行,或\end{document}逐步插入,直到确定错误来源(可能是标题文本中未受保护的命令)。

编辑

arabtex 包和 utf8 都与 caption 包冲突。arabtex 包为 RL 写作重新定义了不少项目。建议删除它们。

相关内容