此代码是更大文件的一部分:
\documentclass[11pt,BCOR8mm,final,linktocpage,twoside,open=right,headsepline,a4paper]{scrbook}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[pdftex]{graphicx}
\usepackage[pdftex]{color}
\usepackage[hang,small]{subfigure}
\usepackage[small,bf]{caption}
\usepackage[T1]{fontenc}
\typearea{10}
\usepackage{sidecap}
\usepackage{picins,extpic}
\usepackage{booktabs,colortbl,footmisc}
\usepackage{color,xcolor}
\usepackage{wallpaper}
\usepackage{fancybox}
\usepackage{wallpaper,eso-pic,watermark}
\usepackage[table]{xcolor}
\usepackage{array}
\usepackage{tabularx,hhline}
\begin{document}
\begin{center}
\begin{table}[htbp]
\begin{tabularx}{.7\linewidth}{||p{2.363in}*{2}{|r}||}
\hhline{|t:===:t|}
\cellcolor{gray!15} \textbf{Lage der Messfl\"ache} & {\cellcolor{gray!15} \textbf{Rechtswert [m]}} & {\cellcolor{gray!15} \textbf{Hochwert [m]}} \\
\hhline{|:=|=|=:|}
\cellcolor{gray!15} Das ist ein Test: Was passiert, wenn der Text sehr lange ist? & 345678.45 & 54346578.88 \\
\hhline{|b:===:b|}
\end{tabularx}
\end{table}
\end{center}
\end{document}
输出为:
两个问题:我怎样才能
避免使用“X”和“X(0)p”?我认为两者都应归因于 tabular.sty(第 119 行和第 121 行)。
对齐多行文本?
多谢。
答案1
使用您的 MWE,我无法重现您的图像(使用X
上表和X(0)p
前表,表格看起来不错。
我很好奇,为什么使用tabularx and than define only
p{..} and
r type columns? I sugest you to use only
tabular` 指定列的宽度:
\documentclass[11pt,BCOR8mm,final,linktocpage,twoside,open=right,headsepline,a4paper]{scrbook}
%\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[pdftex]{graphicx}
%\usepackage[pdftex]{color}% <-- surplus
\usepackage[hang,small]{subfigure}
\usepackage[small,bf]{caption}
%\usepackage[T1]{fontenc}
\typearea{10}
%\usepackage{sidecap}
%\usepackage{picins,extpic}
\usepackage{booktabs,colortbl,footmisc}
%\usepackage{color,xcolor} % <-- surplus
%\usepackage{wallpaper} % <-- surplus
\usepackage{fancybox}
%\usepackage{wallpaper,eso-pic,watermark}
\usepackage[table]{xcolor}
\usepackage{array}
\usepackage{tabularx,hhline}
\begin{document}
\begin{table}[htbp]
\centering
\begin{tabular}{||p{2.363in}*{2}{|r}||}
\hhline{|t:===:t|}
\cellcolor{gray!15} \textbf{Lage der Messfl\"ache} & {\cellcolor{gray!15} \textbf{Rechtswert [m]}} & {\cellcolor{gray!15} \textbf{Hochwert [m]}} \\
\hhline{|:=|=|=:|}
\cellcolor{gray!15} Das ist ein Test: Was passiert, wenn der Text sehr lange ist? & 345678.45 & 54346578.88 \\
\hhline{|b:===:b|}
\end{tabular}
\end{table}
\end{document}
这使:
或者使用tabularx and replace
p{...} width
X`:
\begin{table}[htbp]
\centering
\begin{tabularx}{0.8\textwidth}{||X*{2}{|r}||}
\hhline{|t:===:t|}
\cellcolor{gray!15} \textbf{Lage der Messfl\"ache} & {\cellcolor{gray!15} \textbf{Rechtswert [m]}} & {\cellcolor{gray!15} \textbf{Hochwert [m]}} \\
\hhline{|:=|=|=:|}
\cellcolor{gray!15} Das ist ein Test: Was passiert, wenn der Text sehr lange ist? & 345678.45 & 54346578.88 \\
\hhline{|b:===:b|}
\end{tabularx}
\end{table}
在这两个例子中,我使用了相同的前言。在其中,我标记了需要加载两次(一次就足够了)的包,并注释了那些我没有安装且对表格设计没有影响的包。在代码中,我替换了table 周围的 width命令begin{center} ... \end{center}
(这是错误的用法)。\centering
\begin{table}
在我看来,使用以下代码可以获得更好的结果:
\documentclass[11pt,BCOR8mm,final,linktocpage,twoside,open=right,headsepline,a4paper]{scrbook}
%\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[pdftex]{graphicx}
\usepackage[hang,small]{subfigure}
\usepackage[small,bf]{caption}
\usepackage[T1]{fontenc}
\typearea{10}
\usepackage{booktabs,colortbl,footmisc}
\usepackage{fancybox}
\usepackage[table]{xcolor}
\usepackage{array,tabularx,hhline}
\usepackage{siunitx}
\begin{document}
\begin{table}[htbp]
\centering
\begin{tabularx}{0.85\textwidth}{||>{\raggedright\arraybackslash}X
*{2}{|S[table-format=8.3]}||}
\hhline{|t:===:t|}
\cellcolor{gray!15} \textbf{Lage der Messfl\"ache} & {\cellcolor{gray!15} \textbf{Rechtswert [m]}} & {\cellcolor{gray!15} \textbf{Hochwert [m]}} \\
\hhline{|:=|=|=:|}
\cellcolor{gray!15} Das ist ein Test: Was passiert, wenn der Text sehr lange ist? & 345678.45 & 54346578.88 \\
\hhline{|b:===:b|}
\end{tabularx}
\end{table}
\end{document}
这使:
如您所见,对于最后两列的数字,我使用了S
(添加的)包提供的列类型siunitx
。