unerwünschte Leerzeilen im Algorithmus

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: unerwünschte Leerzeilen im Algorithmus

von Noch so einer » Mi 25. Sep 2013, 09:53

hyperref muss an verschiedenen Stellen in LaTeX eingreifen, um die entsprechenden Informationen unterzubringen. Das ist leider nicht transparent möglich. Da Du die Links ohnehin alle versteckst, dem Leser also ohnehin nicht bewusst ist, dass er irgendwo klicken kann, kannst Du hyperref einfach weglassen:
\documentclass[11pt, a4paper, twoside, openright,chapterprefix]{scrbook}
\usepackage{selinput}
\SelectInputMappings{
  adieresis={ä},
  germandbls={ß},
}
 \usepackage{algorithmic}
 \usepackage{algorithm}
 
 \begin{document}    

 \begin{algorithm}[H]
\caption{ein Algorithmus}
\begin{algorithmic}[1]
\REQUIRE bla
\ENSURE blubb
 \IF{a}
  \WHILE{b}
    \STATE ein Befehl, der exakt zwei Zeilen lang ist bbbbbbbbbbbbb bbbbbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb aaaaaabc
      \STATE tu was
  \ENDWHILE
\ENDIF
\end{algorithmic}
\end{algorithm}


\end{document}
Wenn Du doch einmal ein Dokument mit Links, die der Anwender auch erkennt, erstellen willst, dann musst Du ggf. unerwünschte Leerzeichen durch Zeilenenden in Algorithmen auskommentieren:
\documentclass[11pt, a4paper, twoside, openright,chapterprefix]{scrbook}
\usepackage{selinput}
\SelectInputMappings{
  adieresis={ä},
  germandbls={ß},
}
\usepackage{algorithmic}
\usepackage{algorithm}
\usepackage[pdfborderstyle={/S/U/W 1}]{hyperref}
 
\begin{document}    

\begin{algorithm}[H]
\caption{ein Algorithmus}
\begin{algorithmic}[1]
\REQUIRE bla
\ENSURE blubb
 \IF{a}
  \WHILE{b}
    \STATE ein Befehl, der exakt zwei Zeilen lang ist bbbbbbbbbbbbb bbbbbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb aaaaaabc%
      \STATE tu was
  \ENDWHILE
\ENDIF
\end{algorithmic}
\end{algorithm}


\end{document}
Übrigens passt der Stil von Algorithmen mit algorithm nicht gut zum Stil der Gleitumgebungen von scrbook. Ich würde mir daher überlegen, ob es nicht besser wäre, eine entsprechende Gleitumgebung oder nicht gleitende Umgebung mit KOMA-Script zu definieren und stattdessen zu verwenden, beispielsweise:
\documentclass[11pt, a4paper, twoside, openright,headings=chapterprefix]{scrbook}
\usepackage{selinput}
\SelectInputMappings{
  adieresis={ä},
  germandbls={ß},
}
\usepackage[ngerman]{babel}
\usepackage{algorithmic}
\usepackage[pdfborderstyle={/S/U/W 1}]{hyperref}
\DeclareNewTOC[
  counterwithin=chapter,
  float,
  listname={Verzeichnis der Algorithmen},
  name={Algorithmus},
  type=algorithm
]{alg}

\usepackage{blindtext}

\begin{document}    

\tableofcontents
\listofalgorithms

\chapter{Test}

\blindtext

\begin{flushleft}
\captionaboveof{algorithm}{ein Algorithmus}\nopagebreak
\begin{algorithmic}[1]
\REQUIRE bla
\ENSURE blubb
 \IF{a}
  \WHILE{b}
    \STATE ein Befehl, der exakt zwei Zeilen lang ist bbbbbbbbbbbbb bbbbbbbbbbb bbbbbbbbbbbbbbbbbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb aaaaaabc%
      \STATE tu was
  \ENDWHILE
\ENDIF
\end{algorithmic}
\end{flushleft}

\end{document}
Wobei sich das Problem in diesem Beispiel bereits durch Verwendung der flushleft-Umgebung gelöst hat. Algorithmen im Blocksatz zu setzen, fand ich nicht der Weisheit letzter Schluss.

BTW: Ich habe auch gleich die veraltete Option entsprechend der zugehörigen Warnung korrigiert. Solltest Du auch machen und künftig auf solche Warnungen achten!

neues Problem

von Sarahmaus » Di 24. Sep 2013, 18:18

Leider löst es das bei mir nur an einigen Stellen. Es scheint wohl auch etwas mit den von mir eingebundenen Paketen zu tun zu haben. Im Moment entstehen noch Leerzeilen, wenn in Verschachtelungen ein Befehl genau zwei Zeilen lang ist.

Hier ein Beispiel:
\documentclass[11pt, a4paper, twoside, openright,chapterprefix]{scrbook} 
\usepackage[utf8]{inputenc} %dto.
\usepackage[
    colorlinks=true,
    linkcolor=black,
    citecolor=black,
    filecolor=black,
    urlcolor=black,
    pdfpagelabels, 
    pdfstartview={FitH},
    pdfstartpage= 1
           ]{hyperref}
 \usepackage{algorithmic} 
 \usepackage{algorithm} 
 
 \begin{document}     

 \begin{algorithm}[H]
\caption{ein Algorithmus}
\begin{algorithmic}[1]
\REQUIRE bla
\ENSURE blubb
 \IF{a}
  \WHILE{b}
    \STATE ein Befehl, der exakt zwei Zeilen lang ist bbbbbbbbbbbbb bbbbbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb aaaaaabc
      \STATE tu was
  \ENDWHILE
\ENDIF
\end{algorithmic}
\end{algorithm}


\end{document}    

von Sarahmaus » Di 24. Sep 2013, 16:56

vielen Dank!!!

von Epllus » Di 24. Sep 2013, 16:46

Das liegt an der einen \STATE Anweisung. Wenn du diese auskommentierst, verschwindet die Leerzeile:
\documentclass[11pt, a4paper, twoside, openright,chapterprefix]{scrbook} 

\usepackage[T1]{fontenc} 
\usepackage{algorithmic} 
 \usepackage{algorithm} 
  
 \begin{document}     

 \begin{algorithm}[H] 
\caption{ein Algorithmus} 
\begin{algorithmic}[1] 
\REQUIRE bla 
\ENSURE blubb 
\IF{a} 
%  \STATE{ 
    \IF{b} 
    \STATE tu was
    \ENDIF 
%  } 
\ENDIF 
\end{algorithmic} 
\end{algorithm} 

\end{document}    
Hoffe es hilft

PS. STATE braucht keine Klammern.

unerwünschte Leerzeilen im Algorithmus

von Sarahmaus » Di 24. Sep 2013, 16:30

Guten Tag!

Ich habe das Problem, dass ich an einigen Stellen in meinen Algorithmen unerwünschte Leerzeilen habe, in der Regel bei Verschachtelungen. In folgendem Beispiel bekomme ich eine Leerzeile zwischen "if a then" und "if b then". Das sieht aus meiner Sicht nicht sehr schön aus.
\documentclass[11pt, a4paper, twoside, openright,chapterprefix]{scrbook} 

\usepackage[T1]{fontenc}
\usepackage{algorithmic} 
 \usepackage{algorithm} 
 
 \begin{document}     

 \begin{algorithm}[H]
\caption{ein Algorithmus}
\begin{algorithmic}[1]
\REQUIRE bla
\ENSURE blubb
\IF{a}
  \STATE{
    \IF{b}
    \STATE{tu was}
    \ENDIF
  }
\ENDIF
\end{algorithmic}
\end{algorithm}


\end{document}    

Nach oben