如何使用 listing 包将算法插入为文本

如何使用 listing 包将算法插入为文本

下午好 ,

我需要使用列表包将一些算法步骤写为文本:

\documentclass[10pt]{book}
\usepackage[english]{babel}
\usepackage{amsmath,amsthm}
\usepackage{amsfonts}

\usepackage[utf8]{inputenc}

\setcounter{tocdepth}{4}
\setcounter{secnumdepth}{4}

\usepackage{geometry}
 \geometry{
 a4paper,
 total={170mm,257mm},
 left=20mm,
 top=20mm,
 right=10mm,
 left=10mm
 }

\usepackage{listings}
\usepackage{caption}

\lstset{
language=C++,
basicstyle=\small\ttfamily,
numbersep=5pt,
xleftmargin=20pt,
frame=tb,
framexleftmargin=20pt
}



\DeclareCaptionFormat{mylst}{\hrule#1#2#3}
\captionsetup[lstlisting]{format=mylst,labelfont=bf,singlelinecheck=off,labelsep=space}
\renewcommand\lstlistingname{Algorithm}

\title{Mouad PHD }
\author{Mouad TOUARSI}
\date{ }

% THEOREMS -------------------------------------------------------
\newtheorem{thm}{Theorem}[chapter]
\newtheorem{cor}[thm]{Corollary}
\newtheorem{lem}[thm]{Lemma}
\newtheorem{prop}[thm]{Proposition}
\theoremstyle{definition}
\newtheorem{defn}[thm]{Definition}
\theoremstyle{remark}
\newtheorem{rem}[thm]{Remark}
% ----------------------------------------------------------------
\renewcommand*\contentsname{Summary}

\begin{document}

\maketitle

\tableofcontents{}

\thispagestyle{empty}
\listoffigures
\listoftables
\newpage
\pagenumbering{arabic}

\begin{lstlisting}[language={},caption={test algorithm}]

\text{Initialiser} : sélectionnez aléatoirement k des n points de données comme médoïdes \\

    \textbf{Étape d’assignation :} associez chaque point de données au médoïde le plus proche (En utilisant par exemple la distance L2). \\

    \textbf{Étape de mise à jour} : Pour chaque médoïde m et chaque point de données o associé à m permutez m et o et calculez le coût total de la configuration (c'est-à-dire la dissimilarité moyenne de o avec tous les points de données associés à m ). Sélectionnez le médoïde o avec le coût le plus bas de la configuration. \\

    \textbf{Répétez les étapes 2 et 3} en alternance jusqu'à ce qu'il n'y ait aucun changement dans les affectations. \\

\end{lstlisting}



\end{document}

使用这种方法,打印结果看起来很糟糕!

我只需要看到以标准文本形式写出的步骤(但在算法范围内)

在此处输入图片描述 谢谢你的帮助 !

答案1

解决这个问题的一种方法是使用 xelatex。

我删除了 \usepackage[utf8]{inputenc} 并将引擎更改为 xelatex,然后得到了一个看起来不错的输出。

答案2

我认为你最好使用常规algorithm环境:

在此处输入图片描述

\documentclass{book}

\usepackage[utf8]{inputenc}

\usepackage{algorithm}

\begin{document}

\begin{algorithm}
  \caption{Test algorithm}

  \begin{enumerate}
    \item \textbf{Initialiser :} sélectionnez aléatoirement k des n points de données comme médoïdes
    \item \textbf{Étape d’assignation :} associez chaque point de données au médoïde le plus proche (En utilisant par exemple la distance L2).
    \item \textbf{Étape de mise à jour} : Pour chaque médoïde m et chaque point de données o associé à m permutez m et o et calculez le coût total de la configuration (c'est-à-dire la dissimilarité moyenne de o avec tous les points de données associés à m ). Sélectionnez le médoïde o avec le coût le plus bas de la configuration.
    \item \textbf{Répétez les étapes 2 et 3} en alternance jusqu'à ce qu'il n'y ait aucun changement dans les affectations.
  \end{enumerate}
\end{algorithm}

\end{document}

相关内容