латексная подкладка / край ада - PullRequest
3 голосов
/ 29 мая 2010

Я слишком долго боролся с латексным столом. Мне нужна таблица с центрированными заголовками и ячейки тела, содержащие текст, который можно обернуть вокруг. Из-за требования обтекания я использую p {xxx} вместо l для указания ширины ячейки. Проблема, которую это вызывает, состоит в том, что содержимое ячейки не выровнено по левому краю, поэтому оно выглядит как разложенный мусор Чтобы решить эту проблему, я использую \ flushleft для каждой ячейки. Это выравнивает содержимое по левому краю, но помещает тонну пустого пространства выше и ниже содержимого ячейки. Есть ли способ остановить \ flushleft (или \ center в этом отношении), чтобы прекратить добавлять обильное количество вертикальных пробелов?

спасибо

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

Спасибо за ответы до сих пор. Я думал, что нашел решение, которое работает, но эти проблемы все еще существуют:

  • использование \ raggedright не дает переносить длинные слова. Это выглядит довольно плохо, когда в ячейке содержится куча строк с одним словом.
  • Использование \ raggedright работает, только если вы заканчиваете его пустой строкой. Это приводит к тому, что каждая ячейка имеет полностью пустую строку внизу. Это было то, что я пытался избежать в первую очередь.

        {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
    

Ответы [ 4 ]

3 голосов
/ 29 мая 2010

Вам следует просто указать, как вы хотите, чтобы клетки тела формировались и измените только заголовки по центру с multicolumn. Таким образом, вы не приходится возиться со слишком многими клетками, как вы делаете прямо сейчас.

\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}
1 голос
/ 29 мая 2010

Опираясь на пример @ honk, думаю, вы захотите вот что:

\ documentclass {статья}

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

Слова по-прежнему не будут переноситься через дефис, но это должно решить проблему с пустой строкой.

1 голос
/ 29 мая 2010

Не самое элегантное решение, но команды \centering и \raggedright соответствуют средам center и flushleft и не имеют увеличенных полей.

Если я найду более хорошее решение, я опубликую его, но это может работать, я думаю.

0 голосов
/ 29 мая 2010

Не используйте параметры p в спецификации выравнивания столбцов, вместо этого используйте l. Затем в каждом заголовке используйте \hfill Somephone \hfill, а в каждой клетке тела - \vbox to 3cm {About text}. Это должно минимизировать избыточное заполнение.

...