如何自动调整表格宽度以适合页面?

如何自动调整表格宽度以适合页面?

如何确保表格自动适应页面宽度?我以为规范会解决这个问题,但似乎并非如此。不幸的是,我无法包含实际图像来说明问题,因此我使用了放大尺寸的虚拟图像来演示问题。

另外,我尝试通过将两列设置为 X[c] 来确保“归一化系数”行中的两幅图像大小相同。但是,这种方法似乎没有达到预期的效果。以下是该问题的 MWE。

在此处输入图片描述

\documentclass[journal]{IEEEtran}
\usepackage{lipsum}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{tabularray}
\usepackage{amsmath}
\usepackage{adjustbox}
\usepackage[caption=false,font=normalsize,labelfont=sf,textfont=sf,labelformat=simple]{subfig}


\begin{document}
\lipsum[]

\adjustboxset{width=\linewidth, valign=M}

\onecolumn
\begin{longtblr}{
  width=\textwidth,
  cells = {c},
  hlines,
  colspec= {|c| X[c,m]}
}
1 & X \\
2 & y \\
3 &\begin{tblr}{
width=\linewidth,
colspec={c X[c] X[c]},
cells={},
hlines,
hline{Z}={3pt,blue5},
row{1-Z}={font=\small},
}
C1 & C2 & C3\\
{Normalized \\Coefficient} & \adjincludegraphics{example-image-a}  &   \adjincludegraphics{example-image-b} \\
 $A$ & \SetCell[c=2]{c} \adjincludegraphics{example-image-a}   \\
 $B$ & \SetCell[c=2]{c} \adjincludegraphics{example-image-a}   \\
\end{tblr} \\
\end{longtblr}

\end{document}

答案1

  • 这不是一个真正的答案,但它渴望评论......
  • 你的问题并不简单。
  • 通过添加,hspan=minimal您可以修复图像的宽度,但同时多列单元格中的图像会产生虚假的垂直空间),如果这些单元格包含文本,则不会出现这种情况:
\documentclass[journal]{IEEEtran}
\usepackage{lipsum}
\usepackage[caption=false,
            labelfont=sf,textfont=sf,labelformat=simple]{subfig}
\usepackage[export]{adjustbox}

\usepackage{xcolor}
\usepackage{tabularray}
\UseTblrLibrary{amsmath, booktabs}
\begin{document}
\lipsum[1]
    \begin{table}[ht]
\adjustboxset{width=\linewidth,
              valign=t}
\begin{tblr}{width=\linewidth,
             hline{1-Y} = solid,
             hline{Z}={3pt,fg=blue5},
             cells={font=\small},
             colspec={Q[c,m] *{2}{Q[c, wd=30mm]} @{}},
             cell{X-Z}{2} = {c=2}{j},
             rowsep=3pt,
             hspan=minimal
             }
C1 & C2 & C3\\
{Normalized \\Coefficient} 
    & \adjincludegraphics[valign=m]{example-image-a} & \adjincludegraphics[valign=m]{example-image-b} \\
$A$ & \adjincludegraphics[valign=m]{example-image-a} &    \\
$B$ & \adjincludegraphics[valign=m]{example-image-b} &    \\
$C$ & \lipsum[66]                                 &    \\
\end{tblr}
    \end{table}
\end{document}

在此处输入图片描述

这似乎是由某些错误引起的,所以我们需要软件包作者的帮助。

附录:与此同时该怎么办?

不使用\tabularray包而是坚持使用旧的tabularx包:

\documentclass[journal]{IEEEtran}
\usepackage{lipsum}
\usepackage[caption=false,
            labelfont=sf,textfont=sf,labelformat=simple]{subfig}
\usepackage[export]{adjustbox}

\usepackage{colortbl}
   \usepackage{cellspace,   % for adding vertical space around cells' contents
                tabularx}
    \setlength\cellspacetoplimit{0pt}
    \setlength\cellspacebottomlimit{1pt}
\newcommand\mcxx[1]{\multicolumn{2}{>{\hsize=\dimexpr2\hsize+2\tabcolsep\linewidth=\hsize}X @{}}{#1}}
\newlength\colwidth

\usepackage{booktabs}

\begin{document}
\lipsum[1]
    \begin{table}[ht]
\setkeys{Gin}{width=\linewidth}
\settowidth\colwidth{Coefficient}
\begin{tabularx}{\linewidth}{@{} >{\centering}p{\colwidth} *{2}{SX} @{}}
    \toprule
C1 & C2 & C3\\
    \midrule
Normalized Coefficient 
    & \includegraphics[valign=m]{example-image-a}   & \includegraphics[valign=m]{example-image-b} \\
   \midrule
$A$ & \mcxx{\includegraphics[valign=m]{example-image}}  \\
   \midrule
$B$ & \mcxx{\includegraphics[valign=m]{example-image}}  \\
   \arrayrulecolor{blue}
   \bottomrule[3pt]
\end{tabularx}
    \end{table}
\end{document}

在此处输入图片描述

相关内容