将列条目彼此左对齐,同时使其相对于各自的列边距居中

将列条目彼此左对齐,同时使其相对于各自的列边距居中

后续行动我之前的问题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}

输出2

答案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)在他的回答中,是一个更为强大的解决方案,因为它不需要手动设置第二列中最宽的符号。

相关内容