renewcommand\algorithmicendfor funktioniert nicht

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: renewcommand\algorithmicendfor funktioniert nicht

von KK12 » Fr 12. Jan 2018, 10:55

Funktioniert, vielen Dank

von Gast » Fr 12. Jan 2018, 10:53

\ENDWHILE beendet erst interne Gruppen und führt dann \algorithmicendwhile aus. Da Du aber \NoEndWhile noch vor \ENDWHILE ausführt, ist die lokale Umdefinierung von \algrorithmicendwhileauf die aktuelle Gruppe beschränkt und damit nicht mehr gültig, wenn es innerhalb von \ENDWHILE verwendet wird. Du müsstest also \NoEndWhile vor dem jeweiligen \WHILE einfügen und nicht erst vor dem \ENDWHILE. Das gilt für ähnliche Befehle in gleicher Weise.

Außerdem sei darauf hingewiesen, dass damit zwar der Text nicht mehr ausgegeben wird, die Zeile aber bleibt, also eine Leerzeile entsteht.

von KK12 » Fr 12. Jan 2018, 10:40

sorry, anbei ein Minimalbeispiel
\documentclass[]{article}
\usepackage[utf8]{inputenc}
\usepackage{hyperref}
\usepackage[german]{babel} 
\usepackage{german}
\selectlanguage{german}
\usepackage{amsthm}

\usepackage{algorithm}
\usepackage{algorithmic}


\newcommand\NoDo{\renewcommand\algorithmicdo{}}
\newcommand\NoThen{\renewcommand\algorithmicthen{}}
\newcommand\NoEndfor{\renewcommand\algorithmicendfor{}}
\newcommand\NoEndif{\renewcommand\algorithmicendif{}}
\newcommand\NoEndwhile{\renewcommand\algorithmicendwhile{}}

\begin{document}

\begin{algorithm}
\caption{Pseudocode}
\begin{algorithmic}

	\NoDo
	\FOR{xy}
	\STATE //	
	\NoEndfor
	\ENDFOR	
	\STATE 
	\NoThen
	\IF{(x)}
	\STATE //do something
	\ELSE
	\STATE //do something else
	\NoEndif
	\ENDIF\newline
	\NoDo
	\WHILE{(xy)}
	\STATE // 	
	\STATE 
	\WHILE
	\STATE 
	\NoThen
	\IF{(xy)}
	\STATE xy
	\ELSE
	\STATE yz
	\NoEndif
	\ENDIF\newline
	\NoEndwhile
	\ENDWHILE
	\newpage
	\NoEndwhile
	\ENDWHILE
\end{algorithmic}
\end{algorithm}
Algorithm 1 Pseudocode
for xy
//
end for
if (x)
//do something
else
//do something else
end if
while (xy)
//
while
if (xy)
xy
else
yz
end if
end while
end while
Dateianhänge
test.pdf
(32.66 KiB) 504-mal heruntergeladen

von Gast » Fr 12. Jan 2018, 10:21

Anonymous hat geschrieben:Crosspost in LaTeX.org
http://latex.org/forum/viewtopic.php?f=5&p=104218
In beiden Fällen fehlt leider das Minimalbeispiel.

von Gast » Fr 12. Jan 2018, 10:13

Crosspost in LaTeX.org

renewcommand\algorithmicendfor funktioniert nicht

von KK12 » Do 11. Jan 2018, 15:59

Hallo, ich versuche gerade in Latex ein Programm mit While- Schleifen, For-Schleifen und if-else Anweisungen zu schreiben und möchte gerne jeweils
das "do" der While-Schleife, sowie "endfor" der For-Schleife und das "endif" der if-else Anweisung entfernen.

Ich habe folgende Paket installiert:
\usepackage{algorithm}
\usepackage{algorithmic}

und folgende Befehle erstellt:

\newcommand\NoDo{\renewcommand\algorithmicdo{}}
\newcommand\NoThen{\renewcommand\algorithmicthen{}}
\newcommand\NoEndfor{\renewcommand\algorithmicendfor{}}
\newcommand\NoEndif{\renewcommand\algorithmicendif{}}

Die ersten beiden funktionieren, aber die letzten beiden nicht.
Es wird zwar keine Fehlermeldung erzeugt, aber es passiert einfach nichts.
Muß ich die letzten beiden Befehle anders schreiben?

Vielen Dank im voraus

Nach oben