\usepackage[ruled]{algorithm2e}
我正在 overleaf 上撰写博士论文,但每当我插入算法包时,章节标题就会消失,并且算法会以良好的格式显示。每当我删除包时\usepackage[ruled]{algorithm2e}
,算法就会以错误的格式显示,而标题会以良好的格式显示。
任何有此链接的人都可以编辑此项目 https://www.overleaf.com/9127796831jszrmzbxmfyn 任何有此链接的人都可以查看此项目 https://www.overleaf.com/read/zswrfmqdbpft
您可以通过上面的链接访问背面的文件。请转到conclusion.tex
查看第 3 章中的更改并转到main.tex
软件包更改的文件。
答案1
您的设置目前存在的问题是类\@chapter
内部的重新定义book.cls
。通常\@chapter
定义为采用二参数 - 第一个是可选的,第二个是强制的(取自book.cls
):
\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\refstepcounter{chapter}%
\typeout{\@chapapp\space\thechapter.}%
\addcontentsline{toc}{chapter}%
{\protect\numberline{\thechapter}#1}%
\else
\addcontentsline{toc}{chapter}{#1}%
\fi
\else
\addcontentsline{toc}{chapter}{#1}%
\fi
\chaptermark{#1}%
\addtocontents{lof}{\protect\addvspace{10\p@}}%
\addtocontents{lot}{\protect\addvspace{10\p@}}%
\if@twocolumn
\@topnewpage[\@makechapterhead{#2}]%
\else
\@makechapterhead{#2}%
\@afterheading
\fi}
您的课程已修改,\@chapter
以便三参数:
\def\@chapter[#1]#2#3{\ifnum \c@secnumdepth >\m@ne %%%Changed by Rajarshi
\if@mainmatter
\refstepcounter{chapter}%
\typeout{\@chapapp\space\thechapter.}%
\addcontentsline{toc}{chapter}%
{\protect\numberline{\thechapter}#2}%
\else
\addcontentsline{toc}{chapter}{#2}%
\fi
\else
\addcontentsline{toc}{chapter}{#2}%
\fi
\chaptermark{#1}%
\addtocontents{lof}{\protect\addvspace{10\p@}}%
\addtocontents{lot}{\protect\addvspace{10\p@}}%
\if@twocolumn
\@topnewpage[\@makechapterhead{#1}]%
\else
\@makechapterhead{#3}%
\@afterheading
\fi}
Rajarshi 肯定有什么想法...:)
algorithm2e
利用\@chapter
算法列表 (LoA) 插入内容,但不会保留三-参数定义\@chapter
。这是里面的定义algorithm2e.sty
:
\def\@chapter[#1]#2{\algocf@original@chapter[#1]{#2}\addtocontents{loa}{\protect\addvspace{10\p@}}}%
这必须改为
\def\@chapter[#1]#2#3{\algocf@original@chapter[#1]{#2}{#3}\addtocontents{loa}{\protect\addvspace{10\p@}}}%
这样就可以正确捕获第三个参数。
还有更多问题,但这至少解决了\chapter
s 的问题。