LaTeX 表格太宽了

LaTeX 表格太宽了

我真的很沮丧。我想将下表输入到我的 LaTeX 文档中,但第一列和第三列无法缩小,因此太宽了。有人能告诉我我做错了什么吗?如果我能正确格式化,表格应该适合大约半页宽度。谢谢您的帮助。

\begin{table}
\begin{tabular}{|c p{3cm}|c p{2cm}|c p{5cm}|c p{2cm}|}
\hline
 & Gene & Protein & Disease \\
\hline
\multirow{3}{*}{Soluble lysozomal enzyme deficiencies} & CLN10 (CTSD)  & Cathepsin D & Congenital*, LINCL, JNCL, ANCL \\
& CLN1 & Palmitoyl protein thioesterase 1 (PPT1) & INCL*, LINCL, JNCL, ANCL \\
& CLN2 & Tripeptidyl peptidase 1 (TPP1) & LINCL, JNCL \\
\multirow{5}{*}{Non-enzyme deficiencies} & CLN3 & Transmembrane protein & JNCL* \\
& CLN5 & Soluble; lysosomal & LINCL, JNCL, ANCL \\
& CLN6 & Transmembrane protein; ER & LINCL, ANCL Kuf's Type A \\
& CLN7 (MSFD8) & Transmembrane protein; Endolysosomal transporter & LINCL \\
& CLN8 & Transmembrane protein; ER & LINCL \\
\hline
\end{tabular}
\caption{Classification of NCLs by CLN gene affected \cite{haltia} \\ *indicates main form of NCL associated with the gene}
\label{table1}
\end{table}

答案1

传统的left、centre 和right 对齐列不会换行。您应该使用paragraph 列来允许/强制换行(或允许其他列类型的其他包,如tabularxX列,比如说)。

对你的表进行以下修改使用

  • tabularx具有可调整宽度的列(X类型)以适应剩余部分\textwidth
  • geometry为您的页面留出更多空间;
  • 使用指令进行列格式化>{...},由array包裹(由 加载tabularx)。

在此处输入图片描述

\documentclass{article}
\usepackage[margin=15mm]{geometry}% http://ctan.org/pkg/geometry
\usepackage{multirow}% http://ctan.org/pkg/multirow
\usepackage{tabularx}% http://ctan.org/pkg/tabularx
\begin{document}
\begin{table}
  \begin{tabularx}
      {\textwidth}
      {|X p{3cm}|>{\raggedright\arraybackslash}X >{\raggedright\arraybackslash}p{2cm}|}
    \hline
     & Gene & Protein & Disease \\
    \hline
    \multirow{3}{*}{Soluble lysozomal enzyme deficiencies} & CLN10 (CTSD)  & Cathepsin D & Congenital*, LINCL, JNCL, ANCL \\
     & CLN1 & Palmitoyl protein thioesterase 1 (PPT1) & INCL*, LINCL, JNCL, ANCL \\
     & CLN2 & Tripeptidyl peptidase 1 (TPP1) & LINCL, JNCL \\
    \multirow{5}{*}{Non-enzyme deficiencies} & CLN3 & Transmembrane protein & JNCL* \\
     & CLN5 & Soluble; lysosomal & LINCL, JNCL, ANCL \\
     & CLN6 & Transmembrane protein; ER & LINCL, ANCL Kuf's Type A \\
     & CLN7 (MSFD8) & Transmembrane protein; Endolysosomal transporter & LINCL \\
     & CLN8 & Transmembrane protein; ER & LINCL \\
    \hline
  \end{tabularx}
  \caption{Classification of NCLs by CLN gene affected indicates main form of NCL associated with the gene}
  \label{table1}
\end{table}
\end{document}

由于我不熟悉确切的用法/上下文,您可能需要调整您的\multirow规范。

答案2

我推荐使用tabu* 包来轻松控制可变宽度的列。在我为您的第一列选择的定义中X[4,l],该列的相对宽度为 4(即它是第二列的两倍宽),单元格对齐方式为左对齐**。您可以根据需要通过替换来调整表格宽度。to \textwidth例如。to 10cm

此外,我已将表格插入到ThreePartTable环境中以允许表格注释(脚注),并增加了\arraystretch行距以实现更舒适的行距。您可能需要考虑该booktabs软件包以获取其他样式建议。

在此处输入图片描述

\documentclass{article}
\usepackage{tabu}
\usepackage{threeparttablex}
\renewcommand{\arraystretch}{1.5}

\begin{document}

\begin{table}
\begin{ThreePartTable}
\begin{tabu} to \textwidth {|   X[4,l] 
                                X[2,l] 
                                X[3,l]<{\strut} 
                                X[3,l]<{\strut}
                            |}
    \hline
     & Gene & Protein & Disease \\
\hline
    Soluble lysozomal enzyme deficiencies & CLN10 (CTSD)  & Cathepsin D & Congenital\tnote{*}, LINCL, JNCL, ANCL \\
     & CLN1 & Palmitoyl protein thioesterase 1 (PPT1) & INCL\tnote{*}, LINCL, JNCL, ANCL \\
     & CLN2 & Tripeptidyl peptidase 1 (TPP1) & LINCL, JNCL \\\hline
    Non-enzyme deficiencies & CLN3 & Transmembrane protein & JNCL\tnote{*} \\
     & CLN5 & Soluble; lysosomal & LINCL, JNCL, ANCL \\
     & CLN6 & Transmembrane protein; ER & LINCL, ANCL Kuf's Type A \\
     & CLN7 (MSFD8) & Transmembrane protein; Endolysosomal transporter & LINCL \\
     & CLN8 & Transmembrane protein; ER & LINCL \\
    \hline
\end{tabu}
\begin{tablenotes}
    \item[*] indicates main form of NCL associated with the gene
\end{tablenotes}
\caption{Classification of NCLs by CLN gene affected}
\label{table1}
\end{ThreePartTable}
\end{table} 

\end{document}

*据我所知,你不能使用\multirowtabu但如果我的答案接近你想要实现的目标,那似乎不是一个限制。

**\strut需要在包含确定行高的单元格的列中插入 A,以防止间距不正确

答案3

由于表格仅包含四列,而四列中的三列似乎需要自动换行,以防止表格变得太宽,因此不清楚您通过指定表格来实现什么目的列:

\begin{tabular}{|c p{3cm}|c p{2cm}|c p{5cm}|c p{2cm}|}

这四种c类型的列只会带来麻烦。忽略它们,事情就会开始步入正轨。

为了取得进一步进展,我建议您切换到环境tabularx,将表格的目标宽度设置为\textwidth,并将修改后的X列类型版本应用于第 2、3 和 4 列。我还会省略包装\multicolumn器。或者,删除垂直规则 - 相信我,它们不会被遗漏 - 并使用包的宏booktabs来获得间距良好的水平规则。

在此处输入图片描述

\documentclass{article}
\usepackage{tabularx,ragged2e,booktabs,amsmath}
\newcolumntype{L}[1]{>{\RaggedRight}p{#1}}
\newcolumntype{Z}{>{\RaggedRight}X}
\usepackage[flushleft]{threeparttable}

\hyphenation{endo-lyso-somal pep-tid-ase thio-ester-ase}
\newcommand\mytab[1]{\smash[b]{%
   \begin{tabular}[t]{@{}p{\hsize}@{}} #1 \end{tabular}}}

\begin{document}

\begin{table}
\setlength\extrarowheight{2pt}
\setlength\tabcolsep{4pt}
\begin{threeparttable}
\begin{tabularx}{\textwidth}{@{} L{2.25cm} l Z Z @{}}
\toprule
 & Gene & Protein & Disease \\
\midrule
\mytab{Soluble lysosomal enzyme deficiencies} & CLN10 (CTSD)  & Cathepsin D & Congenital\tnote{*}, LINCL, JNCL, ANCL \\
& CLN1 & Palmitoyl protein thioesterase 1 (PPT1) & INCL\tnote{*}, LINCL, JNCL, ANCL \\
& CLN2 & Tripeptidyl peptidase 1 (TPP1) & LINCL, JNCL \\
\addlinespace
Non-enzyme deficiencies & CLN3 & Transmembrane protein & JNCL\tnote{*} \\
& CLN5 & Soluble; lysosomal & LINCL, JNCL, ANCL \\
& CLN6 & Transmembrane protein; ER & LINCL, ANCL Kuf's Type A \\
& CLN7 (MSFD8) & Transmembrane protein; Endolysosomal transporter & LINCL \\
& CLN8 & Transmembrane protein; ER & LINCL \\
\bottomrule
\end{tabularx}

\smallskip
\begin{tablenotes}
\small
\item[*]indicates main form of NCL associated with the gene
\end{tablenotes}

\caption{Classification of NCLs by CLN gene affected \cite{haltia} }
\label{table1}
\end{threeparttable}
\end{table}

\end{document}

相关内容