アルゴリズムフロートの幅を調整する

アルゴリズムフロートの幅を調整する

パッケージを使用してコードを書いていますalgorithm。ただし、エッジを小さくしたいです。minipage、ボックスを使用しましたが、機能しませんでした。誰か私に提案をしてくれませんか?

私はこれを持っています

\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}

その結果

ここに画像の説明を入力してください

でも私はしたい

ここに画像の説明を入力してください

答え1

フロートalgorithmは次のように定義されますfloatの です\newfloat。その結果、フロート全体が再構成のために消費されます ( の配置を含む\caption、スタイルによって異なります)。これは、フロートの幅を調整する可能性にも影響します。

minipageこの問題を回避する方法の 1 つは、 float を a 内に配置し、 float にならないようにすることです。これは、floatパッケージの[H]float 仕様によってサポートされています。

ここに画像の説明を入力してください

\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}

もちろん、minipage 必要1 つ使用してください\begin{algorithm}[H](フローティング動作を回避するため)。それでもフローティングが必要な場合はalgorithm、次の回避策を使用できます。

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

非フロートをalgorithmフロート内に配置するfigure それなし\captionに を使用しますfigure

答え2

私の場合は次の解決策が効果的でした:

\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}

関連情報