我现在正在格式化一个表格,但搞不清楚为什么这个表格右侧的水平线看起来不正常。您可以通过注释掉序言中的“\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<{$}}|}
你会得到更漂亮的表格(当然符合我的口味):