Tabularx 使用整个表格宽度计算列宽

Tabularx 使用整个表格宽度计算列宽

我目前正在寻找一个潜在的禁忌替代品(见禁忌命令替换),但无法找到任何解决方案。

因此,我现在正在寻找某种东西来代替命令,至少能够替代 tabus 本身。我找到了一些解决小问题的方法,例如 \extrarowsep 和 math-mode-columns。但是,我无法获得与给定表格宽度相结合的自动列宽生成的任何可接受结果。我检查了 tabular、tabular*、tabularx 和 tabulary,但没有得到想要的结果。让我给你一个描述我的问题的 MWE:

\documentclass[11pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tabularx}

\begin{document}
1

\begin{tabular}{|>{$}l<{$}|l|l|l|}
\hline
x\, \in & A & B & C\\\hline
G_{g} & links unten & rechts oben & links unten\\\hline
\end{tabular}\vspace{2cm}

2

\begin{tabularx}{0.7\linewidth}{|>{$}l<{$}|l|l|l|}
\hline
x\, \in & A & B & C\\\hline
G_{g} & links unten & rechts oben & links unten\\\hline
\end{tabularx}\vspace{2cm}

3

\begin{tabularx}{0.7\linewidth}{|>{$}X<{$}|X|X|X|}
\hline
x\, \in & A & B & C\\\hline
G_{g} & links unten & rechts oben & links unten\\\hline
\end{tabularx}\vspace{2cm}

4

\begin{tabularx}{0.7\linewidth}{|>{$}X<{$}|l|l|l|}
\hline
x\, \in & A & B & C\\\hline
G_{g} & links unten & rechts oben & links unten\\\hline
\end{tabularx}
\end{document}

因此,表格 1 提供了所需的自动计算列宽功能。但据我所知,我无法给出所需的表格宽度。表格 2、3 和 4 可以做到这一点。但正如您所看到的,问题在于:

  • 所有 l 列(2):它们计算所需的列宽,但不使用整个表格宽度
  • 所有 X 列(3):它们使用表格宽度,但大小相同(据我理解:表格宽度在所有 X 列之间均匀分配)
  • 一个 X 列,其余 l 列 (4):略好;现在使用整个表格宽度,l 列具有计算良好的宽度,X 列使用其余部分。这样做有三个问题:
  1. 我总是必须包含不同的列类型
  2. 对于给定的示例,这可能没问题,但对于 0.4\linewidth 或 \linewidth 的表格宽度来说,看起来不太好
  3. 如果没有大量的(并且对于每个禁忌都是单独的)额外定义,X 列的宽度就没有灵活性。

长话短说:这些例子都没有给我相同的结果

\begin{tabu}to 0.7\linewidth{|X[-1l]|X[-1l]|X[-1l]|X[-1l]|}

会给我(表格宽度 0.7\linewidth 和合理但动态缩放的列,所有都具有相同的构造参数 [-1l])

现在我是不是漏掉了什么?我还发现了一些不错的额外定义,如 \hsize 和 \columnfill,但不知道如何构造所需的行为。

答案1

tblr有了新的 LaTeX3 包环境,一切都变得轻而易举tabularray

\documentclass{article}
\usepackage{tabularray}
\begin{document}
\begin{tblr}{width=0.8\linewidth,colspec={|X[2,l]|X[3,l]|X[-1,r]|X[r]|}}
\hline
 One & Two & Three & Four \\
\hline
\end{tblr}
\end{document} 

在此处输入图片描述

相关内容