表格单元格换行符和行颜色

表格单元格换行符和行颜色

这个问题涉及三件事:

  1. 在单元格中强制换行
  2. 结合以上内容\rowcolors
  3. 结合上面的垂直线

1.这显然是一个常见问题,因为我已经阅读了有关此问题的多个帖子。但是,我还没有找到任何真正的解决方案来解决这个极其恼人的问题,只有一些小技巧。

基本上,我有一张表格,第一列有一个名称、一个字母和一个单位,我希望字母和单位放在第二行以节省水平空间。我试过:

  • p{}设置列宽:由于内容的长度不一样,所以不起作用。
  • \newline:使用 tabulary 时它工作了一次(?),然后就停止工作了。
  • \parbox:但是我不想坐下来为每个单元格设置框宽度,这似乎完全没有必要。
  • \makecell\thead:这两个都很好用,允许\\内部!它们都自动提供最佳的换行符和单元格形状
  • \pbox:给出与上面类似的结果,但是是其他的对齐方式。

但是,现在进入第二部分:

\makecelland \thead(and \pbox) 完全搞乱了\rowcolors。它显然将两行单元格处理为两个单元格或其他。那么,我该如何解决这个问题?还有其他方法可以在单元格中插入换行符吗?或者可以\rowcolors操纵吗?可以\makecell操纵吗?在 CTAN 手册中找不到任何关于\makecell软件包的答案

3.此外,这也是一个已知问题。在实施时\rowcolors,彩色行会弄乱垂直线...它们没有被完全覆盖,而是被覆盖了一半或宽度减半,看起来很糟糕。使用时也是一样\rowcolor。我试过了\setlength\arrayrulewidth{1pt},但这只会增加所有线条的宽度,而不会补偿那些被弄乱的部分。有什么好的建议吗?

\documentclass{article}
\usepackage[utf8]{inputenc} 
\usepackage[table]{xcolor}
\usepackage{makecell}
\usepackage{tabulary}
\usepackage{float}

\definecolor{lg}{gray}{0.9}


\begin{document}


\begin{table}[H]
    \centering
    \rowcolors{1}{lg}{}
    \begin{tabulary}{1\textwidth}{|l|C C C C C|}\hline 
        No. & 1 & 2 & 3 & 4 & 5\\ 
        \makecell[l]{Name} & DIN CK45 & M244 & Alumec 89 & HPFS 7980 & Ti-6Al-4V (Grade 5)\\ 
        \makecell[l]{Type} & HTS & Cast Alu. & Aluminium & Fused Silica & Titanium \\
        \makecell[l]{Young's modulus \\ E [GPa]} & 210 & 90 & 71.5 & 72.7 & 113.8  \\ 
        \makecell[l]{Poisson's ratio \\ $\nu$ [1]} & 0.3 & 0.3 & 0.3 & 0.16 & 0.34 \\ 
        \makecell[l]{Yield strength \\ $\sigma_y$ [MPa]} & 500 & 185 & 550 & - & 880 \\ 
        \makecell[l]{Ultimate strength \\ $\sigma_u$ [MPa]} & 585 & 190 & 590 & 52.4 & 950 \\ 
        \makecell[l]{Reference temp. \\ $t_{ref}$ [\degree C]} & - & 25 & 25 & 25 & - \\ 
        \makecell[l]{Density \\ $\rho$ [kg/m\textsuperscript{3}]} & 7840 & 2650 & 2830 & 2201 & 4430 \\ 
        \makecell[l]{Manufacturer} & Metal Ravne & MAHLE & UDDEHOLM & CORNING & - \\ \hline 
    \end{tabulary}
    \caption{Material data}
    \label{tab:materials1}
\end{table}

\end{document}

答案1

差不多一年后(!)这个答案对 OP 没什么帮助……或者我错了 :)。无论如何,着色\makecell有点棘手。正确的着色可以通过放入宏来获得\makecell{...}\cellcolor例如:

 \cellcolor{lg}{\makecell[l]{Poisson's ratio\\ $\nu$ \cite{1}}}

然而,我宁愿将表重新设计成:

\documentclass{article}
\usepackage[margin=35mm]{geometry}  % <-- added
\usepackage[utf8]{inputenc}
\usepackage[table]{xcolor}
\usepackage{siunitx}                % <-- added
\usepackage{tabularx}               % <-- changed
    \renewcommand\tabularxcolumn[1]{m{#1}}              % <-- added
    \newcolumntype{C}{>{\centering\arraybackslash}X}    % <-- added
    \newcolumntype{L}{>{\raggedright\arraybackslash}X}  % <-- added
\definecolor{lg}{gray}{0.9}

\begin{document}

    \begin{table}
\centering
    \setlength\tabcolsep{3pt}
    \rowcolors{1}{lg}{}
\begin{tabularx}{\textwidth}{| >{\hsize=1.25\hsize}L | *{5}{>{\hsize=0.95\hsize}C} |}
    \hline
\hfil No.   & 1             & 2         & 3         & 4             & 5         \\
    \hline
Name        & DIN CK45      & M244      & Alumec 89 & HPFS 7980     & Ti-6Al-4V (Grade 5)\\
Type        & HTS           & Cast Alu. & Aluminium & Fused Silica  & Titanium  \\
Young's modulus  E [GPa]    
            & 210           & 90        & 71.5      & 72.7          & 113.8     \\
Poisson's ratio $\nu$ \cite{1}
            & 0.3           & 0.3       & 0.3       & 0.16          & 0.34      \\
Yield strength  $\sigma_y$ [MPa] 
            & 500           & 185       & 550       & --            & 880       \\
Ultimate strength $\sigma_u$ [MPa]
            & 585           & 190       & 590       & 52.4          & 950       \\
Reference temp.  $t_{\mathrm{ref}}$ [\si{\degreeCelsius}]
            & --            & 25        & 25        & 25            & --        \\
Density $\rho$ [\si{kg\per\metre\cubed}] & 7840          & 2650      & 2830      & 2201          & 4430      \\
Manufacturer& Metal Ravne   & MAHLE & UDDEHOLM  & CORNING           & --        \\ 
    \hline
\end{tabularx}
    \caption{Material data}
\label{tab:materials1}
    \end{table}
\end{document}

这使:

在此处输入图片描述

答案2

与。{NiceTabular}nicematrix

\documentclass{article}
\usepackage{geometry}
\usepackage{xcolor}
\usepackage{nicematrix}
\usepackage{float}

\begin{document}


\begin{table}[H]
    \centering
    \begin{NiceTabular}{|l|*{5}{X[c]}|}
    \CodeBefore
    \rowcolors[gray]{1}{0.9}{}
    \Body
        \Hline 
        No. & 1 & 2 & 3 & 4 & 5\\ 
        Name & DIN CK45 & M244 & Alumec 89 & HPFS 7980 & Ti-6Al-4V (Grade 5)\\ 
        Type & HTS & Cast Alu. & Aluminium & Fused Silica & Titanium \\
        \Block{}{Young's modulus \\ E [GPa]} & 210 & 90 & 71.5 & 72.7 & 113.8  \\ 
        \Block{}{Poisson's ratio \\ $\nu$ [1]} & 0.3 & 0.3 & 0.3 & 0.16 & 0.34 \\ 
        \Block{}{Yield strength \\ $\sigma_y$ [MPa]} & 500 & 185 & 550 & - & 880 \\ 
        \Block{}{Ultimate strength \\ $\sigma_u$ [MPa]} & 585 & 190 & 590 & 52.4 & 950 \\ 
        \Block{}{Reference temp. \\ $t_{\text{ref}}$ [°C]} & - & 25 & 25 & 25 & - \\ 
        \Block{}{Density \\ $\rho$ [kg/m\textsuperscript{3}]} & 7840 & 2650 & 2830 & 2201 & 4430 \\ 
        Manufacturer & Metal Ravne & MAHLE & UDDEHOLM & CORNING & - \\ 
        \Hline 
    \end{NiceTabular}
    \caption{Material data}
    \label{tab:materials1}
\end{table}

\end{document}

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

上述代码的输出

答案3

我不知道这会如何pbox弄乱您的行颜色,但对我来说却不是这样:

\newcommand{\multilinebox}[1]{\pbox{\linewidth}{\vspace{.5\b‌​aselineskip}#1\vspac‌​e{.5\baselineskip}}}

相关内容