Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Probleme mit algpseudocode und Zeilennummerierung von algorithmic

  1. #1
    Registrierter Benutzer
    Registriert seit
    31.01.2008
    Beiträge
    25

    Probleme mit algpseudocode und Zeilennummerierung von algorithmic

    Hi!

    Ich habe Probleme mit der Zeilennummerierung, wenn ich \usepackage{algpseudocode} verwende, um \Function (und Co) zu ermöglichen.

    Kann mir jemand sagen wie ich die Fehler beheben kann?

    (siehe auch: http://www.mrunix.de/forums/showthread.php?t=56962 )

    Anbei ein "Minimal"beispiel und das Paket (TexnicCenter Projekt) inkl. Log-Datei und PDF:
    http://home.arcor.de/3des/alg_test.zip

    Viele Grüße,
    Tom

    Code:
    \documentclass[titlepage, 12pt, final,oneside]{scrbook}
    \KOMAoptions{paper=a4}
    
    \usepackage[automark,headsepline]{scrpage2} 	% für die Formatierung (der Fuß- und Kopfzeile)
    \usepackage[latin1]{inputenc}									% für die Unterstützung von Umlauten
    \usepackage[ngerman]{babel}										% deutsche Silbentrennung
    
    \usepackage{float}
    
    \usepackage{caption}
    \usepackage{algorithmic}
    \usepackage{algorithm}
    \usepackage{algpseudocode}
    
    \makeatletter
      \newcounter{algorithmic}
      \let\ORIG@algorithmic\algorithmic
      \def\algorithmic{\stepcounter{algorithmic}\ORIG@algorithmic}
      \def\theHALC@line{\thealgorithmic-\theALC@line}
      \def\theHALC@rem{\thealgorithmic-\theALC@rem}
    \makeatother
     
    \usepackage[pdftex,
                colorlinks=true, linkcolor=blue, urlcolor=blue, citecolor=blue,
                raiselinks=true,
                bookmarks=false,
                bookmarksopenlevel=1,
                bookmarksopen=true,
                bookmarksnumbered=true,
                hyperindex=true,
                plainpages=false,% correct hyperlinks
                pdfpagelabels=true%,% view TeX pagenumber in PDF reader
                %pdfborder={0 0 0.5}
                ]{hyperref} % erzeuge Hyperlinks z.B. für pdflatex
    
    \begin{document}
    
    \begin{flushleft}
      \captionsetup{style=ruled,type=algorithm,skip=0pt}
      \makeatletter
        \fst@algorithm\@fs@pre
      \makeatother
      \caption{blub}
      \label{alg:blub}
      \makeatletter
        \@fs@mid
      \makeatother
    \algsetup{indent=1em}
    \algsetup{linenodelimiter=.}
    \renewcommand{\algorithmiccomment}[1]{// #1 }
    \textbf{Eingaben:~} Relation $R$, Zwei dimensionale Pareto-Präferenz $P:=P_1\:\otimes P_2$\\
    \textbf{Ausgabe:~} BMO set
    \begin{algorithmic}[1]
    \Function{void TestFunc}{Typ param1, Typ2 param2}
    \State Ergebnis $\leftarrow \emptyset$\\
    \Comment{Die Level-Werte des letzten Tupels im BMO-Set speichern}
    \State int bla1 = MAX\_INTEGER, bla2 = MAX\_INTEGER;
    ~\\
    \Comment{Sortieren nach blub}
    ~\\
    \State SORT(blub);
    \ForAll{$t \in R$} 
    	\If{xy $\leq$ bla1} \label{alg:blub:vgl1a}
    			\State
    			\Comment{$t$ zu Ergebnis hinzufügen}
    			\State Ergebnis = Ergebnis $\cup t$ \label{alg:blub:bmo1}
    			\State bla1 = xy; 		
    	\EndIf
    \EndFor
    \EndFunction
    \end{algorithmic}
    \makeatletter
        \@fs@post
      \makeatother
    \end{flushleft} 
    
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum.
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum.
    
    
    Referenz auf Zeile \ref{alg:blub:vgl1a} und noch eine Referenz auf Zeile \ref{alg:blub:bmo1}.
     
    \end{document}

  2. #2
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Zitat Zitat von secret3des Beitrag anzeigen
    \usepackage{algorithmic}
    \usepackage{algorithm}
    \usepackage{algpseudocode}
    Das Paket algpseudocode lädt automatisch das algorithmicx-Paket, welches aber inkompatibel zum algorithmic-Paket ist.

    \makeatletter
    \newcounter{algorithmic}
    \let\ORIG@algorithmic\algorithmic
    \def\algorithmic{\stepcounter{algorithmic}\ORIG@al gorithmic}
    \def\theHALC@line{\thealgorithmic-\theALC@line}
    \def\theHALC@rem{\thealgorithmic-\theALC@rem}
    \makeatother
    Dieser Patch war auf das algorithmic-Paket ausgelegt und dürfte daher mit algorithmicx so nicht funktionieren.

    Mein Versuch:
    Code:
    \documentclass[titlepage, 12pt, final,oneside]{scrbook}
    \KOMAoptions{paper=a4}
    
    \usepackage[automark,headsepline]{scrpage2} 	% für die Formatierung (der Fuß- und Kopfzeile)
    \usepackage[latin1]{inputenc}									% für die Unterstützung von Umlauten
    \usepackage[ngerman]{babel}										% deutsche Silbentrennung
    
    \usepackage{float}
    \usepackage{caption}
    \usepackage{algpseudocode}
    
    \usepackage[pdftex,
                colorlinks=true, linkcolor=blue, urlcolor=blue, citecolor=blue,
                raiselinks=true,
                bookmarks=false,
                bookmarksopenlevel=1,
                bookmarksopen=true,
                bookmarksnumbered=true,
                hyperindex=true,
                plainpages=false,% correct hyperlinks
                pdfpagelabels=true%,% view TeX pagenumber in PDF reader
                %pdfborder={0 0 0.5}
                ]{hyperref} % erzeuge Hyperlinks z.B. für pdflatex
    
    \usepackage{algorithm} % nach hyperref laden, siehe hyperref-readme
    
    \begin{document}
    
    \begin{flushleft}
      \captionsetup{style=ruled,type=algorithm,skip=0pt}
      \makeatletter
        \fst@algorithm\@fs@pre
      \makeatother
      \caption{blub}
      \label{alg:blub}
      \makeatletter
        \@fs@mid
      \makeatother
    \algsetup{indent=1em}
    \algsetup{linenodelimiter=.}
    \renewcommand{\algorithmiccomment}[1]{// #1 }
    \textbf{Eingaben:~} Relation $R$, Zwei dimensionale Pareto-Präferenz $P:=P_1\:\otimes P_2$\\
    \textbf{Ausgabe:~} BMO set
    \begin{algorithmic}[1]
    \Function{void TestFunc}{Typ param1, Typ2 param2}
    \State Ergebnis $\leftarrow \emptyset$\\
    \Comment{Die Level-Werte des letzten Tupels im BMO-Set speichern}
    \State int bla1 = MAX\_INTEGER, bla2 = MAX\_INTEGER;
    ~\\
    \Comment{Sortieren nach blub}
    ~\\
    \State SORT(blub);
    \ForAll{$t \in R$} 
    	\If{xy $\leq$ bla1} \label{alg:blub:vgl1a}
    			\State
    			\Comment{$t$ zu Ergebnis hinzufügen}
    			\State Ergebnis = Ergebnis $\cup t$ \label{alg:blub:bmo1}
    			\State bla1 = xy; 		
    	\EndIf
    \EndFor
    \EndFunction
    \end{algorithmic}
    \makeatletter
        \@fs@post
      \makeatother
    \end{flushleft} 
    
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum.
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum.
    
    
    Referenz auf Zeile \ref{alg:blub:vgl1a} und noch eine Referenz auf Zeile \ref{alg:blub:bmo1}.
     
    \end{document}
    Dies gibt jetzt "nur" noch 2 Fehlermeldungen statt 6, weil er \algsetup nicht kennt. Dafür müsste man sich in der algorithmicx-Dokumentation was passendes raussuchen und stattdessen nehmen.

    Gruß,
    Axel

  3. #3
    Registrierter Benutzer
    Registriert seit
    31.01.2008
    Beiträge
    25
    Hi!

    Danke für die schnelle Antwort und deinen Vorschlag. Kannst du mir bitte noch einen Tipp geben wie man das mit dem indent lösen könnte? Ich hab da bis jetzt keine Lösung gefunden.

    Gäbe es eine (einfache) Möglichkeit das "function" (bzw. procedure) in algorithmc zu integrieren?

    Viele Grüße,
    Tom

  4. #4
    Registrierter Benutzer
    Registriert seit
    31.01.2008
    Beiträge
    25
    Nuja.. ich hab es jetzt erstmal "quick & dirty" gemacht mit:
    Code:
    \renewcommand\algorithmicwhile{\textbf{function}}
    \renewcommand\algorithmicendwhile{\textbf{end function}}
    Das "do" nach der function ist zwar nicht ganz schön, aber es erfüllt den Zweck und sieht auch ordentlich aus. Und Fehler gibt es auch keine.

    Viele Grüße,
    Tom

Lesezeichen

Berechtigungen

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