随页面宽度调整表格宽度并同时定义单元格宽度

随页面宽度调整表格宽度并同时定义单元格宽度

我正在用 LaTeX 写一篇文章,需要在其中插入一个大表格。由于表格很宽,我想将其调整到页面宽度,所以我使用了命令\begin{adjustbox}。但是,我遇到了问题(为了更好地说明,我在下面附上了一张图片)。

问题是,我左边的第一个单元格来自多个单元格的组合,由于里面有很多文本,我想将文本写成多行。为此,我想到使用命令|p{3cm}|,这样单元格将保持该宽度,文本将写成多行。这是我想要的结果,来自 Excel(我显示的右侧有更多列)

这就是我想要的结果

问题是这两个命令\begin{adjustbox}和定义单元格宽度似乎不兼容,尽管表格会根据页面宽度进行调整,但第一列不会根据这 3 厘米进行调整,文本会写在一行中。您知道我如何才能将表格宽度调整为页面宽度,此外,还要定义一列的宽度,以便文本写在多行中吗?

好的,我会尝试用英语表达自己。我是tabulary这样使用环境的:

\begin{table}[H]
\centering
\begin{tabulary}{\linewidth}{|P{0.3\linewidth}|L|L|L|L|L|L|}
\end{tabulary}
\end{table}

我也尝试过定义:

\begin{tabulary}{\linewidth}{|P{3cm}|L|L|L|L|L|L|}

而且表格占用的空间一直超过页面空间。我不知道我是否做错了什么,或者我是否需要在代码中添加一些内容。

无论如何,非常感谢您的回答。我不习惯在 LaTeX 中制作表格,当我做过一个表格时,它比我必须添加到 TFG 中的这个表格要容易得多……

我正在上传另一张我想要的桌子样子的图片在此处输入图片描述

正如您在左栏中看到的,我需要将单元格缩小一点,以便将文本写在几行中,并且单元格宽度较小。我不知道\multicolumn我在表格头部使用的内容是否有问题,或者是否存在其他问题

我在这里展示我使用的代码

\documentclass[11pt,a4paper]{article}
\usepackage[total={170mm,257mm}, top=2.5cm,bottom=2.5cm,left=2.5cm,right=2.5cm,marginparwidth=1.75cm]{geometry}
\renewcommand{\baselinestretch}{1.15}
\parindent=15mm

\usepackage[utf8]{inputenc}
\usepackage[spanish,es-tabla]{babel} %"españoliza" LaTeX: separación de palabras, formato de fecha, etc
\usepackage{xcolor}
\usepackage{graphicx}
\usepackage{multirow}
\usepackage{bm}
\usepackage{float}
\usepackage{booktabs}
\usepackage{adjustbox}

\usepackage{amsmath}
\renewcommand{\theequation}{\thesection.\arabic{equation}}
\usepackage{mathrsfs}
\usepackage{afterpage}
\usepackage{fancyhdr}
\usepackage{amssymb}
\usepackage{color, colortbl}
\usepackage{array}
\usepackage{tabulary}

\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}}

\begin{table}[H]
\centering

\begin{tabulary}{1.0\textwidth}{|L|L|L|L|L|L|L|}
        \toprule
{\multirow{2}{=}{\centering Paper}} & {\multirow{2}{=}{\centering Organismo}} & {\multirow{2}{=}{\centering \Proteína}} &{\multirow{2}{=}{\centering Gen}} & \multicolumn{3}{c|}{Homólogo Anabaena sp. PCC7120} \\
        
        \cmidrule{5-7}       &       &       &       & Gen & Anotación & Identidad (\%)}\\
        \bottomrule
\end{tabulary}

\end{table}

我只是试着展示我认为对表格很重要的内容,如果我超出了范围,很抱歉

这是因为在“论文”一栏中我写了文章的参考文献,而我用来写它的单元格来自几个单元格的组合,因此我需要把它分成几行来写,这样它才不会占用太多空间。

我一直在思考所有这些问题,我认为我需要的是下一个:

  • 首先我需要定义每列的宽度,以便整个表格适合行宽
  • 其次,我需要减小字体大小。只需减小单元格的宽度,一些单元格中就会出现多行,而我需要一行。例如:
 &       & Polysaccharide biosynthesis/export protein; GumB/KpsD (Sistema Wzx/Wzy) & \textit{sll1581 (gumB)} & \textit{all4388} & SLBB domain-containing protein} & 39,18 \\

这一行的文本太多了,我需要更小的字体,这样才能让它们都显示在一行中。你可以在我之前添加的图片中看到,在“蛋白质”列中文本太多了,我需要更小的字体,这样才能让它们显示在一行中。

答案1

您的表格太宽,无法(很好地)适应纵向页面。此外,如果不将字体大小缩小到,它也无法很好地适应横向页面\footnotesize

通过使用tabularray表格(在我看来)可以更轻松地为单元格和行着色以及编写多行单元格。但是与此相比,它tabulary不会自动确定列宽。您需要规定它们。

可能的 MWE 是:

\documentclass[11pt,a4paper]{article}
\usepackage[margin=2.5cm,
            marginparwidth=1.75cm]{geometry}
\renewcommand{\baselinestretch}{1.15}
\parindent=15mm

\usepackage[spanish,es-tabla]{babel} %"españoliza" LaTeX: separación de palabras, formato de fecha, etc
\usepackage{xcolor}
\usepackage{tabularray}
\UseTblrLibrary{amsmath, booktabs, siunitx}
\usepackage{amssymb}
\usepackage{mathrsfs}
\usepackage{bm}

\usepackage{pdflscape}

\begin{document}
\begin{landscape}
    \begin{table}[ht]
    \centering
    \footnotesize
\begin{tblr}{vline{1,2,5,Z} = {1pt},
             vline{3,4,6,7} = {solid},
             colspec = {X[1,l,m] X[1,c,m] X[3,l] c c 
                        X[2.5,l] Q[c, si={table-format=2.2,
                                        output-decimal-marker={,}}]},
             colsep  = 3pt,
            row{odd} = {bg=cyan!30},
            row{1,2} = {font=\footnotesize\bfseries, c, bg=cyan!50}
            }
    \toprule
\SetCell[r=2]{c}    Paper
    &\SetCell[r=2]{c}    Organismo 
        &\SetCell[r=2]{c}    Proteína 
            &\SetCell[r=2]{c}    Gen 
                &\SetCell[c=3]{c}    Homólogo Anabaena sp. PCC7120   
                    &   &                       \\
    \cmidrule{5-7}       
    &   &   &   & Gen 
                    & Anotación 
                        & {{{Iden. (\%)}}}  \\
    \midrule
\SetCell[r=10]{c, bg=cyan!50}   Parnasa at all., 2019
    &\SetCell[r=6]{c}   Syechococcus elongatus PCC 7942
        &   & * & * & * & *                     \\
    &   &   &   &   &   &                       \\
    &   &   &   &   &   &                       \\
    &   &   & synpcc 7942\_1134
                &   &   &                       \\
    &   &   & synpcc 7942\_1134   
                & air7014  
                    &   & 57.7                  \\
    &   &   &   &   &   & 73.99                 \\
    &\SetCell{bg=white} Anaboena sp. PCC 7120
        &   
            &   &   &   & *                     \\
    &\SetCell[r=3]{c, bg=cyan!30}   Microcytis aeruginisa PCC 7806
        &   &   &   &   &                       \\
    &   &   &   &   &   &                       \\
    &   &   &   &   &   &                       \\
    \bottomrule
\end{tblr}
    \end{table}
\end{landscape}
\end{document}

在此处输入图片描述

相关内容