ミニページの垂直配置

ミニページの垂直配置

3 つのミニページを使用して、テーブルと 2 つの画像を隣り合わせに配置すると、画像は正しい位置にありますが、テーブルがかなり下に配置されてしまい、見苦しい結果になります。なぜこのようなことが起こるのでしょうか。どうすれば修正できますか。

\begin{minipage}[t]{5cm}
\begin{tabular}{|c|c|c|}
\hline
$V_{c}(Low)$ & $mV$ & $0$\\
\hline
$V_{c}(High)$ & $V$ & $5.6$\\
\hline
$T_{d}$ & $ns$ & $30$\\
\hline
$T_{r}$ & $ns$ & $30$\\
\hline 
$T_{sd}$ & $ns$ & $780$\\
\hline 
$T_{f}$ & $ns$ & $240$\\
\hline 
$F_{max}$ & $kHz$ & $570$\\
\hline
\end{tabular}
\end{minipage}
\begin{minipage}[t]{5cm}
\includegraphics[width=\textwidth]{A1.JPG}
\end{minipage}
\begin{minipage}[t]{5cm}
\includegraphics[width=\textwidth]{A2.JPG}
\end{minipage}

答え1

コードが機能しない理由。

これは、この垂直方向の配置が実際にどのように機能するかに関係しています。まず、次のコードとその出力を検討してください。

\documentclass{article}
\usepackage{graphicx}
\begin{document}
Some text then a table \begin{tabular}{c}
1 \\2 \\ 3 \\ 4
\end{tabular}
then some more text and an image \includegraphics[width=2cm]{example-image-10x16}.    
\end{document}

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

ここでのポイントは、表と画像が周囲のテキストのベースラインに対してどのように配置されるかということです。つまり、表はtabular垂直方向に中央に配置され、画像はベースライン上に配置され、行の上に突き出ます。

さて、私が理解している限り、 sのt/b位置指定子がminipage指すのは、実際にはsの上端/下端ではなく、minipageテキストの最初/最後の行のベースラインでは、上の画像からわかるように、表のある ではベースラインは表の中央にあります。しかし、minipage画像のある では、ベースラインは画像の下部にあります。その結果、画像の下部が表の中央に揃います。minipageminipage

提案1

daleif の提案に従って、以下のコードでminipageを削除しました。tabular

右揃えを設定すると、minipage見た目cが良くなります。

\begin{minipage}[c]{5cm}

はデフォルトで配置さtabularれます。c

tabular上揃えにするには、との両方の位置をminipageに設定し、 と画像のt内側の位置(3番目のオプション引数)を に設定します。つまり、minipageb

\begin{tabular}[t]{...}

テーブルと

\begin{minipage}[t][][b]{5cm}

sの場合minipage

提案2

を追加すると、\usepackage[export]{adjustbox}オプションの引数valign=<t/c/b>を使用して、ベースラインを基準とした画像の垂直方向の配置を変更できます\includegraphics。その後、 を完全に削除できますminipage

\documentclass{article}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{siunitx}
\usepackage{booktabs}
\usepackage[export]{adjustbox}
\begin{document}   
\begin{tabular}{>{$}c<{$} s S }
\toprule
V_{c}(\text{Low}) & \milli\volt & 0\\
V_{c}(\text{High}) & \volt & 5.6\\
T_{d} & \nano\s & 30\\
T_{r} & \nano\s & 30\\
T_{sd} & \nano\s & 780\\
T_{f} & \nano\s & 240\\
F_{\text{max}} & \kilo\hertz & 570\\
\bottomrule
\end{tabular}\hspace{1em}
\includegraphics[width=5cm,valign=c]{example-image-a}
\includegraphics[width=5cm,valign=c]{example-image-b}

\end{document}

テーブルに関するいくつかの注意事項。

質問の一部ではありませんが、以下のコードでテーブルを記述する方法の提案を追加しました。結果は画像に示されています。

列の指定が に変更されました{>{$}c<{$} s S }。パッケージをロードするときに、/arrayを使用してセルの先頭/末尾に内容を挿入できます。上記の操作を行うと、各セルが数式モードに設定されます。これにより、入力の手間が省けます。>{}<{}

2 番目の列については、単位は一般的に斜体で書かないように注意してください。単純にすべての数式モードを削除すれば、ずっと良くなります。ここでは、sの列を使用しましたsiunitx。これにより、 の単位マクロを使用してsiunitx単位をタイプセットできます。

最後の列はS、これも からの列でsiunitx、小数点の位置で数字を揃えます。 この場合の改善かどうかはわかりませんが、ヒントとして追加しておこうと思いました。

最初の列では、「Low」、「High」、「max」という単語をテキスト モードで設定していることに気付くでしょう。これは主に慣例の問題だと思いますが、変数名ではなく説明的な単語は斜体にすべきではないと思います。また、すべての縦線を削除し、booktabs上下に太い横線 ( から ) を追加しました。これにより、表がすっきりします。

\documentclass{article}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{siunitx}
\usepackage{booktabs}

\begin{document}

\begin{tabular}{>{$}c<{$} s S }
\toprule
V_{c}(\text{Low}) & \milli\volt & 0\\
V_{c}(\text{High}) & \volt & 5.6\\
T_{d} & \nano\s & 30\\
T_{r} & \nano\s & 30\\
T_{sd} & \nano\s & 780\\
T_{f} & \nano\s & 240\\
F_{\text{max}} & \kilo\hertz & 570\\
\bottomrule
\end{tabular}\hspace{1em}
\begin{minipage}[c]{5cm}
\includegraphics[width=\textwidth]{example-image-a}
\end{minipage}
\begin{minipage}[c]{5cm}
\includegraphics[width=\textwidth]{example-image-b}
\end{minipage}

\vspace{2cm}

\begin{tabular}[t]{>{$}c<{$} s S }
\toprule
V_{c}(\text{Low}) & \milli\volt & 0\\
V_{c}(\text{High}) & \volt & 5.6\\
T_{d} & \nano\s & 30\\
T_{r} & \nano\s & 30\\
T_{sd} & \nano\s & 780\\
T_{f} & \nano\s & 240\\
F_{\text{max}} & \kilo\hertz & 570\\
\bottomrule
\end{tabular}\hspace{1em}
\begin{minipage}[t][][b]{5cm}
\includegraphics[width=\textwidth]{example-image-a}
\end{minipage}
\begin{minipage}[t][][b]{5cm}
\includegraphics[width=\textwidth]{example-image-b}
\end{minipage}

\end{document}

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

答え2

パッケージの と を使用minipagesすると、 を完全に回避できます。MWE の末尾の構文に注意してください。この場合、各項目を独自のスタックボックスのみに保存したので、中央揃えの出力が必要な場合、ボックスの高さを使用した追加の計算が必要になります。それ以外の場合は、示されている構文を使用して列を直接出力できます。\abovebaseline\belowbaselinestackengine

\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{stackengine}
\parskip 1em
\begin{document}
\savestack{\colA}{
\begin{tabular}[b]{|c|c|c|}
\hline
$V_{c}(Low)$ & $mV$ & $0$\\
\hline
$V_{c}(High)$ & $V$ & $5.6$\\
\hline
$T_{d}$ & $ns$ & $30$\\
\hline
$T_{r}$ & $ns$ & $30$\\
\hline 
$T_{sd}$ & $ns$ & $780$\\
\hline 
$T_{f}$ & $ns$ & $240$\\
\hline 
$F_{max}$ & $kHz$ & $570$\\
\hline
\end{tabular}}

\savestack{\colB}{\includegraphics[width=5cm,height=4cm]{A1.JPG}}

\savestack{\colC}{\includegraphics[width=5cm,height=2.5cm]{A2.JPG}}

\colA\ \abovebaseline[.5\ht\colAcontent-.5\ht\colBcontent]{\colB}\ 
  \abovebaseline[.5\ht\colAcontent-.5\ht\colCcontent]{\colC}

\colA\ \colB\ \colC

\belowbaseline{\colA}\ \belowbaseline{\colB}\ \belowbaseline{\colC}
\end{document}

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

答え3

tabularはすでに一種のミニページです ( を使用するとよいでしょう\begin{tabular[t]{...})。デフォルトでは中央にベースラインがあり、 は1 本の線のminipageように動作するので、周囲はこれを変更しませんtabular(ある意味)。画像は のようにベースライン上に揃えられ、それよりも高くなります。

パッケージを試してみるといいでしょう。このパッケージにはadjustbox、ものを整列させるための便利な機能が多数あります。

また、ちょっとしたお願いですが、編集せずにコピー&ペーストして使用できるものを投稿してください。 前文がなく、もちろん画像もありません。 画像については、 を使用できます\rule{length}{length}

関連情報