我正在尝试在 LaTeX 中实现下表(见图)。由于它包含多列和多行表命令,因此我在编写代码时遇到了困难。如果你们能帮助我,我将不胜感激:
这是使用多列和多行的代码的初始部分,我不明白我哪里错了:
\begin{table}[tp]
\toprule
\renewcommand{\arraystretch}{1.3}
\setlength{\arrayrulewidth}{0.15mm}
\setlength{\doublerulesep}{0.12mm}
\caption{VSI Parameters}
\label{tab:2}
\centering
\begin{tabular}{t|t|t|t}
\hline
\hline
\multicolumn{2}{*}{\textbf{VSI Controller} \\
\textbf{Parameters} \\
& \textbf{Minimum} & \textbf{Maximum} \\
& \textbf{Value} & \textbf{Value} \\\otoprule
\hline
\hline
\multirow{4}{*}{Outer Control Loops} & \math{k_{p1}} & \SI{0.002}{} \\
& \math{T_{i1}} & \SI{0.0001}{} \\
& \math{k_{p2}} & \SI{0.01}{} \\
& \math{T_{i2}} & \SI{0.0001}{} \\ \hline
\end{tabular}
\end{table}
编辑:@Bernard:我真的很喜欢你的格式;如果我选择它来制作我的所有表格,那么我的脚本中下表的修改代码是什么:
\begin{table}[tp]
\toprule
\renewcommand{\arraystretch}{1.3}
\setlength{\arrayrulewidth}{0.15mm}
\setlength{\doublerulesep}{0.12mm}
\caption{Step Changes}
\label{tab:1}
\centering
\begin{tabular}{t|t|t}
\hline
\hline
Step Change & Initial & Final \\
Number & $\math{(W)}$ & $\math{(W)}$ \\\otoprule
\hline
\hline
\SI{1}{} & \SI{0}{} & \SI{500}{}\\
\hline
\SI{2}{} & \SI{500}{} & \SI{250}{}\\
\hline
\SI{3}{} & \SI{250}{} & \SI{750}{}\\
\hline
\hline
\end{tabular}
\end{table}
答案1
这是一个解决方案,使用makecell, siunitx, caption
和booktabs
。我删除了所有垂直规则以获得更专业的外观:
\documentclass{article}
\usepackage{makecell, caption, booktabs, multirow, siunitx}
\renewcommand\theadfont{\bfseries}
\renewcommand\cellalign{lc}
\newcommand{\otoprule}{\midrule[\heavyrulewidth]}
\usepackage{lipsum, fancyvrb}
\begin{document}
\lipsum[3]
\begin{table}[tp]
\renewcommand{\arraystretch}{1.3}
\caption{VSI Parameters}
\label{tab:2}
\centering
\begin{tabular}{@{}p{25mm}>{$}c<{$}@{\hskip1.5em}S[table-format=1.4]S[table-format=1.1]@{}}
\toprule
\multicolumn{2}{@{}l}{\bfseries\makecell{VSI Controller\\ Parameters}} & {\thead{Minimum\\Value}} & {\thead{Maximum\\Value}} \\
\otoprule
\multirowcell{4}{Outer Control \\ Loops} & k_{p_1} & 0.002 & 5 \\
& T_{i_1} & 0.0001 & 0.5 \\
& k_{p_2} & 0.01 & 3 \\
& T_{i_2} & 0.0001 & 0.5 \\
\midrule
\multirowcell{4}{Inner Control \\ Loops} & k_{p_3} & 0.1 & {\Verb+15+} \\
& T_{i_3} & 0.001 & 0.5 \\
& k_{p_4} & 0.1 & {\Verb+10+} \\
& T_{i_4} & 0.001 & 0.5 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案2
类似这样的内容?请注意,我不得不对您的代码进行大量更改,因为我不知道一半的命令是用来做什么的,也不知道在哪里可以找到它们。例如,我使用了c
列类型,$...$
删除了\otoprule
和(这在with\toprule
之外没有任何意义,而且我不知道还有什么可以定义它)等。tabular
booktabs
\documentclass[conference]{IEEEtran}
\usepackage{siunitx,array,multirow}
\begin{document}
\begin{table}[tp]
% \toprule% you can only use this within a tabular and if you load booktabs
\renewcommand{\arraystretch}{1.3}
\setlength{\arrayrulewidth}{0.15mm}
\setlength{\doublerulesep}{0.12mm}
\caption{VSI Parameters}
\label{tab:2}
\centering
\begin{tabular}{|c|c|c|c|}
\hline
\multicolumn{2}{|c|}{\textbf{VSI Controller}} &\textbf{Minimum} & \textbf{Maximum} \\
\multicolumn{2}{|c|}{\textbf{Parameters}} & \textbf{Value} & \textbf{Value} \\%\otoprule
\hline
\multirow{4}{*}{Outer Control Loops} & $k_{p1}$ & \SI{0.002}{} &\\
& $T_{i1}$ & \SI{0.0001}{} &\\
& $k_{p2}$ & \SI{0.01}{} &\\
& $T_{i2}$ & \SI{0.0001}{} &\\ \hline
\end{tabular}
\end{table}
\end{document}
虽然它不是一个特别专业的表格,但至少可以编译:
但是,如果您使用指定类别提交,则无论如何您都应该遵循其表格格式指南。(如果他们有的话。)
答案3
编辑:我将其更改为您给定的文档类。
好的,为了帮助您开始准备您的表格,请参阅以下 MWE:
%\documentclass[a4paper,12pt]{article}
\documentclass[conference]{IEEEtran}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{booktabs}
\usepackage{multirow,array}
\usepackage{siunitx}
\begin{document}
Test
\begin{table}
\renewcommand{\arraystretch}{1.3}
\caption{VSI Parameters}
\label{tab:2}
\centering
\begin{tabular}{p{4cm}ccc}
\toprule
\multicolumn{2}{c}{\textbf{VSI Controller}} & \textbf{Minimum} & \textbf{Maximum} \\
& & \textbf{Value} & \textbf{Value} \\
\midrule
\multirow{4}{*}{Outer Control Loops} % first colum for 4 rows
& ${k_{p1}}$ & \SI{0.002}{} & 5 \\
& ${T_{i1}}$ & \SI{0.0001}{} & 0.5\\
& ${k_{p2}}$ & \SI{0.01}{} & 3\\
& ${T_{i2}}$ & \SI{0.0001}{} & 5\\
\bottomrule
\end{tabular}
\end{table}
\end{document}
我做了一些漂亮的打印,使表格在创作时更加清晰可见。
命令\multicolumn{2}{c}{\textbf{VSI Controller}}
跨越两列并使文本居中。您的代码中}
缺少结尾。
命令\multirow{4}{*}{Outer Control Loops}
为您案例中的 4 行定义了第一列。第二列写在通常的后面&
。在接下来的几行中,让第一列为空(请研究给定的表格代码)。
如何继续取决于您的代码和使用的包。但此代码是准备表格的开始。我不喜欢表格线,所以我删除了它们以向您展示替代方案...
结果为article
:
结果为IEEEtran
: