2010-05-28 4 views
1

J'ai lutté avec une table en latex pendant trop longtemps. J'ai besoin d'une table qui a des en-têtes centrés, et des cellules de corps qui contiennent du texte qui peuvent envelopper. En raison de l'exigence de wrap-around, j'utilise p {xxx} au lieu de l pour spécifier les largeurs de cellules. Le problème que cela provoque est que le contenu des cellules ne sont pas justifiés à gauche, de sorte qu'ils ressemblent à des déchets espacés. Pour résoudre ce problème, j'utilise \ flushleft pour chaque cellule. Cela ne justifie pas le contenu, mais met dans une tonne d'espace blanc au-dessus et en dessous du contenu de la cellule. Y at-il un moyen d'arrêter \ flushleft (ou \ center d'ailleurs) d'arrêter d'ajouter des quantités copieuses d'espaces verical?rembourrage en latex/marge enfer

grâce

\begin{landscape} 
    \centering 
    % using p{xxx} here to wrap long text instead of overflowing it 
    \begin{longtable}{ | p{4cm} || p{3cm} | p{3cm} | p{3cm} | p{3cm} | p{3cm} |} 
     \hline 
     & 
     % these are table headings. the \center is causing a ton of whitespace as well 
     \begin{center} \textbf{HTC HD2} \end{center} & 
     \begin{center} \textbf{Motorola Milestone} \end{center} & 
     \begin{center} \textbf{Nokia N900} \end{center} & 
     \begin{center} \textbf{RIM Blackberry Bold 9700} \end{center} & 
     \begin{center} \textbf{Apple iPhone 3GS} \end{center} \\ 
     \hline 
     \hline 
     % using flushleft here to left-justify, but again it is causing a ton of white space above and below cell contents. 
     \begin{flushleft}OS/Platform \end{flushleft}& 
     \begin{flushleft}Windows Mobile 6.5 \end{flushleft}& 
     \begin{flushleft}Google Android 2.1 \end{flushleft}& 
     \begin{flushleft}Maemo \end{flushleft}& 
     \begin{flushleft}Blackberry OS 5.0 \end{flushleft}& 
     \begin{flushleft}iPhone OS 3.1 \end{flushleft} \\   
     \hline 

Edit:

Merci pour les réponses à ce jour. Je pensais que j'ai trouvé une solution qui fonctionne, mais ces problèmes existent toujours:

  • L'utilisation de \ raggedright empêche les mots longs d'être coupés. Cela semble très mauvais quand une cellule contient un tas de lignes avec un seul mot en eux.
  • L'utilisation de \ raggedright ne fonctionne que si vous terminez par une ligne vide. Cela provoque chaque cellule d'avoir une ligne complètement vide au fond de celle-ci. C'était ce que j'essayais d'éviter en premier lieu.

    {Display} & 
        {\raggedright 4.3 inch, 800 x 400 resolution} & 
        {\raggedright 3.7 inch, 854 x 480 resolution} & 
        {\raggedright 3.5 inch, 800 x 480 resolution} & 
        {\raggedright 2.44 inch, 320 x 480 resolution} & 
        {\raggedright 3.5 inch, 480 x 320 resolution} \\    
        \hline 
    

Répondre

3

Vous devriez vous contenter de spécifier comment vous voulez que les cellules de corps se forment et ne modifiez que les en-têtes centrés avec multicolumn. De cette façon, vous n'avez pas à jouer avec trop de cellules comme vous le faites en ce moment.

\documentclass{article} 

\begin{document} 
\begin{table} 
    \centering 
    \begin{tabular}{l|p{2cm}|p{2cm}} 
    \multicolumn{1}{c}{A} & 
    \multicolumn{1}{c}{B} & 
    \multicolumn{1}{c}{C} \\ 
    1 & {Some longer text} & {Some other text}\\ 
    2 & {Some longer text} & {Some other text}\\ 
    3 & {Some longer text} & {Some other text}\\ 
    4 & {Some longer text} & {Some other text} 
    \end{tabular} 
\end{table} 
\end{document} 
+0

c'est beaucoup plus simple que ce que je faisais. merci –

+0

Je réfléchissais à (une variante sur) cette approche, mais je ne sais pas si cela fonctionnerait. Merci d'avoir éclairci cela.C'est sûr que c'est une solution plus élégante que la mienne. – Pieter

1

pas la solution la plus élégante, mais le \centering et \raggedright commandes correspondent aux center et flushleft environnements et ne viennent pas avec les marges accrues.

Si je tombe sur une solution plus agréable, je l'afficherai, mais ce pourrait fonctionner je pense.

+0

pouvez-vous poster un extrait qui montre comment utiliser ruggedright? quelqu'un d'autre l'a suggéré aussi, mais je n'ai pas eu de chance de le faire fonctionner. A-t-il besoin d'être dans un environnement ou quelque chose? Merci pour l'aide –

+0

sympa, je l'ai eu à travailler avec raggedright. Incroyablement hacky cependant, j'ai dû ajouter une ligne vide supplémentaire après chaque chaîne de texte, et envelopper tout avec {} .... oh latex. –

1

Miser sur l'exemple de @ honk, je pense que vous voudriez ceci:

\ documentclass {article}

\begin{document} 
\begin{table} 
    \centering 
    \begin{tabular}{>{\raggedright}l|>{\raggedright}p{2cm}|>{\raggedright}p{2cm}|} 
    \multicolumn{1}{c}{A} & 
    \multicolumn{1}{c}{B} & 
    \multicolumn{1}{c}{C} \\ 
    1 & Some longer text & Some other text\\ 
    2 & Some longer text & Some other text\\ 
    3 & Some longer text & Some other text\\ 
    4 & Some longer text & Some other text \\ 
    \end{tabular} 
\end{table} 
\end{document} 

mots ne seront toujours pas césure, mais cela devrait résoudre le problème de ligne vide que vous rencontrez.

0

N'utilisez pas les options p dans la spécification d'alignement de colonnes, mais utilisez l à la place. Dans chaque en-tête, utilisez \hfill Somephone \hfill et dans chaque cellule, utilisez \vbox to 3cm {About text}. Cela devrait minimiser l'excès de rembourrage.