Algorithmus über zwei Seiten, will einfach nicht

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


tinchi
Forum-Anfänger
Forum-Anfänger
Beiträge: 11
Registriert: Mo 14. Apr 2014, 12:00

Algorithmus über zwei Seiten, will einfach nicht

Beitrag von tinchi »

Hallo!

ich benutze die Pakete algorithm und algorithmic um meinen Algorithmus zu definieren. Jedoch ist dieser viel zu lang für eine Seite, ich habe schon überall im internet geguckt, aber die vorschläge sind dass ich

\usepackage{algcompatible} und algstore und restore verwende, aber dies funktioniert irgendwie bei mir nicht :S.. Auf die float Umgebung kann ich auch nicht verzichten, da ich eine caption fr mein Algorithmus setzen muss. Weiss vllt jemand was ich falsch mache oder wie ich es machen könnte??
\documentclass[a4paper,10pt, twoside]{book}
\usepackage[utf8]{inputenc}
\usepackage{algorithm}
%\usepackage{algcompatible} funktioniert ja bei mir nicht
\usepackage{algorithmic}

\renewcommand{\algorithmicrequire}{\textbf{INPUT:}}

\begin{document}
\begin{algorithm}
\caption{My algorithm}
\begin{algorithmic}
\REQUIRE \(a, c, b ,d \)
\STATE some information and values..
\STATE some information and values..
\STATE some information and values..
\STATE some information and values..
\STATE some information and values..
\STATE some information and values..
\STATE some information and values..
\FOR{\(j=e+1\) \TO \(s-1\)} }
\STATE do something
\ENDIF
\IF{(etwas \OR anderes) \AND nochEineBedingug}
\STATE Other.....
\STATE Other.....
\STATE Other.....   % hier irgendwo würde ich gerne meinen algorithmus in zwei teilen, 
\STATE Other.....  % die for schleife ist hier immer noch aktiv!
\STATE Other.....
\ENDIF
\ENDFOR
\end{algorithmic}
\end{algorithm}



\end{document}


Besserwisser

Beitrag von Besserwisser »

Gleitumgebungen können nie über mehrere Seiten umbrochen werden. Für Beschriftungen ohne Gleitumgebung siehe \captionof in der Anleitung zu den KOMA-Script-Klassen, zum Paket caption oder zum Paket capt-of. Bei den ersten beiden kann man auch gleich die Definition der Gleitumgebung (bei KOMA-Script ggf. auch einer nicht gleitenden Umgebung) mit erledigen statt algorithm zu verwenden.

"Funktioniert bei mir nicht" ist übrigens eine gaaanz schlechte Fehlerbeschreibung.

tinchi
Forum-Anfänger
Forum-Anfänger
Beiträge: 11
Registriert: Mo 14. Apr 2014, 12:00

Beitrag von tinchi »

Hmm also wenn ich das algorithm weglasse, wird der Algorithmus automatisch über beide Seiten gebrochen? Ist das was du mir vorschlägst?

Besserwisser

Beitrag von Besserwisser »

Das ist nur ein kleiner Teil dessen, was ich dir vorgeschlagen habe.

Ich hätte dir das eventuell auch gleich gezeigt, aber da dein Beispiel massenhaft Fehler wirft, statt das eigentliche Problem zu zeigen, habe ich mir das gespart. Siehe auch die VM-Anleitung nicht nur aber auch für Anfänger.

tinchi
Forum-Anfänger
Forum-Anfänger
Beiträge: 11
Registriert: Mo 14. Apr 2014, 12:00

Beitrag von tinchi »

 

\documentclass[a4paper,10pt, twoside]{book} 
\usepackage[utf8]{inputenc} 
\usepackage{algorithm} 
%\usepackage{algcompatible} funktioniert ja bei mir nicht 
\usepackage{algorithmic} 

\renewcommand{\algorithmicrequire}{\textbf{INPUT:}} 

\begin{document} 
\begin{algorithm} 
\caption{My algorithm} 
\begin{algorithmic} 
\REQUIRE \(a, c, b ,d \) 
\STATE some information and values.. 
\STATE some information and values.. 
\STATE some information and values.. 
\STATE some information and values.. 
\STATE some information and values.. 
\STATE some information and values.. 
\STATE some information and values.. 
\FOR{\(j=e+1\) \TO \(s-1\)} 
\STATE do something 
\IF{eine Bedinung}
\STATE doSomething
\ENDIF 
\IF{(etwas \OR anderes) \AND nochEineBedingug} 
\STATE Other..... 
\STATE Other..... 
\STATE Other.....   % hier irgendwo würde ich gerne meinen algorithmus in zwei teilen, 
\STATE Other.....  % die for schleife ist hier immer noch aktiv! 
\STATE Other..... 
\ENDIF 
\ENDFOR 
\end{algorithmic} 
\end{algorithm} 



\end{document} 
 



Jetzt sollte es funktionieren. Kannst du mir vllt jetzt deinen Vorschlag zeigen?
Btw massenhaft Fehler: ich hatte eine klammer zu viel ;)

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

Wie bereits erwähnt, lass die algorithm-Umgebung weg und setz die caption mit \captionof{algorithm}{deine tolle Beschriftung.} aus dem capt-of Paket.

Ohne Beispiel, da kaum Kapazität aufm Rechner.
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

Auch ein

Beitrag von Auch ein »

Ich kann bei dem Beispiel kein Problem feststellen.

tinchi
Forum-Anfänger
Forum-Anfänger
Beiträge: 11
Registriert: Mo 14. Apr 2014, 12:00

Beitrag von tinchi »

Hmm ok, aber eine frage hätte ich noch: das mit dem caption-of habe ich hinbekommen. Aber so sieht der Algorithmus iwie unschön aus, kann man es irgendwie schaffen, dass die linien, die oben durch die algorithm Umgebung generiert wurden auch wieder dargestellt werden? auch ohne die float Umgebung?

tinchi
Forum-Anfänger
Forum-Anfänger
Beiträge: 11
Registriert: Mo 14. Apr 2014, 12:00

Beitrag von tinchi »

Hmmm also ich muss sagen diese Lösung ist echt unschön, wenn ich es so mache:

\hrulefill
\captionof{algorithm}[Algorithm for whatever]{My really awesome caption of the algorithm.}
\begin{algorithmic}
...
\endalgorithmic}

dann ist die caption irgendwo zentriert, hat eine Riesen vertikalen abstand zum Algorithmus und dazu sind noch die horizontalen linien weg. gibt es da echt keine andere Möglichkeit es auf zwei Seiten zu splitten?

Besserwisser

Beitrag von Besserwisser »

Beim Paket caption oder bei KOMA-Script kann man die Formatierung als Über- statt als Unterschrift einfach einstellen.

Was du als Nachteile beschreibst, sind eigentlich Vorteile. Die Linien passen nämlich ohnehin nicht zum Stil ähnlicher Umgebungen wie beispielsweise table und figure. Wenn du aber unbedingt Linien zeichnen willst, gibt es beispielsweise \rule. Und natürlich kann man (und sollte man) sich dann auch eine eigene Umgebung definieren, in der dann zumindest die Linie am Anfang und Ende automatisch gesetzt wird. Dazu sei auch auf Pakete wie mdframed hingewiesen, die Umgebungen bieten, bei denen man auch den Seitenumbruch in Überlegungen einbeziehen kann. Ob dieses mit algrorithmic zusammen funktioniert, habe ich aber nicht getestet.

Antworten