algorithmisch + Textfarbe == etwas stimmt nicht – möglicherweise fehlt ein Element oder das Layout ist falsch

algorithmisch + Textfarbe == etwas stimmt nicht – möglicherweise fehlt ein Element oder das Layout ist falsch

Ich muss einen Teil eines Algorithmus mit \textcolor einfärben. Ich habe den folgenden Code mit dem algorithmischen Paket:

\usepackage{algorithmic}
\usepackage{xcolor}
...
\begin{algorithmic}    
    \FOR{$s = 1, \dots, S$}
    \textcolor{red} {
    \IF {$t<T'$} 
        \STATE do foo
    \ELSE 
        \STATE do bar
    \ENDIF
    }
    \ENDFOR
\end{algorithmic}

Dies führt jedoch zu einem Fehler: Something's wrong--perhaps a missing \item.und die Einrückung der IF-Anweisung ist beschädigt:

Bildbeschreibung hier eingeben

Den Fehler kann ich durch einen \STATEBefehl vor dem \textcolorBefehl wie folgt beheben:

\begin{algorithmic}    
    \FOR{$s = 1, \dots, S$}
    \STATE \textcolor{red} {
    \IF {$t<T'$} 
        \STATE do foo
    \ELSE 
        \STATE do bar
    \ENDIF
    }
    \ENDFOR
\end{algorithmic}

Dies fügt dem Algorithmus jedoch eine zusätzliche leere Zeile hinzu:

Bildbeschreibung hier eingeben

Was ist die richtige Art und Weise, Teile eines Algorithmus (oder vielleicht eine Teilmenge von Elementen in einer Liste im Allgemeinen) selektiv einzufärben?

Antwort1

Anstelle von \textcolor, das für kurze Textsequenzen besser geeignet ist, könnten Sie verwenden {\color{red} ... }:

\documentclass{article}

\usepackage{algorithmic}
\usepackage{xcolor}
\begin{document}
\begin{algorithmic}    
    \FOR{$s = 1, \dots, S$}
    {\color{red}
    \IF {$t<T'$} 
        \STATE do foo
    \ELSE 
        \STATE do bar
    \ENDIF
    }
    \ENDFOR
\end{algorithmic}
\end{document}

verwandte Informationen