Я хочу нарисовать недостающие вертикальные линии в tabular
. Я думаю, \multirow{2}{*}{}
это мешает нарисовать вертикальную линию таблицы.
Мой код:
\documentclass{article}
\usepackage[a4paper,margin=1in,landscape]{geometry}
\usepackage{makecell}
\usepackage{multirow}
\usepackage{booktabs}
\begin{document}
\begin{center}
\begin{table*}[!t] %
\centering
\caption{Results ...}
\begin{tabular}{|c|c|c|c|c|c|c|c|c|}
\hline
\textbf{Test} & \multicolumn{2}{c|}{Workflow} & Method
& \multirow{2}{*}{\makecell{Completion \\ Time (min)}}
& \multirow{2}{*}{\makecell{Gas Used for \\
\textit{submitJob} (gas)}}
& \multirow{2}{*}{\makecell{Gas Used for \\
\textit{processPayment} (gas)}}
& \multirow{2}{*}{\makecell{Actual/Complete \\ Cost
(\textit{Cent})}}
& \multirow{2}{*}{\makecell{Failed}} \\
\cmidrule(lr){2-3}
& $|V|$ & $|E|$ \\
\hline
$T_1$ & 16 & 28 & ALGO & 27 & 1722983 & 1942770 & 0.827/0.827 & 0 \\ \hline
\end{tabular}
\end{table*}
\end{center}
\end{document}
выход:
решение1
Вы можете использовать nicematrix
с hvlines
опцией. Команда для ячеек с несколькими строками и несколькими столбцами — \Block
.
Помните, что это \Block
не приводит к пропуску ячеек, поэтому &&
необходимо между ячейками Workflow и Method. Также не забудьте дважды скомпилировать.
Линия \NiceMatrixOptions{cell-space-limits = 2pt}
необязательна и создает дополнительное вертикальное пространство между рядами.
\documentclass{article}
\usepackage[a4paper,margin=1in,landscape]{geometry}
\usepackage{nicematrix}
\begin{document}
\begin{center}
\begin{table*}[!t] %
\centering
\caption{Results ...}
\NiceMatrixOptions{cell-space-limits = 2pt}
\begin{NiceTabular}{ccccccccc}[hvlines]
\Block{2-1}{\textbf{Test}} & \Block{1-2}{Workflow} && \Block{2-1}{Method} & \Block{2-1}{Completion\\Time (min)}
& \Block{2-1}{Gas Used for\\ \textit{submitJob} (gas)}
& \Block{2-1}{Gas Used for\\ \textit{processPayment} (gas)}
& \Block{2-1}{Actual/Complete\\ Cost (\textit{Cent})}
& \Block{2-1}{Failed}\\
& $|V|$ & $|E|$ \\
$T_1$ & 16 & 28 & ALGO & 27 & 1722983 & 1942770 & 0.827/0.827 & 0
\end{NiceTabular}
\end{table*}
\end{center}
\end{document}
решение2
Если вы собираетесь использовать макросы рисования линий пакета booktabs
, не используйте вертикальные линии. Ни в коем случае, ни как.
Обратите внимание, что если вы укажете опцию landscape
при загрузке geometry
пакета, весь документ будет набран в альбомной ориентации. Нет необходимости в \begin{landscape}
и \end{landscape}
.
\documentclass{article}
\usepackage[a4paper,margin=1in,landscape]{geometry}
\usepackage{booktabs,array,calc}
\newcommand\mytab[1]{\smash{\begin{tabular}[t]{@{} c @{}} #1 \end{tabular}}}
\newlength\mylen
\setlength\mylen{\widthof{Workflow}-4\tabcolsep}
\begin{document}
\begin{table}[h]
\centering
\caption{Results \dots}
\smallskip
\begin{tabular}{@{} *{2}{wc{\mylen}} *{7}{c} @{}}
\toprule
Test
& \multicolumn{2}{@{}c@{}}{Workflow}
& Method
& \mytab{Completion \\ Time (min)}
& \mytab{Gas used for \\ \textit{submitJob} (gas)}
& \mytab{Gas used for \\ \textit{processPayment} (gas)}
& \mytab{Actual/Complete \\ Cost (\textit{Cent})}
& Failed \\
\cmidrule(lr){2-3}
& $V$ & $E$ \\
\midrule
$T_1$ & 16 & 28 & ALGO & 27 & 1722983 & 1942770 & 0.827/0.827 & 0 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
решение3
Если ничего не помогает, я бы выбрал наивный подход:
\documentclass{article}
\usepackage[a4paper,margin=1in,landscape]{geometry}
\usepackage{makecell}
\usepackage{multirow}
\usepackage{booktabs}
\begin{document}
%\begin{landscape}
\begin{center}
\begin{table*}[!t] %
\centering
\caption{Results ...}
\begin{tabular}{|c|c|c|c|c|c|c|c|c|}
\hline
\textbf{Test} & \multicolumn{2}{c|}{Workflow} & Method
& Completion
& Gas Used for
& Gas Used for
& Actual/Complete
& Failed \\
& $|V|$ & $|E|$
&
& Time (min)
& \textit{submitJob} (gas)
& \textit{processPayment} (gas)
& Cost (\textit{Cent})
& \\
\hline
$T_1$ & 16 & 28 & ALGO & 27 & 1722983 & 1942770 & 0.827/0.827 & 0 \\ \hline
\end{tabular}
\end{table*}
\end{center}
%\end{landscape}
\end{document}
Конечно, «Failed» больше не находится посередине, но это справедливо и для «Method».