Получение двух таблиц в LaTeX с одинаковой (выровненной по правому краю) шириной столбца

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

\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, тогда подойдут и другие решения.


person vahidg    schedule 19.02.2010    source источник
comment
Не ответ на ваши вопросы как таковые, но я использую пакет currvita для поддержки своего резюме (ну, с подходящими хаками ...): ctan.org/tex-archive/macros/latex/contrib/currvita. Таким образом, вам не придется иметь дело с этими деталями.   -  person dmckee --- ex-moderator kitten    schedule 20.02.2010
comment
Спасибо за подсказку, что ж, посмотрим на следующую версию :)   -  person vahidg    schedule 21.02.2010


Ответы (5)


Если вы используете пакет 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

person Ramashalanka    schedule 19.02.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.

person Brent.Longborough    schedule 19.02.2010
comment
В заключение я хотел бы отметить, что если вы хотите поместить эту спецификацию в последний столбец, вам нужно сбросить значение \\, используя \arraybackslash. - person Johannes Schaub - litb; 22.02.2010
comment
Эй, не знал, не могли бы вы уточнить? - person Brent.Longborough; 22.02.2010
comment
\raggedleft меняет значение \\ , чтобы делать различные магические вещи. См. {\ttfamily\meaning\raggedleft}. \arraybackslash изменит свое значение обратно на табличную среду. Эти изменения влияют только на текущую группу, поэтому вы увидите ошибки компиляции только в последнем столбце. - person Johannes Schaub - litb; 22.02.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 слева.

person RTBarnard    schedule 19.02.2010

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

person Charles Stewart    schedule 19.02.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}
person Alok Singhal    schedule 19.02.2010