2010-02-19 17 views
15

Tengo dos tramos muy cortos y consecutivos (para un CV), cada uno con una pequeña mesa:Obtención de dos tablas en látex para tener la misma (alineado a la derecha) ancho de columna

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

Así que cada tabla tiene dos columnas: la primera que contiene el período, alineada a la derecha. El segundo: algo más de información con un cierto ancho, alineado arriba (e izquierdo).

El problema es que el ancho de la columna de la izquierda en las dos tablas es diferente, y no se ve bien, ya que las secciones (por lo tanto tablas) son consecutivos y en una página. No puedo dar r un ancho igual p:

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

no funciona. ¿Cómo puedo obtener el ancho de las primeras columnas de las dos tablas con la misma longitud y al mismo tiempo tenerlas alineadas a la derecha?

EDITAR Gracias por las respuestas, todos ellos trabajan para mí, así que upvoted todos ellos, y aceptado el que me atrajo más (y más upvoted), ya que no tiene que especificar el \hfill en cada fila. Sin embargo, si no desea utilizar el paquete array por algún motivo, las otras soluciones también son excelentes.

+1

No hay una respuesta a sus preguntas como tal, pero utilizo el paquete currvita para mantener mi CV (bueno, con hacks adecuados ...): http://www.ctan.org/tex-archive/macros/latex/contrib/currvita /. De esa manera * usted * no tiene que lidiar con estos detalles. – dmckee

+0

Gracias por la sugerencia, así que compruébelo para la próxima versión :) – vahidg

Respuesta

16

Si utiliza el paquete array, usted puede poner el \hfill en la cabecera de la siguiente manera, por lo que no tiene que acordarse de ponerlo (o una \parbox) en cada fila.

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

para dar:

alt text http://www.freeimagehosting.net/uploads/5e29f675e3.jpg

1

Puede dar opciones de p {ancho} y comenzar cada celda de la izquierda con \hfill.

3

Aquí hay una solución de muchas posibilidades:

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

Básicamente, crear un \parbox con el ancho deseado y poner \hfill a la izquierda.

1

Puede utilizar array paquete para especificar un comando de llenado para cada fila de la primera columna:

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

Por ejemplo:

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

Aquí es una variante de la respuesta de @ RTBarnard utilizando el paquete 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} 

Notas:

  1. Por qué tabularx? Debido a que a menudo es más fácil saber el ancho que tiene disponible para toda la tabla, y para que TeX calcule los anchos de columna desconocidos.
  2. El primer parámetro es el ancho total de la tabla. Aquí, especifiqué \textwidth para llenar el ancho de typeblock, pero puedes cambiar eso a cualquier medida que necesites.
  3. He usado \raggedright en lugar de \hfill: si el elemento fluye a una segunda línea, \hfill solo alineará a la derecha la primera línea del párrafo.
  4. ¿Fue el \multicol significativo? Lo eliminé para mantener la respuesta lo más simple posible.

Ejecute con XeTeX bajo TeXLive.

+1

Para completar, me gustaría señalar que si desea poner esa especificación en la última columna, debe restablecer el significado de "\\" con '\ arraybacklash '. –

+0

Oye, no sabías eso, ¿podrías darme más detalles? –

+1

'\ raggedleft' cambia el significado de' \\ 'para hacer varias cosas mágicas. Ver '{\ ttfamily \ meaning \ raggedleft}'. '\ arraybackslash' cambiará su significado a aquel del entorno tabular. Estos cambios afectan solo al grupo actual, por lo que verá errores de compilación solo en la última columna. –

Cuestiones relacionadas