Latexのalgorithm2eパッケージについての質問です.
これは大変便利な機能なのですが,ruledオプションでアルゴリズムを描写すると,右側に大きな余白ができてしまいます.
記述したアルゴリズムに適切な幅に調整したりする方法をご存知でしたら教えてください.
また,記述したアルゴリズム全体をセンタリングすることが可能でしたらご教授願います.
コメントがつかないので,あまりよくわかっていない人ですが,適当に書きます.
幅の調整は,フロート環境であることを放棄してよいならば,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
幅の調整は,フロート環境であることを放棄してよいならば,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
> こちらはwindows版のpTeX Ver.3.14です
お使いの環境はかなり古いので,e-TeX 拡張が無い
ものをお使いと思います。
この機会に更新するのも手かと思います。
なお,
algorithm2e は W32TeX には入れていないので,自分
でインストールする必要がありますが,これは
は比較的簡単にインストールできます:
documents を
$TEXMFLOCAL/doc/latex/algorithm2e/
algorithm2e.sty を
$TEXMFLOCAL/tex/latex/algorithm2e/
に入れて,必要なら mktexlsr を実行して終了です。
お使いの環境はかなり古いので,e-TeX 拡張が無い
ものをお使いと思います。
この機会に更新するのも手かと思います。
なお,
algorithm2e は W32TeX には入れていないので,自分
でインストールする必要がありますが,これは
は比較的簡単にインストールできます:
documents を
$TEXMFLOCAL/doc/latex/algorithm2e/
algorithm2e.sty を
$TEXMFLOCAL/tex/latex/algorithm2e/
に入れて,必要なら mktexlsr を実行して終了です。
角藤先生も書かれていますが補足いたしますと,\unexpanded というのが
e-TeX 拡張と呼ばれる,最近の TeX で導入された命令であるために,
古いバージョンの TeX ではこれが未定義であるというエラーが出てしまいます.
先に示した Stack Exchange への回答には etoolbox を使って内部マクロにパッチを当てる
解決策が書かれていますが,etoolbox も e-TeX 拡張を前提としたパッケージなので
同様のエラーが出ると思います.
もし差し支えがないようでしたら,この機会に TeX 環境を最新のものに更新されることを
おすすめいたします.
e-TeX 拡張と呼ばれる,最近の TeX で導入された命令であるために,
古いバージョンの TeX ではこれが未定義であるというエラーが出てしまいます.
先に示した Stack Exchange への回答には etoolbox を使って内部マクロにパッチを当てる
解決策が書かれていますが,etoolbox も e-TeX 拡張を前提としたパッケージなので
同様のエラーが出ると思います.
もし差し支えがないようでしたら,この機会に TeX 環境を最新のものに更新されることを
おすすめいたします.