もう迷わない!LaTeX \parbox を使いこなすための実践コード例
基本的な書式は以下の通りです。
\parbox[垂直位置][高さ][内容の垂直位置]{幅}{内容}
それぞれの引数について詳しく説明します。
-
{内容}
(mandatory):- ボックス内に配置するテキストや他の LaTeX コマンドを記述します。通常のテキストのように、改行や段落分けが可能です。
-
{幅}
(mandatory):- ボックスの幅を指定します。例えば
5cm
や0.5\linewidth
など。この幅を超えると、内容が自動的に改行されます。
- ボックスの幅を指定します。例えば
-
[内容の垂直位置]
(optional):- ボックスの高さが明示的に指定された場合、そのボックス内で内容をどのように垂直方向に配置するかを指定します。
t
(top): 内容をボックスの上部に配置します。c
(center): 内容をボックスの中央に配置します。b
(bottom): 内容をボックスの下部に配置します。s
(stretch): 内容をボックスの高さに合わせて垂直方向に伸縮させます(あまり使われません)。- 省略した場合、デフォルトは
t
です。
-
[高さ]
(optional):- ボックスの高さを明示的に指定します。例えば
3cm
や5ex
など。 - 指定しない場合、内容の高さによって自動的に決定されます。
- ボックスの高さを明示的に指定します。例えば
-
[垂直位置]
(optional):t
(top): ボックスの上端を現在の行のベースラインに合わせます。c
(center): ボックスの中央を現在の行のベースラインに合わせます。b
(bottom): ボックスの下端を現在の行のベースラインに合わせます。- 省略した場合、デフォルトは
c
です。
\parbox の主な用途と利点
-
- 特定の幅に収まるようにテキストを配置したい場合に非常に便利です。例えば、2段組のレイアウトで、各段落の幅を揃えたい場合など。
\documentclass{article} \begin{document} \parbox{5cm}{ これは\parboxの例です。このテキストは幅5cmのボックス内に収まるように自動的に改行されます。 複数の段落も可能です。 } \end{document}
-
図のキャプションの整形
- 図のキャプションが長くなり、図の幅に収めたい場合に役立ちます。
\documentclass{article} \usepackage{graphicx} \begin{document} \begin{figure}[h] \centering \includegraphics[width=5cm]{example-image-a} % 実際の画像ファイルに置き換えてください \caption{\parbox[t]{0.8\linewidth}{これは非常に長い図のキャプションの例です。図の幅に収まるように\parboxを使って整形しています。}} \end{figure} \end{document}
この例では、キャプションの幅を図の幅の80%に設定し、キャプションの上端が図のベースラインに揃うようにしています。
-
表のセル内での複雑なレイアウト
tabular
環境などで、1つのセル内に複数行のテキストや、インデントされたテキストを配置したい場合に利用できます。p{幅}
列指定と似ていますが、\parbox
はより細かい制御が可能です。
\documentclass{article} \begin{document} \begin{tabular}{|l|l|} \hline 項目 & 説明 \\ \hline 名前 & \parbox[t]{4cm}{これは名前の列のセルです。複数行にわたる説明をここに入力できます。} \\ \hline 住所 & \parbox[t]{4cm}{〒123-4567\\ 東京都XXXX区YYYY町1-2-3} \\ \hline \end{tabular} \end{document}
-
ボックスの垂直方向の位置調整
[垂直位置]
オプションを使用することで、ボックスが置かれる現在の行のベースラインに対して、ボックス自体を上揃え、中央揃え、下揃えにすることができます。これは、異なる高さのボックスを並べる際に特に重要です。
\documentclass{article} \begin{document} これはテキストです。 \parbox[t]{2cm}{短い\\テキスト} \parbox[c]{2cm}{これは\\中くらいの\\テキストです。} \parbox[b]{2cm}{とても\\長い\\テキストの\\例です。} \end{document}
この例では、最初の\parboxが上揃え、2番目が中央揃え、3番目が下揃えになっているのがわかります。
\parbox と minipage 環境との違い
\parbox
と minipage
環境はどちらも固定幅のボックスを作成しますが、いくつか違いがあります。
- 使い分け
簡単なテキストブロックや、行内の一部として使用する場合は\parbox
が便利です。より複雑なレイアウトや、内部でセクションやリストなどを扱いたい場合はminipage
の方が適しています。 - 改段落
\parbox
の内容は新しい段落として扱われません。一方、minipage
はそれ自体が独立した「ページ」のようなもので、その中で新しい段落が開始されます。つまり、\parbox
内で\indent
を使ってもインデントされませんが、minipage
では機能します。 - コマンド vs 環境
\parbox
はコマンドですが、minipage
は環境です。
! LaTeX Error: A parbox must not be in outer par mode.
原因
このエラーは、\parbox
が通常は許可されていない環境(例えば、figure
や table
環境、あるいは他のボックスコマンド \mbox
, \fbox
など)の引数内で使用された場合に発生することがあります。特に、\parbox
の中に「フロート」として扱われる要素(\marginpar
や figure
、table
環境そのもの)を入れようとするとこのエラーが出やすいです。LaTeX はこれらの要素がボックスの中から「浮き出す」ことを許可していません。
解決策
\marginpar
の場合は、別の方法でサイドマージンにテキストを配置することを検討してください。- もし図や表を
\parbox
内に含めたい場合は、フローティング環境ではなく、\includegraphics
や\begin{tabular}
などの具体的な内容を直接記述し、キャプションが必要であれば\captionof
コマンド(capt-of
パッケージが必要)を使用します。 \parbox
の引数の中に、フローティング環境(\begin{figure}
...`\end{figure}や
\begin{table}...\
\end{table}`) を直接記述しないでください。
例(誤り)
\begin{figure}
\centering
\parbox{5cm}{
\includegraphics{image.png}
\caption{キャプション} % これがエラーの原因になることがある
}
\end{figure}
例(正しい方法)
\begin{figure}[h] % [h] はあくまで配置の希望
\centering
\parbox{5cm}{
\includegraphics[width=\linewidth]{image.png} % \parbox の幅に合わせる
}
\caption{これは図のキャプションです。} % figure環境の直接のキャプションとして記述
\end{figure}
あるいは、\captionof
を使う場合:
\documentclass{article}
\usepackage{graphicx}
\usepackage{caption} % または capt-of パッケージ
\begin{document}
\parbox{5cm}{
\centering
\includegraphics[width=\linewidth]{example-image-a}
\captionof{figure}{これは\parbox内に配置された図のキャプションです。}
}
\end{document}
Overfull \hbox または Underfull \hbox 警告
原因
\parbox
内のテキストが指定された幅に収まらない場合(Overfull \hbox
)、または逆にスペースが広すぎて不自然な行間や単語間隔が生じる場合(Underfull \hbox
)に発生します。これは警告でありエラーではありませんが、見た目の品質に影響を与えます。
解決策
-
Underfull \hbox の場合
- 通常は、テキストを増やしたり、
\parbox
の幅を少し狭めたりすることで解消されます。 \fussy
コマンド(デフォルト)は、より厳密な行揃えを試みますが、これによりOverfull \hbox
が発生しやすくなることがあります。
- 通常は、テキストを増やしたり、
-
\parbox
の幅を広げる。- テキストの内容を短くする、または単語の区切りを調整する。
\raggedright
(左寄せ)、\raggedleft
(右寄せ)、\centering
(中央寄せ) などのコマンドを\parbox
の内容の先頭に置いて、行揃えのルールを変更する。これにより、LaTeX が行を均等に配置しようとするのをやめ、柔軟に配置するようになります。
\parbox{3cm}{ \raggedright % または \RaggedRight (ragged2eパッケージ) これはとても長いテキストで、指定した幅に収まりきれません。 }
\sloppy
コマンドを使用すると、より柔軟なハイフネーションや単語間隔を許可し、Overfull \hbox
を減らすことができますが、見た目が悪くなる可能性もあります。使用は局所的に。
垂直方向の配置のずれ ([t], [c], [b] オプションの誤解)
原因
\parbox
のオプションである [t]
, [c]
, [b]
は、\parbox
自体が周囲のテキスト行のベースラインに対してどのように配置されるかを決定します。しかし、\parbox
の内容自体がボックス内でどのように配置されるかとは異なります。特に、高さが自動的に決まる場合は、見た目が期待通りにならないことがあります。
解決策
-
もし、
\parbox
の内容をボックス内で垂直方向に調整したい場合は、\parbox[垂直位置][高さ][内容の垂直位置]{幅}{内容}
のように、高さを明示的に指定し、3番目のオプションを使います。\parbox[c][3cm][t]{2cm}{これは\\上揃えの\\テキスト} % 高さを3cmにし、内容を上揃え \parbox[c][3cm][c]{2cm}{これは\\中央揃えの\\テキスト} % 高さを3cmにし、内容を中央揃え \parbox[c][3cm][b]{2cm}{これは\\下揃えの\\テキスト} % 高さを3cmにし、内容を下揃え
-
[t]
,[c]
,[b]
は、\parbox
の外側の行との垂直位置関係を調整するものです。A \parbox[t]{2cm}{短い\\テキスト} B \parbox[c]{2cm}{中くらいの\\テキスト} C \parbox[b]{2cm}{長い\\テキストの例} D
この例では、
A
、B
、C
、D
の文字とそれぞれの\parbox
の上端、中央、下端がベースラインに揃います。
\parbox 内での段落インデントと行間
原因
\parbox
は、デフォルトで自身の内部の段落の先頭をインデントしません。また、行間も通常のドキュメントとは異なる設定になることがあります。特に \parskip
パッケージを使用している場合、\parbox
内で \parskip
がリセットされることがあります。
解決策
-
行間
\parbox
内で特定の行間を適用したい場合は、\linespread
コマンドや\baselineskip
を設定します。parskip
パッケージを使っている場合に\parbox
内で\parskip
が効かない問題は、etoolbox
パッケージの\patchcmd
を使って\parbox
の内部定義を修正する方法がありますが、これは上級者向けです。簡単な場合は、\parbox
内で手動で\vspace
を調整するか、\parbox
ではなくminipage
環境を使うことを検討します。minipage
環境は独立した「ページ」のように扱われるため、内部の段落設定がより通常のドキュメントに近くなります。
-
段落インデント
\parbox
内で段落のインデントをしたい場合は、\parindent
を設定し、\indent
コマンドを使用するか、\usepackage{indentfirst}
などのパッケージを使うことを検討します。ただし、\parbox
の特性上、内部で段落を多数作ることは稀です。- 通常は、
\parbox
の内容が単一の「段落のようなもの」として扱われるため、インデントは不要な場合が多いです。
\parbox 内でのコマンドの制限
原因
\parbox
の内容はコマンドの引数として扱われるため、一部のコマンド(特に \verb
や \begin{verbatim}
などの「逐語的」なコマンド)は直接使用できません。これらのコマンドは、LaTeX が内容を特殊な方法で処理する必要があるため、引数として渡すことができません。
解決策
- あるいは、
\parbox
の代わりにminipage
環境を使用します。minipage
環境は逐語的な内容をそのまま受け入れることができます。 \parbox
内で逐語的な内容を表示したい場合は、fancyvrb
パッケージの\VerbatimCommand
や\Verb
など、コマンドの引数として使える逐語的コマンドを使用します。
例(誤り)
\parbox{5cm}{\verb|int main()|} % エラー
例(正しい方法 - minipageを使用)
\begin{minipage}{5cm}
\begin{verbatim}
int main() {
// code
}
\end{verbatim}
\end{minipage}
空白文字の問題
原因
\parbox
の直後や、他のコマンドとの間に不要な空白文字が入ることで、レイアウトがずれることがあります。LaTeX は改行を空白文字として解釈するため、特に注意が必要です。
解決策
-
\parbox
の直後に空白文字を入れたくない場合は、%
を使用して改行をコメントアウトします。\parbox{3cm}{内容}% 他のテキスト
これは、
\parbox
の後に行が続く場合に特に重要です。
-
最小の再現可能な例 (MWE: Minimal Working Example) の作成
エラーが発生した場合、問題の箇所だけを抜き出し、できるだけ簡潔な LaTeX ファイルを作成します。不要なパッケージやテキストを削除することで、問題の原因を特定しやすくなります。 -
エラーメッセージを読む
LaTeX のエラーメッセージは最初は難解に感じられますが、どの行でエラーが発生したか、どのような問題が疑われるか(例:Missing } inserted
、Undefined control sequence
など)が書かれています。これらのヒントは問題解決に非常に役立ちます。 -
警告メッセージにも注目する
Overfull \hbox
やUnderfull \hbox
はエラーではありませんが、最終的な出力の品質に影響します。警告メッセージにも目を通し、必要に応じて修正を検討しましょう。 -
関連するコマンドや環境を確認する
\parbox
の問題が、tabular
環境、figure
環境、minipage
環境など、他の関連する要素との組み合わせで発生している場合があります。それぞれのコマンドや環境の特性を理解することが重要です。
例1:基本的な \parbox
の使用
最も基本的な \parbox
の使い方です。指定した幅にテキストが収まるように自動的に改行されます。
\documentclass{article}
\usepackage{amsmath} % 数式環境を使わない場合でも、一部のパッケージは\parboxの内部動作に影響することがあります。
\begin{document}
\section*{基本的な \texttt{\textbackslash parbox}}
現在の行に合わせた配置:
\parbox{5cm}{
これは5cm幅の\texttt{\textbackslash parbox}です。
このテキストは指定された幅に収まるように自動的に改行されます。
複数の段落も内部で作成できますが、デフォルトではインデントされません。
新しい段落。
}
テキストが続きます。
\vspace{1cm} % スペースを追加
異なる垂直位置での配置:
\parbox[t]{3cm}{
\textbf{上揃え (t)} \\
短いテキスト
}
\parbox[c]{3cm}{
\textbf{中央揃え (c)} \\
もう少し長いテキストで、\\
複数行になります。
}
\parbox[b]{3cm}{
\textbf{下揃え (b)} \\
かなり長いテキストです。\\
この例では、ベースラインに\\
下端が揃います。
}
\end{document}
出力のポイント
[t]
,[c]
,[b]
オプションは、\parbox
自体の「箱」が、それを含む行のベースラインに対してどのように配置されるかを制御します。それぞれの\parbox
のテキストの最初の行(または最後)のベースラインが、外側の行のベースラインに揃っていることがわかります。- 最初の
\parbox
は、幅5cmでテキストを自動的に改行します。その直後に続く「テキストが続きます。」は、\parbox
の右隣に配置されます。
例2:\parbox
を使った図のキャプションの整形
図のキャプションが長い場合、\parbox
を使用して図の幅に合わせて整形することができます。
\documentclass{article}
\usepackage{graphicx} % \includegraphics コマンド用
\usepackage{caption} % \captionof コマンド用 (任意だが、parbox内でのキャプションに便利)
\begin{document}
\section*{図のキャプションの整形}
\begin{figure}[h!] % [h!] は「できるだけここに配置」という指示
\centering
% 例としてLaTeXの標準画像を使用
\includegraphics[width=0.6\linewidth]{example-image-a}
% \parbox を使ってキャプションを整形
% 0.8\linewidth は図の幅 (0.6\linewidth) に相対的な幅。調整が必要。
% [t] はキャプションの先頭行が\captionofの基準に合うように。
\captionof{figure}{%
\parbox[t]{0.7\linewidth}{
これは、非常に長い図のキャプションの例です。
図の幅に収まるように、\texttt{\textbackslash parbox} を使用して整形しています。
これによって、キャプションが図の領域からはみ出すことなく、適切に配置されます。
必要に応じて、キャプションの幅を調整してください。
}%
}
\label{fig:long-caption}
\end{figure}
この文書には、図~\ref{fig:long-caption} のように、
長いキャプションを持つ図を適切に配置する例が含まれています。
\end{document}
出力のポイント
\includegraphics
のwidth
と\parbox
の幅はそれぞれ調整する必要があります。ここでは0.6\linewidth
と0.7\linewidth
にしていますが、図の見た目や文字の量に合わせて最適な比率を見つけてください。\captionof{figure}{...}
の中で\parbox
を使用しています。これにより、キャプションのテキストが\parbox
の指定した幅 (0.7\linewidth
) に収まるように改行されます。
例3:\parbox
を使った表のセル内の複雑な内容
tabular
環境のセル内で複数行のテキストや、より複雑なレイアウトをしたい場合に \parbox
が役立ちます。p{幅}
列タイプと似ていますが、\parbox
はより柔軟な配置が可能です。
\documentclass{article}
\begin{document}
\section*{表のセル内での \texttt{\textbackslash parbox}}
\begin{tabular}{|l|p{4cm}|c|} % 2列目はpタイプで幅4cm
\hline
\textbf{項目} & \textbf{詳細} & \textbf{状態} \\
\hline
製品名 &
\parbox[t]{4cm}{ % p{4cm} の内部で、テキストを上揃えに
新しい高性能スマートデバイス\\
\textit{(モデルX-2000)}
} & 発売中 \\
\hline
機能 &
\parbox[t]{4cm}{
\begin{itemize}
\item 高速プロセッサ
\item 高解像度ディスプレイ
\item 長時間バッテリー
\end{itemize}
} & 搭載 \\
\hline
メモ &
\parbox[t]{4cm}{
この製品は、次世代のテクノロジーを駆使して開発されました。
市場のニーズに応える革新的な機能が満載です。
今後のアップデートにもご期待ください。
} & --- \\
\hline
\end{tabular}
\end{document}
出力のポイント
\parbox[t]{4cm}{...}
とすることで、セルの内容が上揃えになります。これにより、行の高さが異なる場合でも、見た目が揃いやすくなります。tabular
環境の2列目 (p{4cm}
) の中で\parbox
を使用しています。p{4cm}
自体も改行をサポートしますが、\parbox
を使うことで、より詳細な制御(例えば、内部でリスト環境を使うなど)が可能になります。
例4:\parbox
の高さ指定と内容の垂直位置
\parbox
は高さを明示的に指定し、その中で内容を上、中央、下に配置することができます。
\documentclass{article}
\begin{document}
\section*{高さ指定と内容の垂直位置}
これは通常のテキストです。
\parbox[c][3cm][t]{2cm}{%
\centering % parbox内の内容を中央揃え
\textbf{上揃え}\\
高さ3cmの\\
ボックスで\\
内容は上部
}%
\parbox[c][3cm][c]{2cm}{%
\centering
\textbf{中央揃え}\\
高さ3cmの\\
ボックスで\\
内容は中央
}%
\parbox[c][3cm][b]{2cm}{%
\centering
\textbf{下揃え}\\
高さ3cmの\\
ボックスで\\
内容は下部
}%
テキストが続きます。
\end{document}
出力のポイント
\parbox[c][...
の最初の[c]
は、\parbox
自体が周囲のテキスト行のベースラインに対して中央に配置されることを意味します。これにより、全てのボックスが同じ高さを持つため、中央に揃って表示されます。- 最初の
\parbox
は[t]
オプションで内容が上揃え、2番目は[c]
で中央揃え、3番目は[b]
で下揃えになっています。 - 3つの
\parbox
はすべて高さ3cm
、幅2cm
です。
\hfill
コマンドと組み合わせることで、行の左右に要素を配置し、中央に空きスペースを挿入できます。
\documentclass{article}
\begin{document}
\section*{`\texttt{\textbackslash parbox}` と `\texttt{\textbackslash hfill}` による配置}
\noindent % 段落のインデントをなくす
\parbox[t]{5cm}{
\textbf{左寄せボックス}\\
このボックスは行の左側に配置されます。
`\texttt{\textbackslash hfill}` と組み合わせて使います。
}
\hfill % 水平方向に可能な限りスペースを埋める
\parbox[t]{5cm}{
\textbf{右寄せボックス}\\
このボックスは行の右側に配置されます。
`\texttt{\textbackslash hfill}` が間に挟まっています。
}
\vspace{1cm}
\noindent % 段落のインデントをなくす
\parbox[t]{3cm}{左端}
\hfill % 中央にスペースを確保
\parbox[t]{3cm}{\centering 中央} % \centering で内容を中央寄せ
\hfill % さらに右にスペースを確保
\parbox[t]{3cm}{\raggedleft 右端} % \raggedleft で内容を右寄せ
\end{document}
- 2番目の例では、2つの
\hfill
を使い、3つの\parbox
を行に分散させています。真ん中の\parbox
の中で\centering
を使っているのは、そのボックス内のテキストを中央揃えにするためです。 - 最初の例では、2つの
\parbox
の間に\hfill
を置くことで、左の\parbox
と右の\parbox
が行の両端に配置されます。
minipage 環境
minipage
環境は、\parbox
と非常によく似ていますが、より独立した「ミニページ」として機能します。これは、内部で独自の段落設定、リスト、図、表などを持つことができるため、より複雑な内容に適しています。
\parbox との主な違い
- 内部での使用制限
minipage
は\verb
やfigure
、table
環境のようなフローティング要素を直接含むことができますが、\parbox
はこれらに制限があります(\captionof
を使うなどの回避策はあります)。 - 段落の挙動
minipage
内では、通常のドキュメントのように新しい段落が形成され、\parindent
や\parskip
の影響を受けます。\parbox
では、デフォルトで段落のインデントが適用されず、新しい段落も単に改行されるように振る舞います。 - 環境 vs. コマンド
minipage
は環境 (\begin{minipage} ... \end{minipage}
)、\parbox
はコマンド (\parbox{...}{...}
)。
基本的な書式
\begin{minipage}[垂直位置][高さ][内容の垂直位置]{幅}
... 内容 ...
\end{minipage}
引数は \parbox
とほぼ同じです。
使用例:minipage
で複雑な内容を配置する
\documentclass{article}
\usepackage{graphicx} % \includegraphics のため
\begin{document}
\section*{`minipage` 環境}
\begin{minipage}[t]{6cm} % 上揃え、幅6cm
\textbf{左側のミニページ}
\begin{itemize}
\item これは箇条書きの項目です。
\item 別の項目。
\item ここは、`\parbox` では難しいリスト環境も使えます。
\end{itemize}
\vspace{0.5cm} % 垂直方向のスペース
\centering % 画像を中央に配置
\includegraphics[width=0.8\linewidth]{example-image-a}
\captionof{figure}{ミニページ内の図のキャプション} % caption パッケージが必要
\end{minipage}
%
\hfill % 左右に広がるスペース
%
\begin{minipage}[t]{6cm} % 上揃え、幅6cm
\textbf{右側のミニページ}
これは、より長いテキストを含むミニページです。
通常通り、段落のインデントも機能します。\par % 段落を明示的に開始
これは新しい段落です。
`\verb|int main() { ... }|` のような逐語的テキストも、
`\begin{verbatim}...\end{verbatim}` 環境を使って含めることができます。
\begin{verbatim}
// C++ のコード例
int main() {
std::cout << "Hello, World!";
return 0;
}
\end{verbatim}
\end{minipage}
\end{document}
\makebox と \fbox
これらは主にインラインでの使用を目的としたコマンドで、テキストの幅を調整したり、枠を付けたりするのに使われます。\parbox
とは異なり、内容が自動的に改行されることはありません。内容が指定した幅を超えると、Overfull \hbox
警告が発生します。
\fbox[幅][位置]{内容}
:\makebox
と同様ですが、内容の周りに枠が付きます。\makebox[幅][位置]{内容}
: 指定された幅のボックスを作成します。[位置]
はl
(左寄せ),c
(中央寄せ),r
(右寄せ),s
(伸縮) を指定できます。
使用例:\makebox
と \fbox
で固定幅の非改行テキスト
\documentclass{article}
\begin{document}
\section*{`\texttt{\textbackslash makebox}` と `\texttt{\textbackslash fbox}`}
\textbf{`\texttt{\textbackslash makebox}` の例:}
\makebox[3cm][l]{左寄せテキスト}
\makebox[3cm][c]{中央テキスト}
\makebox[3cm][r]{右寄せテキスト}
\makebox[3cm][s]{伸縮テキスト} % 内容が短すぎるとUnderfull \hbox
\vspace{0.5cm}
\textbf{`\texttt{\textbackslash fbox}` の例:}
これは通常のテキストです。
\fbox{枠付きテキスト}
\fbox[5cm]{幅5cmの枠付きテキスト} % 5cmの幅にテキストを強制
\fbox[2cm]{長いテキスト} % Overfull \hbox 警告が出る可能性あり
\end{document}
使い分け
\parbox
のように複数行にわたるテキストブロックには向きません。- テキストを改行せずに特定の幅に収めたい場合や、テキストの左右を調整したい場合に適しています。
tabular 環境の p{幅} 列指定
表の中で複数行のテキストをセルに含めたい場合、tabular
環境の列タイプとして p{幅}
を使用するのが最も一般的です。これは、\parbox
が表のセル内で使われるのと同様の機能を提供します。
使用例:tabular
の p{幅}
列で複数行テキスト
\documentclass{article}
\begin{document}
\section*{`tabular` 環境の `p\{幅\}` 列}
\begin{tabular}{|l|p{5cm}|} % 2列目を幅5cmのpタイプとして定義
\hline
\textbf{項目} & \textbf{説明} \\
\hline
製品A & この製品は非常に高品質で、\textbf{革新的な機能}を多数備えています。顧客のニーズに最大限に応えるように設計されました。 \\
\hline
製品B &
従来のモデルと比較して、大幅な\textit{性能向上}が図られています。
特に、バッテリー持続時間と処理速度が優れています。 \\
\hline
\end{tabular}
\end{document}
使い分け
\parbox
をセル内で使うよりも簡潔に記述できます。ただし、セル内で箇条書きや他の複雑な環境を使いたい場合は、\parbox
やminipage
をp{幅}
の内部で使うことも可能です。- 表のセル内で複数行のテキストを扱いたい場合に最適です。
adjustbox
パッケージは、ボックスや画像、テキストのサイズ調整、配置、トリミングなど、より高度な制御を可能にします。このパッケージの \adjustbox
コマンドや adjustbox
環境は、\parbox
や minipage
の機能を拡張したような使い方をすることができます。
主な機能 (一部)
frame
(枠の追加)trim
,clip
(トリミング)valign
(垂直位置合わせ),raise
(垂直シフト)width
,height
,totalheight
(全体の高さ) によるサイズ調整
使用例:adjustbox
でサイズ調整と配置
\documentclass{article}
\usepackage{adjustbox} % adjustbox パッケージ
\begin{document}
\section*{`adjustbox` パッケージ}
\adjustbox{width=4cm, valign=t}{%
\textbf{adjustbox の例}\\
これは、`adjustbox` パッケージを使ったテキストブロックです。
幅を4cmに指定し、垂直方向は上揃えにしています。
\vspace{0.5ex} % 行間調整
\begin{itemize}
\item 高度な制御
\item 簡単なサイズ調整
\end{itemize}
}
\adjustbox{width=4cm, valign=b, frame}{%
\textbf{別の例}\\
これは下揃えで、さらに枠も付けています。
テキストがボックス内でどのように配置されるかを確認してください。
}
\end{document}
- 特に、図やテキストボックスの複雑な配置や調整が必要な場合に検討する価値があります。
\parbox
やminipage
の機能に加え、さらにきめ細やかなサイズ調整、トリミング、枠付けなどを行いたい場合に非常に強力です。
方法 | 特徴 | 主な用途 | 注意点 |
---|---|---|---|
\parbox | 固定幅のテキストブロック。自動改行。段落インデントはなし。 | 短いキャプション、表のセル内での簡単な複数行テキスト | フロートや逐語的環境の直接配置に制限あり。 |
minipage | 固定幅の「ミニページ」。自動改行。段落インデントあり。内部で独自の環境可。 | 複雑な図表、サイドバー、多段組の特定領域 | \parbox よりオーバーヘッドがある。 |
\makebox | 固定幅の非改行テキストブロック。枠なし。 | 行内の特定のテキストの幅調整、配置 | 内容が改行されないため、長いテキストには不向き。Overfull \hbox に注意。 |
\fbox | \makebox と同じだが、枠付き。 | 枠付きのラベル、強調表示 | \makebox と同様。 |
p{幅} (tabular) | 表のセル内で自動改行される複数行テキスト。 | 表のセル内の長い説明文 | 表の列タイプとしてのみ機能。 |
adjustbox | ボックスのサイズ調整、配置、トリミングなど高度な制御。 | 図や複雑なテキストブロックの精密なレイアウト | パッケージのロードが必要。シンプルな用途には過剰。 |