我已经问过如何在环境中最好地对齐表格中的标题行tabu
。
两个相同的解决方案对于一个表格来说效果很好,但我现在在另一个表格上遇到了问题。使用完全相同的技术,我无法正确对齐标题。这是我的示例以及下表的屏幕截图:
\documentclass[10pt,DIV=12,a4paper,numbers=noenddot]{scrreprt}
\usepackage{tabu}
\usepackage{multicol}
\usepackage{multirow}
\usepackage{longtable}
\usepackage{caption}
\usepackage{booktabs}
\usepackage{etoolbox}
\makeatletter
\newcommand{\changefont}[3]{\usefont{\f@encoding}{#1}{#2}{#3}}
\patchcmd{\LT@makecaption}{\hss}{\hss\normalfont\normalsize}{}{}
\makeatother
\newenvironment{myfont}[6][1.2] % 1.2 is the default for the baselinestretch
{\par\linespread{#1}\fontsize{#5}{#6}\changefont{#2}{#3}{#4}}
{\par}
\linespread{1.2}
\begin{document}
\begin{table}
\begin{myfont}{phv}{m}{n}{6}{9}
\begin{tabu}{l@{\hspace*{43pt}}r@{\hspace*{43pt}}r@{\hspace*{15pt}}r@{\hspace*{42pt}}rr@{\hspace*{42pt}}rr}
\multicolumn{1}{c}{column1} & \multicolumn{1}{c}{CC} & \multicolumn{1}{c}{column2} &
\multicolumn{1}{l}{column3} & \multicolumn{2}{c}{column4} &
\multicolumn{2}{c}{{\hspace*{12pt}}column5} \\
% \multicolumn{2}{c@{\hspace*{12pt}}}{column5} \\
% \multicolumn{1}{l}{column3{\hspace*{10pt}}}
& & & & AA & BB & AA & BB \\
\midrule
AAAAAAAAAAAA & BBBBBBB & BBBBBBB & BBBBBBB & BBBBBBB & BBBBBBB & BBBBBBB & BBBBBBB \\
AAAAAAAAAAAA & BBBBBBB & BBBBBBB & BBBBBBB & BBBBBBB & BBBBBBB & BBBBBBB & BBBBBBB \\
AAAAAAAAAAAA & BBBBBBB & BBBBBBB & BBBBBBB & BBBBBBB & BBBBBBB & BBBBBBB & BBBBBBB \\
\end{tabu}
\end{myfont}
\end{table}
\end{document}
从屏幕截图中可以清楚地看到,所有居中的{c}
列都不与列的其余部分对齐。我使用了\hspace
上一个问题中的方法,再次使用 来将第 5 列居中。但是,这似乎只有当位于 的大括号内而不是列内\multicolumn{2}{c}{{\hspace*{12pt}}column5}
时才有效,这与我之前的问题不同。我在列定义后注释掉了这种方法,向您展示了我是如何尝试这样做的。当我将它放在列内时,我没有忘记添加符号。\hspace
column5
{c}
@
{c}
然后我尝试将第 3 列居中。我将其左对齐,因为即使将其左对齐,它也已经太靠右了。所以我\hspace
在列名后添加了一些内容column3
,将其移回左侧。请参阅注释行:% \multicolumn{1}{l}{column3{\hspace*{10pt}}}
。但是,直到我添加了 40 pt 或更多 pt 后,什么也没发生。然后突然间,Latex 不再移动列标题,而是将从第 3 列开始的所有列向右移动,而将标题保留在原来的位置。
其他列也发生了同样的情况。有时标题没有移动。有时它们移动,但有时只是列的其余部分移动了。我想我只是很幸运,因为我之前的例子在那里起作用了。LaTeX 处理间距的方式似乎很随意,还是只是在我看来很随意?有人能帮忙正确对齐这些标题行吗?
答案1
这是上一个问题的精确重复,我在这里给出了答案,但我们应该将其关闭为重复,正如那里所述,您需要使用@
。此外,正如前面的问题所述,使用@
这种方式手动调整表格宽度以适应页面大小是一种非常容易出错的技术,而 tex 可以自动完成。
\documentclass[10pt,DIV=12,a4paper,numbers=noenddot]{scrreprt}
\usepackage{tabu}
\usepackage{multicol}
\usepackage{multirow}
\usepackage{longtable}
\usepackage{caption}
\usepackage{booktabs}
\usepackage{etoolbox}
\makeatletter
\newcommand{\changefont}[3]{\usefont{\f@encoding}{#1}{#2}{#3}}
\patchcmd{\LT@makecaption}{\hss}{\hss\normalfont\normalsize}{}{}
\makeatother
\newenvironment{myfont}[6][1.2] % 1.2 is the default for the baselinestretch
{\par\linespread{#1}\fontsize{#5}{#6}\changefont{#2}{#3}{#4}}
{\par}
\linespread{1.2}
\begin{document}
\begin{table}
\begin{myfont}{phv}{m}{n}{6}{9}
\begin{tabu}{l@{\hspace*{43pt}}r@{\hspace*{43pt}}r@{\hspace*{15pt}}r@{\hspace*{42pt}}rr@{\hspace*{42pt}}rr}
\multicolumn{1}{c@{\hspace*{43pt}}}{column1} &
\multicolumn{1}{c@{\hspace*{43pt}}}{CC} &
\multicolumn{1}{c@{\hspace*{15pt}}}{column2} &
\multicolumn{1}{l@{\hspace*{42pt}}}{column3} &
\multicolumn{2}{c@{\hspace*{42pt}}}{column4} &
\multicolumn{2}{c}{column5} \\
% \multicolumn{2}{c@{\hspace*{12pt}}}{column5} \\
% \multicolumn{1}{l}{column3{\hspace*{10pt}}}
& & & & AA & BB & AA & BB \\
\midrule
AAAAAAAAAAAA & BBBBBBB & BBBBBBB & BBBBBBB & BBBBBBB & BBBBBBB & BBBBBBB & BBBBBBB \\
AAAAAAAAAAAA & BBBBBBB & BBBBBBB & BBBBBBB & BBBBBBB & BBBBBBB & BBBBBBB & BBBBBBB \\
AAAAAAAAAAAA & BBBBBBB & BBBBBBB & BBBBBBB & BBBBBBB & BBBBBBB & BBBBBBB & BBBBBBB \\
\end{tabu}
\end{myfont}
\end{table}
\end{document}