Получение двух таблиц в LaTeX с одинаковой (по правому краю) шириной столбца - PullRequest
16 голосов
/ 19 февраля 2010

У меня есть два очень коротких и последовательных раздела (для резюме), каждый из которых содержит небольшую таблицу:

\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}

Итак, у каждой таблицы есть два столбца: первый содержит период, выровненный по правому краю.Второе: дополнительная информация с определенной шириной, выровненной по верху (и левому краю).

Проблема состоит в том, что ширина левого столбца в двух таблицах различна и неЭто выглядит красиво, поскольку разделы (поэтому таблицы) являются последовательными и находятся на одной странице.Я не могу дать r ширину, как p:

\begin{tabular}{r{11cm}|p{11cm}}

Не работает.Как я могу получить ширину первых столбцов двух таблиц одинаковой длины, при этом выровняв их по правому краю?

РЕДАКТИРОВАТЬ Спасибо за ответы, они все работают для меня, поэтому я проголосовалвсе они, и приняли тот, который понравился мне больше всего (и большинство проголосовало), так как вам не нужно указывать \hfill в каждой строке.Однако, если вы не хотите использовать пакет array по какой-либо причине, тогда другие решения также хороши.

Ответы [ 5 ]

17 голосов
/ 19 февраля 2010

Если вы используете пакет 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 голосов
/ 19 февраля 2010

Вот вариант ответа @ 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, чтобы заполнить ширину блока ввода, но вы можете изменить его на любой нужный вам размер.
  3. Я использовал \raggedright вместо \hfill: если элемент перемещается во вторую строку, \hfill будет выравнивать только правую первую строку абзаца.
  4. Был ли \multicol значимым? Я удалил его, чтобы сделать ответ максимально простым.

Запуск с XeTeX под TeXLive.

3 голосов
/ 19 февраля 2010

Вот одно из многих решений:

\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 голос
/ 19 февраля 2010

Пакет 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 голос
/ 19 февраля 2010

Вы можете задать оба параметра p {width} и ​​начать каждую ячейку слева с \hfill.

...