Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Problem bei mehrseitigen Algorithmen

  1. #1
    Registrierter Benutzer
    Registriert seit
    23.03.2006
    Beiträge
    41

    Problem bei mehrseitigen Algorithmen

    Hi !!!

    Ich muss in meinem Dokument ein Algorithmus reinschreiben, der über zwei Seiten geht.
    Doch nachdem ich dies getan habe, so wird die Seite bis zum Ende angezeigt und der Rest des Algorithmus wird einfach abgeschnitten, als wenn da nichts stünde

    Code:
    \begin{algorithm}
    \caption{\label{was auch immer} Algo Name}
    \begin{algorithmic}
    \REQUIRE{Eingabe}
    \ENSURE{Ausgabe}
    \STATE{\hrulefill}
    \end{algorithmic}
    \begin{algorithmic}
    \STATE{\hspace{0cm}
    \begin{center}
    \begin{flushleft}
    .... Hier der Algo........
    .....etwas lang........
    \end{flushleft}
    \end{center}}
    \STATE{\hspace{0cm}}
    \end{algorithmic}
    \label{was auch immer}
    \end{algorithm}
    Weiss jemand, wie ich einen Algorithmus auf zwei Seiten schreiben kann?

  2. #2
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Ich weiss zwar nicht genau, was deinen Anforderungen sind, könnte mir jedoch vorstellen, dass das Paket listings auch funktionieren könnte. Ansonsten halt den Algorithmus auf zwei Umgebungen aufteilen...

    MfG Bischi

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

  3. #3
    Registrierter Benutzer
    Registriert seit
    26.05.2006
    Beiträge
    879
    Zitat Zitat von bucada
    Hi !!!

    Ich muss in meinem Dokument ein Algorithmus reinschreiben, der über zwei Seiten geht.
    Doch nachdem ich dies getan habe, so wird die Seite bis zum Ende angezeigt und der Rest des Algorithmus wird einfach abgeschnitten, als wenn da nichts stünde
    Code:
    \begin{algorithm}
    \caption{\label{was auch immer} Algo Name}
    -- nimm keine Fließumgebung (algorithm), die kann nur auf einer Seite erscheinen.
    -- Schreibe die caption selbst (Paket caption) \captionof{algorithm}{AlgoName}\label{foo}
    -- Weiter normal mit \begin{algorithmic}


    rc

  4. #4
    Registrierter Benutzer
    Registriert seit
    23.03.2006
    Beiträge
    41
    Wunderbar. Vielen Dank für Eure Hilfe.

  5. #5
    luzi78
    Gast
    Hi!

    Ich hab das jetzt auch so gemacht wie vorgeschlagen und das haut auch super hin, hab aber jetzt ein Folgeproblem. Nach der Verwendung von sizeof{algorithm} sind die Beschriftungen aller Bilder nicht mehr zentriert sonder links und 'Figure' ist fett geschrieben. Wie kann ich das wieder in die Mitte bringen?

    Danke
    Luzi

  6. #6
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Zitat Zitat von luzi78 Beitrag anzeigen
    Ich hab das jetzt auch so gemacht wie vorgeschlagen und das haut auch super hin, hab aber jetzt ein Folgeproblem. Nach der Verwendung von sizeof{algorithm} sind die Beschriftungen aller Bilder nicht mehr zentriert sonder links und 'Figure' ist fett geschrieben. Wie kann ich das wieder in die Mitte bringen?
    Ein Minimalbeispiel wäre hilfreich.

    Ansonsten hat mein Blick in meine Kristallkugel ergeben: Du verwendest vermutlich \captionof nicht immerhalb einer Umgebung; \captionof muß immer in eine minipage, parbox oder was-auch-immer gesteckt werden, zur Not reicht auch ein \begingroup ... \endgroup (bzw. einfache geschweifte Klammern). Ansonsten kann es zu den merkwürdigsten Nebenwirkungen kommen.

    (Die nächste Version vom caption-Paket wird deswegen auch in diesem Fall eine Fehlermeldung ausgeben, zumindest wenn e-TeX als TeX verwendet wird.)

    Liebe Grüße,
    Axel

  7. #7
    Registrierter Benutzer
    Registriert seit
    15.01.2008
    Beiträge
    5

    Format der Caption

    Hatte genau dasselbe Problem (mehrseitigen Code) und war froh, hier eine Antwort zu finden.

    Klappt auch gut und der vollständige Code wird nun richtig dargestellt. 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)?

    Herzlichen Dank für die Hilfe

  8. #8
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Zitat Zitat von bsamuel Beitrag anzeigen
    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
    Geändert von sommerfee (15-01-2008 um 11:51 Uhr) Grund: \label an die richtige Stelle geschoben

  9. #9
    Registrierter Benutzer
    Registriert seit
    15.01.2008
    Beiträge
    5

    Funzt

    Wow, super, herzlichen Dank für die blitzschnelle Antwort, Axel!

    Die selbstgebastelte Version sieht auf den ersten Blick genau so aus, wie ich es gerne hätte. Werde schauen, ob Finetuning noch nötig ist, bin damit schon mal sehr zufrieden. Danke!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •