Passen Sie die Einrückung innerhalb des Algorithmicx-Pakets an, wenn eine Zeile umgebrochen wird

Passen Sie die Einrückung innerhalb des Algorithmicx-Pakets an, wenn eine Zeile umgebrochen wird

Ich habe diesen Code

\documentclass{article}
\usepackage{algorithm}
\usepackage{algpseudocode}
\begin{document}
\begin{algorithm}
   \caption{Minimal Working Example for my Problem}
\begin{algorithmic}[1]
   \While{Indentation is a mess}
      \State Examine a very long line that looks horrible because the indentation is all messed up.
   \EndWhile
\end{algorithmic}
\end{algorithm}
\end{document}​

Ich möchte, dass der fehlerhafte Text in die gleiche Spalte eingerückt wird, in der die Anweisung begann.

Antwort1

Umschließen Sie Ihre lange Zeile mit einem top-aligned \parbox:

Bildbeschreibung hier eingeben

\documentclass{article}
\usepackage{algorithm}% http://ctan.org/pkg/algorithms
\usepackage{algpseudocode}% http://ctan.org/pkg/algorithmicx
\begin{document}
\begin{algorithm}
  \caption{Minimal Working Example for my Problem}
  \begin{algorithmic}[1]
    \While{Indentation is a mess}
      \State \parbox[t]{\dimexpr\linewidth-\algorithmicindent}{Examine a very long line that looks horrible 
        because the indentation is all messed up.\strut}
    \EndWhile
  \end{algorithmic}
\end{algorithm}
\end{document}​

Die aktuelle Einrückung ( \algorithmicindent) wird entfernt, \linewidthum genau in die horizontale Zeilenbreite zu passen. Das Hinzufügen eines \strutam Ende ermöglicht eine korrekte vertikale Ausrichtung zwischen Zeilen (oder \States) in Zeilen ohne Unterlängen.

verwandte Informationen