这是一个简单的例子:
\documentclass{book}
\usepackage{algorithm2e}
\begin{document}
\chapter{Test [broken]}
\chapter[]{Test [not broken]}
\end{document}
这为我产生了:
我在用
- pdfTeX,版本 3.141592653-2.6-1.40.25(TeX Live 2023)
- 文档类别:书籍 2022/07/02 v1.4n 标准 LaTeX 文档类别
- algorithm2e.sty — 算法包,版本 5.2
我觉得这有点像 bug...或者是我做错了什么?
文件中algorithm2e.sty
有一部分可能是原因,因为它重新定义了章节命令:
%% redefine chapter so that it adds a vspace in the loa as the original does for lof and lot
% \let\algocf@original@chapter=\chapter%
% \def\chapter{\expandafter\addtocontents{loa}{\protect\addvspace{10\p@}}\algocf@original@chapter}%
%
% bug correction with hyperref submitted by Hubert Meier
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname @chapter\endcsname\relax\else
% \let\algocf@original@chapter=\chapter%
% \def\chapter{\addtocontents{loa}{\protect\addvspace{10\p@}}\algocf@original@chapter}%
\let\algocf@original@chapter=\@chapter%
\@ifclassloaded{krantz}{%
\def\@chapter[#1][#2]#3{\algocf@original@chapter[#1][#2]{#3}\addtocontents{loa}{\protect\addvspace{10\p@}}}%
}{%
\def\@chapter[#1]#2{\algocf@original@chapter[#1]{#2}\addtocontents{loa}{\protect\addvspace{10\p@}}}%
}%
\fi
虽然我有点不确定,因为我不完全明白这里发生了什么......
答案1
它应该是
\algocf@original@chapter[{#1}][{#2}]{#3}
和
\algocf@original@chapter[{#1}]{#2}
而不是当前的
\algocf@original@chapter[#1][#2]{#3}
和
\algocf@original@chapter[#1]{#2}
,
如果中间的参数[...]
包含,则将会失败]
。
我已经邮寄了其中一个软件包维护者克里斯托夫。
\documentclass{book}
\usepackage{algorithm2e}
\makeatletter
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname @chapter\endcsname\relax\else
\@ifclassloaded{krantz}{%
\def\@chapter[#1][#2]#3{\algocf@original@chapter[{#1}][{#2}]{#3}\addtocontents{loa}{\protect\addvspace{10\p@}}}%
}{%
\def\@chapter[#1]#2{\algocf@original@chapter[{#1}]{#2}\addtocontents{loa}{\protect\addvspace{10\p@}}}%
}%
\fi
\makeatother
\begin{document}
\chapter{Test [broken]}
\chapter[]{Test [not broken]}
\end{document}
答案2
除了square brackets
直接给予Chapter title
,你还可以通过给予tag
,例如,
\documentclass{book}
\usepackage{algorithm2e}
\begin{document}
\def\lbrack{[}\def\rbrack{]}
\chapter{Test \lbrack broken\rbrack}
\chapter[]{Test [not broken]}
\end{document}
希望这能解决问题。