制作表格,使其标题不加宽列

制作表格,使其标题不加宽列

我有一张包含两列的表格。由于条目都是个位数的整数,我希望列的宽度刚好足以容纳条目。使用我的代码,标题会使列太宽。

另外,我想将标题排版为两行。如何将“特定函数”放在第一行,将“f 的值”放在第二行?

\documentclass{amsart}
\usepackage{adjustbox}
\usepackage{mathtools}

\usepackage{makecell}
\usepackage{array}

\begin{document}

\noindent \hspace*{\fill}
\setlength\extrarowheight{2pt}
\begin{tabular}{|| c | c ||} \hline
\multicolumn{2}{|| c ||}{{\bf Certain Function Values of \boldmath$f$\unboldmath}} \\ \Xhline{0.8pt}
    $x$ &   $f(x)$ \\ \Xhline{0.8pt}
    2   &   -1 \\ \hline
    3   &   0 \\ \hline
    4   &   2 \\ \hline
    5   &   -3 \\ \hline
    6   &   4 \\ \hline
    7   &   -5 \\ \hline
    8   &   6 \\ \hline
\end{tabular}

\end{document}

答案1

在将顶行保留为 的一部分的同时满足 OP 的限制是很困难的,因此我在这里使用我的包tabular将标题堆叠在 上方(tabularstackenginehttp://ctan.org/pkg/stackengine)。

\stackon{A}{B}语法将“A”放置在相对于基线的正常位置,而“B”放置在“A”上方。默认情况下,“A”顶部和“B”底部之间的间隙为 3pt,但可选参数可以更改该长度。此外,默认对齐方式为居中,但也可以通过设置模式参数进行更改。该包提供了其他命令,例如\stackunder{A}{B}将“B”放置在正常位置的“A”下方。我还使用了一个,\Longstack{}其中一系列由行尾 (EOL) 分隔符分隔的对象堆叠在一起,每行之间有恒定的基线跳跃间隔。

我还将破折号改为减号。

\documentclass{amsart}
\usepackage{adjustbox}
\usepackage{mathtools}

\usepackage{makecell}
\usepackage{array}
\usepackage{stackengine}\setstackEOL{\cr}
\begin{document}

\noindent \hspace*{\fill}
\setlength\extrarowheight{2pt}
\stackon{%
\begin{tabular}{|| c | c ||} \hline
    $x$ &   $f(x)$ \\ \Xhline{0.8pt}
    2   &   $-$1 \\ \hline
    3   &   0 \\ \hline
    4   &   2 \\ \hline
    5   &   $-$3 \\ \hline
    6   &   4 \\ \hline
    7   &   $-$5 \\ \hline
    8   &   6 \\ \hline
\end{tabular}%
}{\bfseries\Longstack{Certain Function\cr Values of \boldmath$f$}}
\end{document}

在此处输入图片描述

答案2

这是一个明显的例子,说明如何不构建表格,对不起。侧面的双垂直线毫无用处,标题下方的粗线也毫无用处。

如果您确实希望将标题全部放在一行上,那么几乎没什么可做的;一种可能性是使用嵌套表:

\documentclass{amsart}
\usepackage{siunitx,booktabs}

\begin{document}

\begin{tabular}{c}
\toprule
\bfseries\boldmath Certain Function Values of $f$ \\
\midrule
\begin{tabular}{S[table-format=1.0] S[table-format=-1.0]}
{$x$} & {$f(x)$} \\
\midrule
  2   &   -1 \\
  3   &    0 \\
  4   &    2 \\
  5   &   -3 \\
  6   &    4 \\
  7   &   -5 \\
  8   &    6
\end{tabular}\\
\bottomrule
\end{tabular}
\end{document}

在此处输入图片描述

另一种可能性是将标题分成两行,在两侧添加两个模拟列:

\documentclass{amsart}
\usepackage{siunitx,booktabs}

\begin{document}

\begin{tabular}{cS[table-format=1.0] S[table-format=-1.0]c}
\toprule
\multicolumn{4}{c}{\bfseries Certain Function} \\
\multicolumn{4}{c}{\bfseries\boldmath Values of $f$} \\
\midrule
\hspace*{2em} & {$x$} & {$f(x)$} & \hspace*{2em} \\
\midrule
&  2   &   -1 \\
&  3   &    0 \\
&  4   &    2 \\
&  5   &   -3 \\
&  6   &    4 \\
&  7   &   -5 \\
&  8   &    6 \\
\bottomrule
\end{tabular}
\end{document}

在此处输入图片描述

或者简单地使用浮动表:

\documentclass{amsart}
\usepackage{siunitx,booktabs}

\begin{document}

\begin{table}
\centering
\caption{Certain Function Values of $f$}

\begin{tabular}{S[table-format=1.0] S[table-format=-1.0]}
\toprule
{$x$} & {$f(x)$} \\
\midrule
  2   &   -1 \\
  3   &    0 \\
  4   &    2 \\
  5   &   -3 \\
  6   &    4 \\
  7   &   -5 \\
  8   &    6 \\
\bottomrule
\end{tabular}
\end{table}

\end{document}

在此处输入图片描述

相关内容