2009-11-04 43 views
64

Tôi có tài liệu LaTeX chứa đoạn văn, sau đó là 4 bảng, sau đó là đoạn thứ hai. Tôi muốn 4 bảng xuất hiện giữa hai đoạn mà từ những gì tôi đã read có nghĩa là tôi nên sử dụng tùy chọn [h] sau khi bắt đầu môi trường bảng (ví dụ: \begin{table}[h]).Định vị bảng LaTeX

Sử dụng hai bảng đầu tiên này xuất hiện sau đoạn 1 như mong đợi, tuy nhiên đoạn 2 sau đó được hiển thị với hai bảng cuối cùng xuất hiện trên trang sau. Làm thế nào tôi có thể nhận được các bảng xuất hiện ở vị trí chính xác?

Tôi đã thử nhiều cách khác nhau để sửa vị trí như sử dụng [h!] tuy nhiên điều này dường như không có bất kỳ ảnh hưởng nào. Sử dụng \clearpage sau khi các bảng có hiệu quả mong muốn làm cho các bảng xuất hiện trước đoạn thứ hai nhưng sau đó để lại hai bảng cuối cùng trên trang riêng của chúng với vô số khoảng trắng, khi tôi muốn đoạn thứ hai bắt đầu ngay lập tức sau những cái bàn.

Paragraph 1... 

\begin{table}[h] 
    table1... 
\end{table} 

\begin{table}[h] 
    table2... 
\end{table}[h] 
... 

Paragraph 2... 
+0

có thể [! H] thay vì [h!]? – Gacek

+0

Tôi đã thử điều đó là tốt và nó không có hiệu lực. –

+4

Thứ tự của (tất cả) các chữ cái trong đối số tùy chọn không có hiệu lực. –

Trả lời

122

Sau khi thực hiện một số chi tiết googling tôi đi qua các phao gói cho phép bạn ngăn chặn LaTeX từ tái định vị các bảng.

Trong lời mở đầu:

\usepackage{float} 
\restylefloat{table} 

Sau đó cho mỗi bảng, bạn có thể sử dụng tùy chọn H vị trí (ví dụ \begin{table}[H]) để đảm bảo nó không bị thay đổi vị trí.

+16

Có lẽ nó là giá trị nhấn mạnh rằng "H" nên được sử dụng và không phải "h". Đó là những gì tôi quan sát cho bản thân mình. – bikashg

3

Bạn có thể muốn thêm video này vào lời mở đầu của bạn, và điều chỉnh giá trị khi cần thiết:

%------------begin Float Adjustment 
%two column float page must be 90% full 
\renewcommand\dblfloatpagefraction{.90} 
%two column top float can cover up to 80% of page 
\renewcommand\dbltopfraction{.80} 
%float page must be 90% full 
\renewcommand\floatpagefraction{.90} 
%top float can cover up to 80% of page 
\renewcommand\topfraction{.80} 
%bottom float can cover up to 80% of page 
\renewcommand\bottomfraction{.80} 
%at least 10% of a normal page must contain text 
\renewcommand\textfraction{.1} 
%separation between floats and text 
\setlength\dbltextfloatsep{9pt plus 5pt minus 3pt } 
%separation between two column floats and text 
\setlength\textfloatsep{4pt plus 2pt minus 1.5pt} 

Riêng \ floatpagefraction có thể quan tâm.

2

Nếu bạn muốn có hai bảng bên cạnh mỗi khác mà bạn có thể sử dụng: (với float gói nạp)

\begin{table}[H] 
\begin{minipage}{.5\textwidth} 
    %first table 
\end{minipage} 
\begin{minipage}{.5\textwidth} 
    %second table 
\end{minipage} 
\end{table} 

Mỗi người sẽ có chú thích riêng và số. Tùy chọn khác là gói subfigure.

7

Điều gì xảy ra nếu văn bản cộng với bảng cộng với văn bản không vừa với một trang? Bằng cách cố gắng ép buộc sắp xếp theo cách này, bạn rất có khả năng kết thúc với các trang chạy quá ngắn; tức là, bởi vì một bảng không thể theo mặc định phá vỡ trên một trang, nó sẽ được đẩy sang trang tiếp theo và để lại một khoảng trống trên trang trước đó. Bạn sẽ nhận thấy rằng bạn không bao giờ thấy điều này trong một cuốn sách được xuất bản.

Hành vi nổi là một điều tốt! Tôi khuyên bạn nên sử dụng [htbp] làm cài đặt mặc định cho tất cả các bảng và hình cho đến khi tài liệu của bạn hoàn tất; chỉ sau đó nên suy nghĩ về tinh chỉnh vị trí chính xác của họ.

P.S. Đọc số FAQ; hầu hết các câu trả lời khác ở đây là một phần kết hợp của lời khuyên đưa ra ở đó.

+1

Hành vi trôi nổi tránh được không gian, nhưng việc di chuyển các con số sẽ khiến cuộc sống trở nên khó khăn hơn cho người đọc. Vì lý do này Edward Tufte, một nhà thiết kế quan trọng, khuyến cáo tích hợp văn bản và số liệu/bảng - trong các cuốn sách đã xuất bản của mình, ông không tham khảo các bảng theo số. "Xem Bảng 1" không xuất hiện, vì bảng chỉ ở đó. Anh ta chỉ đặt chúng vào đúng chỗ - giữa câu. Tôi đoán điều đó có nghĩa là làm nhiều việc hơn để bố trí các bảng nhưng ít làm việc hơn cho độc giả. – Blaisorblade

+0

@Blaisorblade - chắc chắn, và có những ví dụ đáng chú ý khác như vậy, nhưng tôi đề nghị rằng viết một văn bản theo cách như vậy là một thứ tự cường độ khó khăn hơn đối với hầu hết mọi người hơn là sử dụng phao. Bạn đang nói về việc loại bỏ 99% thiết kế sách cho một sự tối ưu không thể tránh khỏi. Hãy xem xét điểm tôi đưa ra trong câu trả lời của tôi: "nếu một bảng không thể vừa với văn bản?" Trong kịch bản của bạn phải thiết kế lại hoặc viết lại, và điều này là không thể bảo vệ trong nhiều tình huống. –

+1

Vâng, chúng tôi đồng ý về những gì tối ưu là-và có, thường xuyên nhất nó thực tế không thể thực hiện được. Trong cuộc sống hàng ngày, tôi cũng thường dính vào phao nổi. Nhưng tôi có các bảng nhỏ và số liệu nội tuyến, và nó hoạt động khá độc đáo (miễn là tôi kiểm tra phiên bản cuối cùng - dễ dàng chỉ vì tôi có tài liệu tối đa 20 trang). Tôi chỉ thấy nổi như một Tradeoff hợp lý hơn là một điều tốt :-). – Blaisorblade

4

Dưới đây là một giải pháp dễ dàng, từ Wikibooks:

Gói placeins cung cấp các lệnh \ FloatBarrier, có thể được sử dụng để ngăn chặn nổi từ được chuyển qua nó.

Tôi chỉ cần đặt \FloatBarrier trước và sau mỗi bảng.

8

này làm việc cho tôi,

vào đầu với usepackage định nghĩa bao gồm:

\usepackage{placeins} 

và trước và sau khi add:

\FloatBarrier 
\begin{table}[H] 
    \begin{tabular}{llll} 
     .... 
    \end{tabular} 
\end{table} 
\FloatBarrier 

này đặt bàn chính xác nơi bạn muốn trong văn bản.

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