2009-04-26 43 views
317

Tôi đang tạo báo cáo trong LaTeX bao gồm một vài bảng. Tôi bị mắc kẹt khi dữ liệu di động của tôi trong bảng vượt quá chiều rộng của trang. Tôi bằng cách nào đó có thể bọc văn bản để nó rơi vào dòng tiếp theo trong cùng một ô của bảng?Làm thế nào để bọc văn bản trong bảng LaTeX?

Có liên quan đến chiều rộng của bảng không? Nhưng khi nó vượt quá chiều rộng của trang, nó sẽ không tạo ra sự khác biệt, đúng không?

Trả lời

344

Sử dụng p {width} cho các chỉ định cột thay vì l/r/c.

\begin{tabular}{|p{1cm}|p{3cm}|} 
    This text will be wrapped & Some more text \\ 
\end{tabular} 
+23

Giải pháp tốt, nhưng mất '|' nếu bạn không muốn một đường viền quanh bàn. Sau đó nó sẽ trở thành '\ begin {tabular} {p {1cm} p {3cm}}' – Andrejas

+62

Có cách nào để thực hiện điều này trong khi vẫn chỉ định căn chỉnh trong mỗi ô không? –

+5

Tôi tìm thấy một cách để xác định căn chỉnh trong mỗi ô! Tạo macro! \ newcolumntype {L} {> {\ centering \ arraybackslash} m {.8cm}} \ begin {table *} [t] % \ nhỏ \ caption {So sánh} \ trung % \ begin {tabular} {| L | L | L | L | L | L | L L | L | L | L | L | L | L |} – Veridian

115

Với môi trường thường xuyên tabular, bạn muốn sử dụng các loại p{width} cột, như marcog chỉ ra. Nhưng điều đó buộc bạn phải cung cấp độ rộng rõ ràng.

Một giải pháp khác là môi trường tabularx:

\usepackage{tabularx} 
... 
\begin{tabularx}{\linewidth}{ r X } 
    right-aligned foo & long long line of blah blah that will wrap when the table fills the column width\\ 
\end{tabularx} 

cột Tất cả X có cùng chiều rộng. Bạn có thể ảnh hưởng này bằng cách thiết lập \hsize trong khai báo định dạng:

>{\setlength\hsize{.5\hsize}} X >{\setlength\hsize{1.5\hsize}} X 

nhưng sau đó tất cả các yếu tố này phải tổng hợp lên đến 1, tôi giả sử (Tôi mất này từ người bạn đồng hành LaTeX). Ngoài ra còn có gói tabulary sẽ điều chỉnh chiều rộng cột để cân bằng chiều cao hàng. Để biết chi tiết, bạn có thể lấy tài liệu cho mỗi gói với texdoc tabulary (trong TeXlive).

+3

Thú vị, trông rất hữu ích. Làm thế nào thông minh là nó khi nói đến việc lựa chọn chiều rộng cột? Ví dụ: nếu bạn có hai cột cần được bao bọc nhưng một cột có văn bản dài hơn nhiều so với cột khác, nó vẫn có chiều rộng bằng nhau không? – marcog

+2

Tôi đã chỉnh sửa câu trả lời của mình. Nhưng thực tế trong thực tế, tôi thử đơn giản hóa các bảng của tôi để tôi chỉ cần X cho một cột duy nhất. Tôi vừa phát hiện ra danh sách các thư viện :) –

39

lựa chọn khác là để chèn một minipage trong mỗi tế bào nơi văn bản gói là mong muốn, ví dụ:

\begin{table}[H] 
\begin{tabular}{l} 
\begin{minipage}[t]{0.8\columnwidth}% 
a very long line a very long line a very long line a very long line 
a very long line a very long line a very long line a very long line 
a very long line a very long line a very long line % 
\end{minipage}\tabularnewline 
\end{tabular} 
\end{table} 
+4

Cảm ơn, điều này cho phép tôi đặt danh sách 'itemize' trong các ô của mình. –

5

Nếu bạn muốn quấn văn bản của bạn, nhưng duy trì sự liên kết sau đó bạn có thể bọc tế bào rằng trong một minipage hoặc varwidth môi trường (varwidth đến từ gói varwidth). Varwidth sẽ là "rộng như nội dung của nó nhưng không rộng hơn X". Bạn có thể tạo ra một loại cột tùy chỉnh có vai trò như "p {xx}" nhưng co lại cho phù hợp bằng cách sử dụng

\newcolumntype{M}[1]{>{\begin{varwidth}[t]{#1}}l<{\end{varwidth}}} 

mà có thể yêu cầu các gói array. Sau đó, khi bạn sử dụng một cái gì đó như \begin{tabular}{llM{2in}} hai cột đầu tiên, chúng tôi được căn trái bình thường và cột thứ ba sẽ được căn trái bình thường nhưng nếu nó rộng hơn 2in thì văn bản sẽ được bao bọc.

-3
\begin{table} 
\caption{ Example of force text wrap} 
\begin{center} 
    \begin{tabular}{|c|c|} 
    \hline 
    cell 1  & cell 2 \\ \hline 
    cell 3    &  cell 4 & & very big line that needs to be wrap. \\ \hline 
    cell 5  & cell 6 \\ \hline 
    \end{tabular} 
    \label{table:example} 
\end{center} 
\end{table} 
24

Tôi thích sự đơn giản của tabulary gói:

\usepackage{tabulary} 
... 
\begin{tabulary}{\linewidth}{LCL} 
    \hline 
    Short sentences  & \# & Long sentences             \\ 
    \hline 
    This is short.  & 173 & This is much loooooooonger, because there are many more words. \\ 
    This is not shorter. & 317 & This is still loooooooonger, because there are many more words. \\ 
    \hline 
\end{tabulary} 

Trong ví dụ này, bạn sắp xếp toàn bộ chiều rộng của bảng liên quan đến \ textwidth. Ví dụ: 0,4 của nó. Sau đó phần còn lại được gói tự động thực hiện.

Hầu hết các ví dụ được lấy từ http://en.wikibooks.org/wiki/LaTeX/Tables.

+0

cảm ơn :) điều này phù hợp tốt cho các bảng dựa trên văn bản. – sb32134

Các vấn đề liên quan