0

Good afternoon ,

I need to write some algorithm steps as text using listings package :

\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}

Using this approach , the printed result looks bad !

I only need to see the steps written as the standard text ( but within the algorithm )

enter image description here Thank you for help !

Tou Mou
  • 205

2 Answers2

2

I think you're better off using a regular algorithm environment:

enter image description here

\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}

Werner
  • 603,163
  • Yes , but i avoided {algorithm} package because it's difficult to split it across multiple pages – Tou Mou Jul 13 '21 at 16:21
  • 1
    @TouMou: True; floats are blocks that can't be broken (without some work). It's possible to have continued algorithms that span multiple pages though. – Werner Jul 13 '21 at 16:23
  • @TouMou: What do your other algorithms look like? Different code, or all just text-based? – Werner Jul 13 '21 at 16:24
  • For this case it's ok but i hope of there is a way to split algorithm even manually . Some of algorithms contains mixture of equations and text – Tou Mou Jul 13 '21 at 16:25
  • https://tex.stackexchange.com/questions/85390/divide-an-algorithm-on-two-pages – Tou Mou Jul 13 '21 at 16:33
  • 1
    @TouMou: Many things are possible. You can set a manual caption that would represent the start of the algorithm, followed by whatever you want (like an enumerated list, broken with equations in between) and then close it off with a horizontal rule to signify the end of the algorithm. This would allow it to break across numerous pages. – Werner Jul 13 '21 at 17:53
  • thank you a lot for your precious help ! – Tou Mou Jul 13 '21 at 22:43
1

A way to solve this problem is using xelatex.

I deleted \usepackage[utf8]{inputenc} and changed the engine to xelatex, then I got an output that seems good.