PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Algorithmus-Umgebung nicht als Gleitobjekt und mit Seitenumbruch



frank
17-07-2010, 17:02
Hi, liebe TeXniker!

Ich möchte mit den Paketen algorithmic und algorithm einen Algorithmus darstellen. Mehrere Dinge müssen dabei erfüllt sein:

Der Algorithmus soll einen schönen Kopf haben, mit Überschrift und diesen typischen horizontalen Linien.
Der Algo soll im Algorithmenverzeichnis aufgelistet sein.
Der Algo soll kein Gleitobjekt wie etwa Tabellen oder Bilder sein, sondern sich direkt im Text einfügen und vor allem auch Seitenumbrüche erlauben.
Es wäre gut, wenn man innerhalb von algorithmic Blöcke definieren kann, in denen KEIN Seitenumbruch erfolgen darf.


Das Minimalbeispiel ist klar und verdeutlicht vor allem die ersten beiden Punkte:

\documentclass{scrbook}
\usepackage{algorithmic}
\usepackage[Algorithmus]{algorithm}

\begin{document}

\begin{algorithm}
\caption{Anzahl nicht-isomorpher kubischer Zahlk\"orper}
\begin{algorithmic}
\REQUIRE $D \in Z$
\ENSURE Anzahl
\RETURN $3$
\end{algorithmic}
\end{algorithm}

\listofalgorithms
\end{document}

Nun müsst ihr euch noch viel Text davor und dahinter vorstellen und stellt euch noch vor, der Algorithmus ginge über 1½ Seiten, meiner tut das nämlich.

Kann man die letzten beiden Punkte – vor allem den 3.! – irgendwie realisieren?

Frank

(Hinweis: Dieser Thread ist eine Fortsetzung von http://www.mrunix.de/forums/showthread.php?t=68745.)

sommerfee
18-07-2010, 05:57
http://www.mrunix.de/forums/showthread.php?t=65064

http://www.mrunix.de/forums/showthread.php?t=45268

frank
18-07-2010, 11:13
Herje, mit der Suchfunktion hätte ich das aber auch selber finden können!

Na egal, danke für die schnelle Antwort. Es funktioniert sehr schön. Da ich aber mehrere Algorithmen habe, würde ich gerne ein extra Environment dafür anlegen:


\documentclass{scrbook}
\usepackage{algorithmic}
\usepackage[Algorithmus]{algorithm}
\usepackage{caption}[2007/09/01] % needs v3.1

\newenvironment{algo}[1]{\begin{center}
\captionsetup{style=ruled,type=algorithm,skip=0pt}
\makeatletter
\fst@algorithm\@fs@pre
\makeatother
\caption{#1}
\makeatletter
\@fs@mid\vspace{2pt}
\makeatother
}{\makeatletter
\vspace{2pt}\@fs@post
\makeatother
\end{center}}

\begin{document}

\begin{algo}[Anzahl nicht isomorpher K\"orper]
\begin{algorithmic}
\REQUIRE $D \in Z$
\ENSURE Anzahl
\RETURN $3$
\end{algorithmic}
\end{algo}

\listofalgorithms
\end{document}

Mit dem newenvironment-Befehl klappt das teilweise nicht so recht. Kann man das funktionstüchtig machen?

rais
18-07-2010, 11:31
Moin moin,


Mit dem newenvironment-Befehl klappt das teilweise nicht so recht. Kann man das funktionstüchtig machen?
etwa


\documentclass{scrbook}
\usepackage{algorithmic}
\usepackage[Algorithmus]{algorithm}
\usepackage{caption}[2007/09/01] % needs v3.1
\makeatletter
\newenvironment{algo}[1]{%
\begin{center}
\captionsetup{style=ruled,type=algorithm,skip=0pt}
\fst@algorithm\@fs@pre
\caption{#1}
\@fs@mid\vspace{2pt}
}{%
\vspace{2pt}\@fs@post
\end{center}
}
\makeatother

\begin{document}

\begin{algo}{Anzahl nicht isomorpher K\"orper}
\begin{algorithmic}
\REQUIRE $D \in Z$
\ENSURE Anzahl
\RETURN $3$
\end{algorithmic}
\end{algo}

MfG

frank
18-07-2010, 13:10
Leute, ihr habt’s echt drauf – unglaublich, dass ich hier wirklich auf alle meine Fragen super Antworten bekomme.

Den 4. und letzten Punkt (zusammenhängende Blöcke im Algo) habe ich übrigens mit \pagebreak[3] gelöst, das ist optimal für meine Bedürfnisse.

Einen schönen Sonntag noch,

Frank