
Я использую три мини-страницы, чтобы сделать таблицу и два изображения, которые будут размещены рядом друг с другом, и хотя изображения находятся на правильном месте, таблица размещается намного ниже, что приводит к уродливому результату. Почему так происходит? Как это исправить?
\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
для minipage
s, на самом деле не является верхним/нижним краемminipage
, как я понимаю, а кбазовая линия первой/последней строки текстав minipage
. В minipage
с таблицей базовая линия находится в середине таблицы, как вы можете видеть на изображении выше. Но в minipage
s с изображениями базовая линия находится внизу изображения. В результате низ изображений выровнен по середине таблицы.
Предложение 1
Как и предложил daleif, я удалил minipage
for tabular
в приведенном ниже коде.
Если вы установите выравнивание справа, minipage
чтобы c
войти, это будет выглядеть лучше, т.е.
\begin{minipage}[c]{5cm}
По умолчанию установлено выравнивание tabular
.c
Чтобы выровнять их по верхнему краю, вы можете установить положение tabular
и minipage
s на 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}
.