我尝试在这篇文章的帮助下创建我自己的“事物清单”: 定义你自己的列表
现在我的问题是:
- 我不想使用命令。相反,我想使用像...
\algorithm {Text}
这样的容器。我该怎么做?(可选)\begin{algorithm}
\end{algorithm}
- 即使我使用第一个命令,算法列表仍然是空的。我该如何填充它?
- 该标题看起来与“正常”列表的标题不同。
以下是我的示例:
\documentclass[a4paper, oneside, 12pt, listof=totoc, bibliography=totoc, titlepage, headinclude = false, footinclude = false, mpinclude = false, BCOR = 0mm, DIV = calc]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{graphicx}
\makeatletter
\def\ScaleIfNeeded{%
\ifdim\Gin@nat@width>\linewidth
\linewidth
\else
\Gin@nat@width
\fi
}\makeatother
\usepackage{setspace}
\onehalfspacing
\usepackage[a4paper, left=3 cm, right=4 cm, top=3 cm, bottom=1.5 cm]{geometry}
\usepackage{fancyhdr}
\usepackage{longtable}
\usepackage{bibgerm}
\usepackage{eurosym}
\usepackage{booktabs}
\usepackage{array}
\usepackage{color}
\usepackage{tabularx}
\usepackage{pdflscape}
\usepackage[justification=RaggedRight, singlelinecheck=false]{caption}
\usepackage[pageanchor=false]{hyperref}
\usepackage{listings}
\usepackage{algorithm}
\usepackage{etoolbox}
\usepackage{pdfpages}
\usepackage[scaled]{uarial}
\usepackage[printonlyused]{acronym}
\usepackage{bigstrut}
\usepackage{multirow}
\usepackage{acronym}
\usepackage{ulem}
\usepackage{tocloft}
\fancypagestyle{plain}{}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[C]{- \thepage \ -}
\addtolength{\headwidth}{\marginparsep}
\addtolength{\headwidth}{0.5\marginparwidth}
\renewcommand{\headrulewidth}{1pt}
\setcounter{secnumdepth}{5}
\setlength{\parindent}{0pt}
\newcommand{\listalgorithm}{Algorithmenverzeichnis}
\newlistof{Algorithmen}{algo}{\listalgorithm}
\newcommand{\Algorithmen}[1]{%
\refstepcounter{Algorithmen}
\par\noindent\textbf{Algorithmen \theAlgorithmen. #1:}
\addcontentsline{algo}{Algorithmen}
{\protect\numberline{\thechapter.\theAlgorithmen}#1}\par}
\begin{document}
listalgorithm
\newpage
\Algorithmen{My Algorithm}
\includegraphics[width=\ScaleIfNeeded]{../Bilder/node_init.png}
最后两行应该是这样的(这是可选的)
\begin{Algorithm}
\caption{My Algorithm}
\includegraphics[width=\ScaleIfNeeded]{../Bilder/node_init.png}
\end{Algorithm}
这个算法列表的标题是这样的:
算法列表
但它看起来应该是这样的:
算法列表
我希望我能很好地解释我的问题;)
PS:我搜索了一些帖子,但它们不适合我的问题 :/
编辑:好的,我现在已经尝试了这两个答案,并且都有效。
我的代码看起来与解决方案几乎相同,所以我不会再次发布它。但我解释了我的问题是什么。
cgnieder:
一切都很好,看起来应该如此。我的第一个问题是我使用了“算法”包,并将新的 toc 算法也命名为算法。因此包覆盖了我的命令。删除它之后,一切都很好。
Gonzalo:
您的解决方案也几乎可以正常工作。列表看起来应该如此(粗体标题和条目),但我的其他列表未链接(锚定)在 pdf 的菜单中。这似乎是“hyperref”包的问题。在我评论和编译后,什么都没用。但是当我推荐它时,列表创建得很好(除了锚点)。
由于剩余的问题以及“tobasic”包是一个类实现的包,我选择了 cgnieders 答案作为我接受的答案。
非常感谢。你们俩都帮了我很多忙!!谢谢你!
答案1
我相信使用 KOMA-Script 最自然的方式是通过以下方式声明一个新的浮点数\DeclareNewTOC
与我在我的答案到新的图形环境。请注意,您必须添加并编译两次才能以与默认浮点数和\caption{}
相同的方式更新列表:{figure}
{table}
\documentclass{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\DeclareNewTOC[%
type=algorithm,%
types=algorithms,% used in the \listof.. command
float,% define a floating environment
floattype=4,% see below
name=Algorithmus,%
listname={Algorithmenverzeichnis}%
]{loa}
% About the `floattype' option:
% The numerical float type of the defined floats. Float types with common bits
% cannot be reordered. At the standard classes figures has float type 1 and tables
% has floatype 2. If no float type was given, 16 will be used.
% bold caption labels:
\setkomafont{captionlabel}{\bfseries}
% uncomment if you want the `algorithms' numbered with 1.1 , 1.2, ... :
% \renewcommand\thealgorithm{\thesection.\arabic{algorithm}}
\begin{document}
\listoffigures
\listofalgorithms
\section{Foo Bar}
\begin{algorithm}
whatever
\caption{a caption}
\end{algorithm}
\end{document}
答案2
1)您可以轻松地将您的命令转变为具有相同功能的环境(参见下面的代码):
2)和 3)使用\listofAlgorithmen
\documentclass[a4paper, oneside, 12pt, listof=totoc, bibliography=totoc, titlepage, headinclude = false, footinclude = false, mpinclude = false, BCOR = 0mm, DIV = calc]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[demo]{graphicx}
\usepackage{tocloft}
\makeatletter
\def\ScaleIfNeeded{%
\ifdim\Gin@nat@width>\linewidth
\linewidth
\else
\Gin@nat@width
\fi
}
\makeatother
\newcommand{\listalgorithm}{Algorithmenverzeichnis}
\newlistof{Algorithmen}{algo}{\listalgorithm}
\newenvironment{Algorithmen}[1]
{\refstepcounter{Algorithmen}
\par\noindent\textbf{Algorithmen \theAlgorithmen. #1:}\par\nobreak\noindent
\addcontentsline{algo}{Algorithmen}
{\protect\numberline{\thesection.\theAlgorithmen} #1}\ignorespaces%
}
{\par}
\begin{document}
\listoffigures
\listofAlgorithmen
\section{Test Section}
\begin{Algorithmen}{My Algorithm}
\includegraphics[width=\ScaleIfNeeded]{../Bilder/node_init.png}
\end{Algorithmen}
\end{document}
结果图像:
只是出于好奇,为什么不使用众多专用包之一来排版算法?
我从原始代码中删除了一些与问题无关的包。我还更改了一些与章节相关的命令,因为使用的类必须是scrartcl
。
选项demo
graphicx
用黑色矩形替换实际图形;不是在实际文档中使用该选项。