让LaTeX中的两个表格具有相同的(右对齐)列宽

16

我有两个非常短且连续的部分(用于简历),每个部分都包含一个小表格:

\section{Work Experience}

\begin{tabular}{r|p{11cm}}
Current & Your job at Your Company, Town \\
Jan 2009 & What your company does \\
& A description of what you do\\
\multicolumn{2}{c}{}\ 
\end{tabular}

\section{Education}

\begin{tabular}{r|p{11cm}}
Slightly wider first column & University, Town \\
Jan 2009 & Thesis subject \\
& A description of what you did\\
\multicolumn{2}{c}{}\ 
\end{tabular}
所以每个表格有两列:第一列包含周期信息,右对齐。第二列是某些具有特定宽度的更多信息,顶部(和左侧)对齐。
问题在于两个表格中左侧列的宽度不同,而且由于这些部分(因此表格)是连续的并在一页上,看起来不太好。我无法像 p 元素一样为 r 指定宽度:
\begin{tabular}{r{11cm}|p{11cm}}

无法正常工作。在两个表格的第一列具有相同长度的情况下,如何使它们靠右对齐并获取其宽度?

编辑 感谢答案,它们都对我有效,所以我投了所有人的票,并接受了最有吸引力(并且最受欢迎)的答案,因为您不必在每一行中指定\hfill。 但是,如果由于任何原因不想使用array包,则其他解决方案也非常好。


1
虽然不是直接回答你的问题,但我使用currvita包来维护我的简历(当然,需要适当的hack):http://www.ctan.org/tex-archive/macros/latex/contrib/currvita/。这样,*你*就不必处理这些细节了。 - dmckee --- ex-moderator kitten
感谢您的建议,我们会在下一个版本中进行检查 :) - vahidg
5个回答

17
如果您使用array包,您可以将\hfill放在标题中,如下所示,这样您就不必记住在每一行中放置它(或\parbox)。
\documentclass{article}
\usepackage{multicol}
\usepackage{array}
\begin{document}
\section{Work Experience}

\begin{tabular}{>{\hfill}p{5cm}|p{11cm}}
  Current & Your job at Your Company, Town \\
  Jan 2009 & What your company does \\
  & A description of what you do\\
  \multicolumn{2}{c}{} 
\end{tabular}

\section{Education}

\begin{tabular}{>{\hfill}p{5cm}|p{11cm}}
  Slightly wider first column & University, Town \\
  Jan 2009 & Thesis subject \\
  & A description of what you did\\
  \multicolumn{2}{c}{} 
\end{tabular}
\end{document}

赠送:

替代文本 http://www.freeimagehosting.net/uploads/5e29f675e3.jpg


6
这是@RTBarnard答案的一种变体,使用tabularx包:
注:该包可根据所给定宽度自动调整列宽。
\documentclass[a4paper,twoside,draft,12pt]{article}
\usepackage{tabularx}
\begin{document}

\section{Work Experience}

\begin{tabularx}{\textwidth}{>{\raggedleft}X|p{8cm}}
Current & Your job at Your Company, Town \\
Jan 2009 & What your company does \\
& A description of what you do\\
\end{tabularx}

\section{Education}

\begin{tabularx}{\textwidth}{>{\raggedleft}X|p{8cm}}
Somewhat wider than first column, 
overflowing into additional lines & University, Town \\
Jan 2009 & Thesis subject \\
& A description of what you did\\
\end{tabularx}
\end{document}

注意:

  1. 为什么使用tabularx?因为经常比较容易知道整个表格可用的宽度,并让TeX计算未知的列宽。
  2. 第一个参数是整个表格的宽度。在这里,我指定了\textwidth以填充typeblock的宽度,但您可以更改为所需的任何度量。
  3. 我使用了\raggedright而不是\hfill:如果项目流到第二行,\hfill只会将段落的第一行右对齐。
  4. \multicol是否重要?我已将其删除,以尽可能简化答案。

在TeXLive下使用XeTeX运行。


1
为了完成,我想指出如果你想把那个规范放在最后一列,你需要使用\arraybackslash来重置"\"的含义。 - Johannes Schaub - litb
嘿,我不知道,你能详细说明一下吗? - Brent.Longborough
1
\raggedleft 改变了 \\ 的含义,以执行各种神奇的操作。请参见 {\ttfamily\meaning\raggedleft}\arraybackslash 将其含义改回表格环境的含义。这些更改仅影响当前组,因此您只会在最后一列中看到编译错误。 - Johannes Schaub - litb

3
这里有一个解决方案,还有许多其他可能性:
\begin{tabular}{r|p{11cm}}
\parbox{11cm}{\hfill Current} & Your job at Your Company, Town \\
Jan 2009 & What your company does \\
& A description of what you do\\
\multicolumn{2}{c}{}\ 
\end{tabular}

基本上,创建一个具有所需宽度的 \parbox 并在左侧放置一个 \hfill

1

您可以使用array包为第一列中的每一行指定填充命令:

\begin{tabular}{>{\hfill}p{11cm}|p{11cm}|}

例如:

\documentclass{article}
\usepackage{array}
\begin{document}

\begin{tabular}{>{\hfill}p{5cm}|p{11cm}|}
This is a test & test
\end{tabular}

\begin{tabular}{>{\hfill}p{5cm}|p{11cm}|}
Test & this is a test
\end{tabular}
\end{document}

1

您可以同时给出p{width}选项,并在每个单元格左侧以\hfill开始。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接