Вертикальное выравнивание мини-страниц

Вертикальное выравнивание мини-страниц

Я использую три мини-страницы, чтобы сделать таблицу и два изображения, которые будут размещены рядом друг с другом, и хотя изображения находятся на правильном месте, таблица размещается намного ниже, что приводит к уродливому результату. Почему так происходит? Как это исправить?

\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центрируется по вертикали, изображение размещается на базовой линии и, таким образом, выступает над строкой.

Теперь то, на что ссылается спецификатор положения t/ bдля minipages, на самом деле не является верхним/нижним краемminipage , как я понимаю, а кбазовая линия первой/последней строки текстав minipage. В minipageс таблицей базовая линия находится в середине таблицы, как вы можете видеть на изображении выше. Но в minipages с изображениями базовая линия находится внизу изображения. В результате низ изображений выровнен по середине таблицы.

Предложение 1

Как и предложил daleif, я удалил minipagefor tabularв приведенном ниже коде.

Если вы установите выравнивание справа, minipageчтобы cвойти, это будет выглядеть лучше, т.е.

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

По умолчанию установлено выравнивание tabular.c

Чтобы выровнять их по верхнему краю, вы можете установить положение tabularи minipages на t, а также установить внутреннее положение (третий необязательный аргумент) s minipageс изображениями на b. То есть, у вас будет

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

для стола и

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

для minipageс.

Предложение 2

Если вы добавите, \usepackage[export]{adjustbox}вы можете изменить вертикальное выравнивание изображений относительно базовой линии с помощью необязательного аргумента valign=<t/c/b>. Затем вы можете вообще \includegraphicsотказаться от s.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пакета вы можете использовать >{}/ <{}для вставки чего-либо в начало/конец ячейки, делая вышеописанное, каждая ячейка устанавливается в математический режим. Это экономит вам время на вводе.

Для второго столбца обратите внимание, что единицы измерения, как правило, не следует писать курсивом. Вы можете просто удалить все математические режимы, и это будет намного лучше. Здесь я использовал столбец sиз siunitx, который позволяет использовать макросы единиц измерения из siunitxдля набора единиц.

Последний столбец — это Sстолбец, также из siunitx, который выравнивает числа по десятичному маркеру. Не уверен, является ли это улучшением в данном случае, но я подумал, что добавлю его в качестве подсказки.

В первом столбце вы заметите, что я установил слова «Низкий», «Высокий» и «макс» в текстовом режиме. Полагаю, это в основном вопрос соглашения, но я думаю, что описательные слова, в отличие от имен переменных, не должны быть курсивом. Я также удалил все вертикальные линии и добавил более толстую горизонтальную линию (от 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полностью избежать, используя \abovebaselineи \belowbaselineпакета stackengine. Обратите внимание на синтаксис в конце MWE. В этом случае я сохранил каждый элемент в его собственном стекбоксе только для того, чтобы, если требовался центрированный вывод, требовались дополнительные вычисления с использованием высот блоков. В противном случае столбцы могли бы быть выведены напрямую с помощью показанного синтаксиса.

\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]{...}). По умолчанию у него есть базовая линия посередине, окружение minipageне меняет ее, поскольку tabularведет себя как одна линия (вроде как). Изображения выровнены по базе, как и она намного выше ее.

Возможно, вам захочется поэкспериментировать с adjustboxпакетом, в нем есть много полезных функций для выравнивания вещей.

Также небольшая просьба: пожалуйста, разместите что-то, что мы можем скопировать и вставить и использовать без редактирования. У вас нет преамбулы, и у нас, конечно, нет ваших изображений. Для изображений вы можете использовать \rule{length}{length}.

Связанный контент