水平线不适合表格宽度 *UPD!*

水平线不适合表格宽度 *UPD!*

我现在正在格式化一个表格,但搞不清楚为什么这个表格右侧的水平线看起来不正常。您可以通过注释掉序言中的“\renewcommands”来更好地理解它。

第二点,注释掉几何包后我得到的输出中线条比表格宽度短。

为什么我的线条不适合这条线?我该如何修复它?如果我在这里不使用它,几何包会如何影响表格?

您将在下面找到代码。谢谢!

\documentclass[12pt,ansinew,a4paper]{article}

\usepackage{geometry}
\usepackage[table]{xcolor}
\usepackage[german]{babel} 
\usepackage{booktabs}
\usepackage{MnSymbol}

\newcolumntype{m}{>{$}c<{$}}

\renewcommand{\tabcolsep}{1.9ex}
\renewcommand{\arraystretch}{1.3}

\begin{document}
\rowcolors{1}{}{gray!15}
\begin{tabular*}{\textwidth}{|m|m|mmmmmm|}
\specialrule{0.08em}{0em}{0em}
A & B & \text{nicht} \ A & A \ \text{und} \ B & A \ \text{oder}\ B & A   \Rightarrow B & B \Rightarrow A & A \Leftrightarrow B\\
\specialrule{0.05em}{0em}{0em}
f & f & w & f & f & w & w & w\\
f & w & w & f & w & w & f & f\\
w & f & f & f & w & f & w & f\\
w & w & f & w & w & w & w & w\\
\specialrule{0.08em}{0em}{0em}
\end{tabular*}
\end{document}

答案1

线宽和表格宽度出现差异是因为您规定了表格宽度,但使用的列宽度与单元格内容的宽度之和小于文本宽度。

解决方案:不要{tabular*}{\textwidth}使用{tabularx}{\textwidth},而要使用适合性修改的tabularx列类型X。例如:

\documentclass[12pt,ansinew,a4paper]{article}
\usepackage{geometry}
\usepackage{amsmath}
\usepackage[table]{xcolor}
\usepackage{array,booktabs,tabularx}
\usepackage{caption}

\newcolumntype{m}{>{$}c<{$}}
\newcolumntype{C}{>{\centering \arraybackslash}X}
\renewcommand{\arraystretch}{1.3}

\begin{document}

\begin{table}[h]
\centering % <-- changed
\rowcolors{1}{}{gray!15}
\begin{tabularx}{\textwidth}{|>{$}C<{$}|>{$}C<{$}|*{6}{>{$}C<{$}}|}
\specialrule{0.08em}{0em}{0em}
A & B & \text{nicht} \ A & A \ \text{und} \ B & A \ \text{oder}\ B & A   \Rightarrow B & B \Rightarrow A & A \Leftrightarrow B\\
\hline%\specialrule{0.05em}{0em}{0em}
f & f & w & f & f & w & w & w\\
%\midrule
f & w & w & f & w & w & f & f\\
%\midrule
w & f & f & f & w & f & w & f\\
%\midrule
w & w & f & w & w & w & w & w\\
\hline%\specialrule{0.08em}{0em}{0em}
\end{tabularx}
\caption{Wahrheitstafel, $w$ = wahr $\land$ $f$ = falsch}
\end{table}
\end{document}

在此处输入图片描述

编辑: 使用tabularx表环境并不要求所有列都必须是某种X类型。您也可以使用来自的列类型tabular,但至少有一个必须是X类型或基于它。例如,如果在上面的 MWE 中,您将行替换为列的定义:

\begin{tabularx}{\textwidth}{|m|m|*{6}{>{$}C<{$}}|}

你会得到更漂亮的表格(当然符合我的口味):

在此处输入图片描述

相关内容