后续行动我之前的问题Symbol
,我需要将此多列表格的第二列的条目(标题下方)彼此左对齐,同时使它们相对于各自的列边距居中,而不会破坏行颜色。
换句话说,标题下方第二列的所有条目实际上需要具有相同的宽度,以便它们彼此左对齐并相对于其列边距居中。
\PassOptionsToPackage{table}{xcolor}
\documentclass{article}
\usepackage{siunitx,ragged2e,booktabs,lipsum,adjustbox}
\usepackage[usestackEOL]{stackengine}
\begin{document}
\tabcolsep0pt
\rowcolors{2}{gray!20}{}
\begin{tabular}{
>{\RaggedRight}m{0.5\linewidth}
>{\Centering}m{0.2\linewidth}
S
s
}
\toprule
Parameter & Symbol & \multicolumn{2}{c}{Value} \\
\midrule
DC Motor Rotor Inertia & $J_M$ & 0.6 & \kg\m\squared \\
DC Motor Rotor Damping Coefficient & $D_M$ & 4 & \N\m\per\radian\per\s \\
DC Motor Supply Voltage & $V_ٍ$ & 20 & \V \\
\bottomrule
\end{tabular}
\end{document}
答案1
一种解决方案eqparbox
,定义与标准命令类似的框命令,但使用标签系统,以便所有共享相同标签的框都具有其中最宽的自然宽度:
\documentclass[table]{article}
\usepackage{siunitx,ragged2e,booktabs,lipsum,adjustbox}
\usepackage[table]{xcolor}
\usepackage{eqparbox}
\newcommand{\eqmathbox}[2][M]{\eqmakebox[#1][l]{$\displaystyle#2$}}
\begin{document}
\tabcolsep0pt
\rowcolors{2}{gray!20}{}
\begin{tabular}{
>{\RaggedRight}m{0.5\linewidth}
>{\Centering}m{0.2\linewidth}
S
s
}
\toprule
Parameter & Symbol & \multicolumn{2}{c}{Value} \\
\midrule
DC Motor Rotor Inertia & \eqmathbox{J_M} & 0.6 & \kg\m\squared \\
DC Motor Rotor Damping Coefficient & \eqmathbox{D_M} & 4 & \N\m\per\radian\per\s \\
DC Motor Supply Voltage & \eqmathbox{V} & 20 & \V \\
\bottomrule
\end{tabular}
\end{document}
答案2
对于这项特定的工作,可以这样做:
\PassOptionsToPackage{table}{xcolor}
\documentclass{article}
\usepackage{siunitx,ragged2e,booktabs,lipsum,adjustbox}
\usepackage[usestackEOL]{stackengine}
\usepackage{calc}
\begin{document}
\newlength{\vp}
\setlength{\vp}{0.1\linewidth-\widthof{$D_M$}/2} % the widest element
\tabcolsep0pt
\rowcolors{2}{gray!20}{}
\begin{tabular}{
>{\RaggedRight}m{0.5\linewidth}
>{\Centering}m{0.2\linewidth}
S
s
}
\toprule
Parameter & Symbol & \multicolumn{2}{c}{Value} \\
\midrule
DC Motor Rotor Inertia & \multicolumn{1}{l}{\hspace{\vp}$J_M$} & 0.6 & \kg\m\squared \\
DC Motor Rotor Damping Coefficient &\multicolumn{1}{l}{\hspace{\vp}$D_M$} & 4 & \N\m\per\radian\per\s \\
DC Motor Supply Voltage & \multicolumn{1}{l}{\hspace{\vp}$V_ٍ$} & 20 & \V \\
\bottomrule
\end{tabular}
\end{document}
答案3
编辑:
原始解决方案并不像我预期的那样有效。后来我意识到符号值的居中取决于列的宽度,而建议的手动调整中心位置并不是 OP 所期望的。这个问题在@Simon Dispa答案 (+1)。下面是他的答案的小变化,其中包含一些偏离主题的建议,例如使用tabularx
表格、确定维度值的表格格式、使用选项将维度左对齐以及table-alignment = left
表格的更短代码:
\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{ragged2e}
\usepackage{booktabs, tabularx}
\newcounter{tblerows}% see https://tex.stackexchange.com/questions/297345/
\expandafter\let\csname c@tblerows\endcsname\rownum
\usepackage{siunitx}
usepackage{calc}
\begin{document}
\centering
\renewcommand\tabularxcolumn[1]{m{#1}}
\renewcommand\arraystretch{1.2}
\setlength\tabcolsep{0pt}
\rowcolors{2}{gray!20}{}
\begin{tabularx}{\linewidth}{
>{\RaggedRight}X
>{\RaggedRight\hspace{\vp}}m{0.2\linewidth}
S[table-format=3.2]
s[table-alignment = left]
}
\toprule
Parameter & \multicolumn{1}{c}{Symbol}
& \multicolumn{2}{c}{Value} \\
\midrule
DC Motor Rotor Inertia & $J_M$ & 0.6 & \kg\m\squared \\
DC Motor Rotor Damping Coefficient & $D_M$ & 4 & \N\m\per\radian\per\s \\
DC Motor Supply Voltage & $V$ & 20 & \V \\
\bottomrule
\end{tabularx}
\end{document}
然而,使用eqparbox
,正如建议的那样@Bernard(+1)在他的回答中,是一个更为强大的解决方案,因为它不需要手动设置第二列中最宽的符号。