PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Nummerierung bei Algorithmen



fatsack
15-02-2008, 13:24
Hi,

kann mir jemand erklären, wie man in der algorithm-Umgebung die Nummerierung komplett abstellt? Ich habe mit \floatname{algorithm}{} bereits das Wort "Algorithm" entfernen können, \numberwithin{algorithm}{X} akzeptiert für X aber nur chapter, section, ..., nothing. Und nothing heisst einfach "der Reihenfolge nach von 1 an durchnummerieren" und leider nicht "gar nicht nummerieren". In meinem Fall ist das Wort "Algorithm" absolut überflüssig, wenn ich es aber entferne und die Nummerierung erhalten bleibt, schaut's natürlich katastrophal aus.

Gruß,

sommerfee
15-02-2008, 14:15
Welche "algorithm"-Umgebung verwendest du, von welchem Paket wird die angeboten?

(Ein kleines Minimalbeispiel wäre nett.)

Gruß,
Axel

fatsack
15-02-2008, 15:06
Mein Minimalbeispiel:


\documentclass{article}
\usepackage{algorithm}
\usepackage{algpseudocode}
\floatname{algorithm}{}
\begin{document}

\begin{algorithm}
\caption{\textbf{Step 1.} Get drunk \& go to sleep}
\label{algodrink}
\begin{algorithmic}[1]
\Function{Drinking}{$favDrink$}
\While{$!drunk$}
\State $nextDrink \gets \Call{CallWaitress}{favDrink}$
\EndWhile
\State \Call{GoToSleep}{}
\EndFunction
\end{algorithmic}
\end{algorithm}


\end{document}

Wenn man \floatname{algorithm}{} auskommentiert, steht in der ersten Zeile der erstellten pdf-Datei:
"Algorithm 1 Step1. Get drunk & go to sleep"

Das "Algorithm" werd ich also über \floatname{algorithm}{} los, jetzt bleibt aber noch die "1" links von "Step 1.", also die Nummerierung, stehen:
"1 Step1. Get drunk & go to sleep"

Die hätte ich auch gerne noch entfernt. Die Nummerierung macht in meinen Augen nur bedingt Sinn (zumindest in meinem Fall) vor allem, wenn ich "Algorithm" entferne. Die offizielle Doku unter
http://developer.berlios.de/docman/display_doc.php?docid=800&group_id=3442
beschreibt, dass man mit \numberwithin{algorithm}{X} die Nummerierung ändern kann, aber man kann sie auf diese Weise eben nicht abstellen.

Vielleicht noch eine kleine Frage: Ich würde mich dann im Text gerne auf die Zeile beziehen, in der CallWaitress(favDrink) aufgerufen wird, was soweit ich weiss auch kein Problem ist, da sogar einzelne Zeilen gelabelt werden können. Meine Frage ist eine andere: Dieses algpseudocode Paket formatiert den Aufruf CallWaitress(favDrink) so, dass das alle Buchstaben als Großbuchstaben erscheinen und zusätzlich das C und das W ein wenig größer als die anderen sind, was mir sehr gut gefällt. Wenn ich mich dann im Text auf die Zeile beziehe und schreibe "der Aufruf von CallWaitress(favDrink) liefert das Lieblingsgetränk", dann würde ich gerne das CallWaitress(favDrink) in meinem Text genauso formatiert haben, wie in dem Algorithmus (zwecks Wiedererkennungswert). Wo müsste ich denn genau nachschaun, wie dieses algpseudocode Paket den Text bei \Call{funktion}{Parameter} formatiert?

Gruß,

Stefan_K
15-02-2008, 15:13
Hallo,

eine Möglichkeit wäre:

\renewcommand*\thealgorithm{}

Viele Grüße,

Stefan

fatsack
15-02-2008, 15:19
Hallo,

eine Möglichkeit wäre:

\renewcommand*\thealgorithm{}

Viele Grüße,

Stefan

Danke, damit werd' ich die Nummerierung los.

Die Lösung zu meiner zweiten Frage hab' ich auch grad gefunden. Der Befehl \Call{funktion}{parameter} ist bei mir in der Datei C:\Programme\MiKTeX 2.7\tex\latex\algorithmicx in Zeile 81 definiert:

\algnewcommand\Call[2]{\textproc{#1}\ifthenelse{\equal{#2}{}}{}{(#2)}}%

Keine Ahnung, was das genau heisst, aber \textproc ist in Zeile 47 definiert:

\algnewcommand\textproc{\textsc}

D.h., mit dem Befehl \textsc{funktionsname} erreicht man genau das gewünschte.

Beispiel:


\documentclass{article}
\usepackage{algorithm}
\usepackage{algpseudocode}
\floatname{algorithm}{}
\renewcommand*\thealgorithm{}
\begin{document}

\begin{algorithm}
\caption{\textbf{Step 1.} Get drunk \& go to sleep}
\label{algodrink}
\begin{algorithmic}[1]
\Function{Drinking}{$favDrink$}
\While{$!drunk$}
\State $nextDrink \gets \Call{CallWaitress}{favDrink}$ \label{call}
\EndWhile
\State \Call{GoToSleep}{}
\EndFunction
\end{algorithmic}
\end{algorithm}

Der Aufruf von \textsc{CallWaitress} in Zeile \ref{call} liefert das
Lieblingsgetraenk.

\end{document}