我尝试过使用algorithm2e
和algorithmic
来生成算法列表,但它们都是以这种方式进行的:
List of Algorithms
1 BFS ..... 1
2 DFS ..... 2
...
当我希望它变成这样时:
List of Algorithms
Algorithm 1 BFS ..... 1
Algorithm 2 DFS ..... 2
...
正在使用的软件包:
\documentclass[pnumabnt,normaltoc,capchap,floatnumber=continuous]{abnt}
\usepackage[bibjustif,abnt-etal-cite=2,abnt-full-initials=yes]{abntcite}
\usepackage[toc,page]{modelo/tex/appendix}
\usepackage[portuguese,brazilian,portuges]{babel}
\usepackage[utf8]{inputenc}
\usepackage{abnt-alf}
\usepackage{graphicx}
\usepackage{multicol}
\usepackage{listings}
\usepackage{booktabs}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{eucal}
\usepackage{amssymb}
\usepackage{mathrsfs}
\usepackage[portugues]{algorithm2e}
答案1
这不是很明显吗?标题下面算法列表只有算法可以遵循?为什么要提到 20 次算法再次?
我们可以先重新定义反陈述,比如
\renewcommand*{\thealgocf}{Algorithm~\arabic{algocf}}
但是内容列表需要修改,这可以使用tocloft
或titletoc
或之类的包来完成tocbasic
。
为了保持一致性,可能应该对图表、表格、章节等也采取同样的措施。我觉得这很奇怪。
答案2
算法列表的构造使用\l@algocf
宏(或者至少在我使用包时使用宏algorithm2e
)。这可能会略有不同,具体取决于您的算法包/设置/...
无论如何,您可以在序言中放置以下内容,以改变目录中线条的绘制方式:
\makeatletter
\let{\oldl@algocf}{\l@algocf}
\renewcommand{\l@algocf}[2]{\oldl@algocf{Algorithm #1}{#2}}
\makeatother
@
第一行和最后一行只是允许您在宏名中使用字符。- 第二行复制原始
\l@algocf
宏(因此您可以在第三行调用它) - 第三行重新定义
\l@algocf
宏以在目录行中的第一个参数(标题文本)前插入单词 Algorithm。
答案3
我终于正确地解决了这个问题。
首先,史蒂芬·柯特维茨无法解决algorithm2e
包中的问题,因为命令 \thealgocf 虽然用于表示算法列表中的编号,但它也用于算法环境的标题。而且新名称被裁剪为报告的数字这里。
所以回到青蛙拍击答案是,这个想法是正确的,只是 \let 表达式是错误的。因此,要修复此问题并解决问题,只需使用以下代码:
\makeatletter
\let\oldl@algocf\l@algocf
\renewcommand{\l@algocf}[2]{\oldl@algocf{Algorithm #1}{#2}}
\makeatother
感谢 drfrogslap 的回答。