Breite des Algorithmus-Floats anpassen

Breite des Algorithmus-Floats anpassen

Ich schreibe einen Code mit dem algorithmPaket. Ich möchte jedoch kleinere Kanten einfügen. Ich habe die minipageBoxen verwendet und es hat nicht funktioniert. Kann mir jemand einen Vorschlag machen?

ich habe das

\documentclass[a4paper]{article}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsmath} 
\usepackage{algorithm}
%========================
\begin{document}  
 \section*{Example Algorithm} 
 %---------------------- 
   \begin{algorithm}
   \caption{Penalty function}   
     \begin{itemize}
        \item Let $\{c_k\}$, $k=1,2,\ldots$, be a sequence tending to infinity such that for each $k$, $0 \leq c_k < c_{k+1}$.  
        \item Define the function $$q(\mu_{k},x) = f(x) + \mu_{k}P(x).$$
        \item For each k solve the problem        
              \begin{gather*}  minimize \ q(\mu_{k},x), \end{gather*}
             obtaining a solution point $x_{k}$.
     \end{itemize}
   \end{algorithm} 
 %----------------------
\end{document}

welche Ergebnisse

Bildbeschreibung hier eingeben

aber ich möchte

Bildbeschreibung hier eingeben

Antwort1

Der algorithmFloat wird definiert durchfloat's \newfloat. Dadurch wird der gesamte Float für eventuelle Umstrukturierungen verbraucht (inkl. der Platzierung der \caption, die vom Stil abhängt). Dies beeinträchtigt auch die Möglichkeit, die Breite des Floats anzupassen.

Eine Möglichkeit, dies zu umgehen, besteht darin, den Float in a zu platzieren minipageund ihn nicht schweben zu lassen. Dies wird durch die Float-Spezifikation floatdes Pakets unterstützt:[H]

Bildbeschreibung hier eingeben

\documentclass{article}

\usepackage{amsmath,algorithm}

\begin{document}  

\section*{Example Algorithm} 

\begin{algorithm}[H]
  \caption{Penalty function}
  \begin{itemize}
    \item Let $\{c_k\}$, $k = 1,2,\dots$, be a sequence tending to infinity such that for each~$k$, $0 \leq c_k < c_{k+1}$.  
    \item Define the function $$q(\mu_{k},x) = f(x) + \mu_k P(x).$$
    \item For each k solve the problem        
          \[ \text{minimize } q(\mu_k,x),c \]
          obtaining a solution point~$x_k$.
  \end{itemize}
\end{algorithm}

{\centering
\begin{minipage}{.7\linewidth}
  \begin{algorithm}[H]
    \caption{Penalty function}
    \begin{itemize}
      \item Let $\{c_k\}$, $k = 1,2,\dots$, be a sequence tending to infinity such that for each~$k$, $0 \leq c_k < c_{k+1}$.  
      \item Define the function $$q(\mu_{k},x) = f(x) + \mu_k P(x).$$
      \item For each k solve the problem        
            \[ \text{minimize } q(\mu_k,x),c \]
            obtaining a solution point~$x_k$.
    \end{itemize}
  \end{algorithm}
\end{minipage}
\par
}

\end{document}

Natürlich mit einemminipage erforderteine zu verwendende \begin{algorithm}[H](um das schwebende Verhalten zu vermeiden). Wenn Sie dennoch ein schwebendes möchten algorithm, können Sie den folgenden Workaround verwenden:

\begin{figure}[htb]
  \centering
  \begin{minipage}{.7\linewidth}
    \begin{algorithm}[H]
      % <your algorithm>
    \end{algorithm}
  \end{minipage}
\end{figure}

Wir platzieren das Nicht-Float algorithmin einem Floatingfigure ohneVerwenden Sie ein \captionfür figure.

Antwort2

Die folgende Lösung hat bei mir funktioniert:

\documentclass{article}

\usepackage{amsmath,algorithm}

\begin{document}  

\begin{algorithm}
    \centering
        \begin{minipage}{0.8\linewidth}
        \centering
        \caption{%caption
        }
        \label{%label
        }
            \begin{algorithmic}[1]
                % Your algorithm here
            \end{algorithmic}
        \end{minipage}
\end{algorithm}

\end{document}

verwandte Informationen