algorithm2eの幅調整について

algorithm2eの幅調整について

- 片瀬 哲 の投稿
返信数: 6
Latexのalgorithm2eパッケージについての質問です.
これは大変便利な機能なのですが,ruledオプションでアルゴリズムを描写すると,右側に大きな余白ができてしまいます.

記述したアルゴリズムに適切な幅に調整したりする方法をご存知でしたら教えてください.

また,記述したアルゴリズム全体をセンタリングすることが可能でしたらご教授願います.
片瀬 哲 への返信

Re: algorithm2eの幅調整について

- 前田 一貴 の投稿
コメントがつかないので,あまりよくわかっていない人ですが,適当に書きます.

幅の調整は,フロート環境であることを放棄してよいならば,H オプションをつけておけば
minipage に入れることで調整できそうです.

\documentclass{article}
\usepackage[ruled]{algorithm2e}
\begin{document}
\begin{center}
  \begin{minipage}{.5\textwidth}
    \begin{algorithm}[H]
      $a \leftarrow b$
      \caption{Substitution}
    \end{algorithm}
  \end{minipage}
\end{center}
\end{document}

フロート環境であることを保ちたい場合や,いちいち minipage に入れるのが面倒な場合は,
内部のマクロに細工をしておくか,\begin{algorithm}[H]...\end{algorithm} を含む
新しいフロート環境を定義するかになると思います.
以下は前者の例です(center 環境を入れて,全体を中央寄せにしています).

\documentclass{article}
\usepackage[ruled]{algorithm2e}
\newdimen\algorithmwidth
\setlength{\algorithmwidth}{.5\textwidth} % 幅の指定
\makeatletter
\edef\@algocf@start{\unexpanded{%
    \begin{center}
      \begin{minipage}{\algorithmwidth}
  }\expandafter\unexpanded\expandafter{\@algocf@start}}
\expandafter\def\expandafter\@algocf@finish\expandafter{\@algocf@finish
      \end{minipage}
    \end{center}
}
\makeatother
\begin{document}
Algorithm~\ref{alg:subst} is a simple substitution.
\begin{algorithm}[t]
  $a \leftarrow b$
  \caption{Substitution}
  \label{alg:subst}
\end{algorithm}
\end{document}

Stack Exchange にも同じような質問があります.
http://tex.stackexchange.com/questions/23296/setting-caption-rule-width-in-algorithm2e-algs
http://tex.stackexchange.com/questions/7484/set-width-of-algorithm-environment-preferably-document-wide
前田 一貴 への返信

Re: algorithm2eの幅調整について

- 片瀬 哲 の投稿
まことに丁寧な回答を頂き,感謝いたします.

提案いただいた2番目の方法を実行してみたところ,

! Undefined control sequence.
l.6 \edef\@algocf@start{\unexpanded
{%

というメッセージで止まってしまいました.
もし,この原因がご存知でしたら教えていただけますか.

こちらはwindows版のpTeX Ver.3.14です.
片瀬 哲 への返信

Re: algorithm2eの幅調整について

- Akira Kakuto の投稿
> こちらはwindows版のpTeX Ver.3.14です

お使いの環境はかなり古いので,e-TeX 拡張が無い
ものをお使いと思います。
この機会に更新するのも手かと思います。

なお,
algorithm2e は W32TeX には入れていないので,自分
でインストールする必要がありますが,これは
は比較的簡単にインストールできます:

documents を
$TEXMFLOCAL/doc/latex/algorithm2e/
algorithm2e.sty を
$TEXMFLOCAL/tex/latex/algorithm2e/

に入れて,必要なら mktexlsr を実行して終了です。
片瀬 哲 への返信

Re: algorithm2eの幅調整について

- 前田 一貴 の投稿
角藤先生も書かれていますが補足いたしますと,\unexpanded というのが
e-TeX 拡張と呼ばれる,最近の TeX で導入された命令であるために,
古いバージョンの TeX ではこれが未定義であるというエラーが出てしまいます.
先に示した Stack Exchange への回答には etoolbox を使って内部マクロにパッチを当てる
解決策が書かれていますが,etoolbox も e-TeX 拡張を前提としたパッケージなので
同様のエラーが出ると思います.

もし差し支えがないようでしたら,この機会に TeX 環境を最新のものに更新されることを
おすすめいたします.
前田 一貴 への返信

Re: algorithm2eの幅調整について

- 片瀬 哲 の投稿
お二人ともアドバイスありがとうございます.
この機に, TeX 環境を最新のものに更新したいと思います.
親切なご指導,ありがとうございました.