
Zitat von
bsamuel
Die Caption jedoch hat nun einen anderen Stil. Wie kriege ich die wieder so hin, wie es das algorithm-Package standardmässig macht (mit zwei horizontalen Linien um die Caption am Anfang und einer am Schluss, ruled-style)?
Die Linien mußt du in diesem Falle wohl mit \hrule bzw. \rule selber zeichnen. Den Stil der Beschriftung kannst du mit \captionsetup{style=ruled,type=algorithm,skip=0pt} umschalten, wenn du das caption-Paket lädst.
Andere Idee: Auf die internen Makros des float-Paketes zurückgreifen, z.B.:
Code:
\documentclass{article}
\usepackage{algorithm,algorithmic}
\usepackage{caption}[2007/09/01] % v3.1
\begin{document}
% normal
\begin{algorithm}[H]
\caption{Calculate $y = x^n$}
\label{alg1}
\begin{algorithmic}
\REQUIRE $n \geq 0 \vee x \neq 0$
\ENSURE $y = x^n$
\STATE $y \Leftarrow 1$
\IF{$n < 0$}
\STATE $X \Leftarrow 1 / x$
\STATE $N \Leftarrow -n$
\ELSE
\STATE $X \Leftarrow x$
\STATE $N \Leftarrow n$
\ENDIF
\WHILE{$N \neq 0$}
\IF{$N$ is even}
\STATE $X \Leftarrow X \times X$
\STATE $N \Leftarrow N / 2$
\ELSE[$N$ is odd]
\STATE $y \Leftarrow y \times X$
\STATE $N \Leftarrow N - 1$
\ENDIF
\ENDWHILE
\end{algorithmic}
\end{algorithm}
% selbstgebaut
\begin{center}
\captionsetup{style=ruled,type=algorithm,skip=0pt}
\makeatletter
\fst@algorithm\@fs@pre
\makeatother
\caption{Calculate $y = x^n$}%
\label{alg2}
\makeatletter
\@fs@mid
\makeatother
\begin{algorithmic}
\REQUIRE $n \geq 0 \vee x \neq 0$
\ENSURE $y = x^n$
\STATE $y \Leftarrow 1$
\IF{$n < 0$}
\STATE $X \Leftarrow 1 / x$
\STATE $N \Leftarrow -n$
\ELSE
\STATE $X \Leftarrow x$
\STATE $N \Leftarrow n$
\ENDIF
\WHILE{$N \neq 0$}
\IF{$N$ is even}
\STATE $X \Leftarrow X \times X$
\STATE $N \Leftarrow N / 2$
\ELSE[$N$ is odd]
\STATE $y \Leftarrow y \times X$
\STATE $N \Leftarrow N - 1$
\ENDIF
\ENDWHILE
\end{algorithmic}
\makeatletter
\@fs@post
\makeatother
\end{center}
\end{document}
Wie man sieht stimmen die Abstände unter/über den Linien nicht perfekt, hier müsste man noch Finetuning betreiben.
Gruß,
Axel
Lesezeichen