问题与疑问

问题与疑问

我尝试在这篇文章的帮助下创建我自己的“事物清单”: 定义你自己的列表

现在我的问题是:

  1. 我不想使用命令。相反,我想使用像...\algorithm {Text}这样的容器。我该怎么做?(可选)\begin{algorithm}\end{algorithm}
  2. 即使我使用第一个命令,算法列表仍然是空的。我该如何填充它?
  3. 该标题看起来与“正常”列表的标题不同。

以下是我的示例:

\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

选项demographicx用黑色矩形替换实际图形;不是在实际文档中使用该选项。

相关内容