我正在用 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}