Penentuan posisi tabel LaTeX

99

Saya memiliki dokumen LaTeX yang berisi paragraf diikuti oleh 4 tabel diikuti oleh paragraf kedua. Saya ingin 4 tabel muncul di antara dua paragraf yang dari apa yang saya baca berarti saya harus menggunakan opsi [h] setelah memulai lingkungan tabel (mis \begin{table}[h].).

Dengan menggunakan ini, dua tabel pertama muncul setelah paragraf 1 seperti yang diharapkan, namun paragraf 2 kemudian ditampilkan dengan dua tabel terakhir muncul di halaman berikutnya. Bagaimana saya bisa menampilkan tabel di lokasi yang benar?

Saya telah mencoba berbagai hal untuk memperbaiki posisi seperti menggunakan [h!]namun ini sepertinya tidak berpengaruh. Menggunakan \clearpagesetelah tabel memang memiliki efek yang diinginkan untuk membuat tabel muncul sebelum paragraf kedua tetapi kemudian meninggalkan dua tabel terakhir di halaman mereka sendiri dengan banyak ruang kosong, ketika saya lebih suka paragraf kedua dimulai segera setelah paragraf tabel.

Paragraph 1...

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

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

Paragraph 2...
Jared Russell
sumber
Saya mencobanya juga dan tidak berpengaruh.
Jared Russell
6
Urutan (semua) huruf dalam argumen opsional tidak berpengaruh.
Will Robertson
@Gacek, saya yakin Will Robertson benar. Menurut mintaka.sdsu.edu/GF/bibliog/latex/floats.html , "[t] dia argumen dalam tanda kurung memberitahu LaTeX di mana memungkinkan untuk meletakkan float; urutannya tidak penting."
Waldir Leoncio
Ini hanya sedikit terkait, tetapi saya rasa penting untuk diketahui: Opsi [h] tidak boleh digunakan sendiri, dan kenyataannya, versi LaTeX yang lebih baru menggantikannya dengan [ht] secara otomatis. Itu mungkin masalahmu juga. Anda dapat membaca lebih lanjut dalam panduan ini di bagian 17.2 "Penempatan Gambar".
vauhochzett
@Gacek [h!]adalah versi yang benar. Itu sama dengan [H]. Keduanya membutuhkan floatpaket.
winklerrr

Jawaban:

171

Setelah melakukan googling lagi, saya menemukan paket float yang memungkinkan Anda mencegah LaTeX memposisikan ulang tabel.

Dalam pembukaan:

\usepackage{float}
\restylefloat{table}

Kemudian untuk setiap tabel Anda dapat menggunakan Hopsi penempatan (mis. \begin{table}[H]) Untuk memastikan posisinya tidak berubah.

Jared Russell
sumber
22
Mungkin perlu ditekankan bahwa "H" harus digunakan dan bukan "h". Itulah yang saya amati sendiri.
bikashg
@bikashg Hsetara dengan h!(untuk informasi lebih lanjut tentang parameter, periksa jawaban saya di sini )
winklerrr
1
Jika seseorang menggunakan mode org, letakkan ini di atas: #+LATEX_HEADER: \usepackage{float} #+LATEX_HEADER: \restylefloat{table} Dan kemudian, #+CAPTION: A table #+NAME: tab:table-label #+ATTR_LATEX: :placement [H] :center t <<actual table content>> Maafkan format baris baru yang buruk di komentar.
Gaurav
24

Ini berhasil untuk saya:

Di awal dengan usepackagedefinisi antara lain:

\usepackage{placeins}

Dan sebelum dan sesudah tambahkan:

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

Ini menempatkan tabel tepat di tempat yang Anda inginkan dalam teks.

Don Giulio
sumber
Ini adalah paket yang sangat berguna. Terima kasih telah berbagi!
John David
12

Penempatan Tabel

Parameter yang Tersedia

Sebuah tabel dapat dengan mudah ditempatkan dengan parameter berikut:

  • hLetakkan pelampung di sini , yaitu kira-kira pada titik yang sama muncul di teks sumber (namun, tidak tepat di tempat)
  • tPosisikan di bagian atas halaman.
  • bPosisikan di bagian bawah halaman.
  • pLetakkan di halaman khusus untuk pelampung saja.
  • ! Timpa parameter internal yang digunakan LaTeX untuk menentukan posisi float yang "baik".
  • HMenempatkan pelampung tepat di lokasi dalam kode LATEX. Membutuhkan paket float. Ini agak setara dengan h!.

Jika Anda ingin menggunakan H(atau h!) untuk penentuan posisi yang tepat, pastikan Anda telah menyiapkan floatpaket dengan benar di pembukaan:

\usepackage{float}
\restylefloat{table}

Contoh

Jika Anda ingin menempatkan tabel pada halaman yang sama, baik di tempat yang tepat atau setidaknya di bagian atas halaman (yang paling cocok untuk mesin lateks), gunakan parameter hdan tseperti ini:

\begin{table}[ht]
    table content ...
\end{table}

Sumber: Overleaf.com

winklerrr
sumber
7

Apa yang terjadi jika teks plus tabel plus teks tidak pas dengan satu halaman? Dengan mencoba memaksakan pengaturan huruf dengan cara ini, kemungkinan besar Anda akan mendapatkan halaman yang terlalu pendek; yaitu, karena sebuah tabel tidak dapat secara default merusak halaman, maka akan didorong ke halaman berikutnya, dan meninggalkan celah pada halaman sebelumnya. Anda akan melihat bahwa Anda tidak pernah melihat ini di buku yang diterbitkan.

Perilaku mengambang adalah Hal yang Baik! Saya merekomendasikan menggunakan [htbp]sebagai pengaturan default untuk semua tabel dan gambar sampai dokumen Anda selesai; hanya kemudian harus berpikir untuk menyempurnakan penempatan tepatnya.

PS Baca FAQ ; kebanyakan jawaban lain di sini adalah kombinasi parsial dari nasihat yang diberikan di sana.

Will Robertson
sumber
1
Perilaku mengambang menghindari meninggalkan ruang, tetapi memindahkan sosok menjauh membuat hidup lebih sulit bagi pembaca. Untuk alasan ini Edward Tufte, seorang desainer penting, merekomendasikan untuk mengintegrasikan teks dan gambar / tabel - dalam buku terbitannya, dia tidak mengacu pada tabel dengan angka. "Lihat Tabel 1" tidak muncul, karena tabel hanya ada di sana. Dia hanya menempatkannya di tempat yang tepat - di tengah kalimat. Saya rasa itu berarti melakukan lebih banyak pekerjaan untuk menyusun tabel tetapi lebih sedikit pekerjaan untuk pembaca.
Blaisorblade
@Blaisorblade - tentu, dan ada contoh penting lainnya, tetapi saya mengusulkan bahwa menulis teks sedemikian rupa adalah urutan besarnya lebih sulit bagi kebanyakan orang daripada menggunakan pelampung. Anda sedang berbicara tentang membuang 99% desain buku untuk hasil optimal yang tidak dapat dicapai. Pertimbangkan poin yang saya buat dalam jawaban saya: 'bagaimana jika tabel tidak muat di bawah teks?' Dalam skenario Anda harus mendesain ulang atau menulis ulang, dan ini tidak dapat dipertahankan dalam banyak situasi.
Will Robertson
1
Nah, kami sepakat tentang apa yang optimal - dan ya, paling sering secara praktis tidak dapat dicapai. Dalam kehidupan sehari-hari saya juga biasanya menggunakan pelampung. Tetapi saya memiliki tabel kecil dan gambar sebaris, dan bekerja dengan baik (asalkan saya memeriksa versi final-yang mudah hanya karena saya memiliki dokumen paling banyak 20 halaman). Saya hanya melihat floating sebagai Pengorbanan yang Wajar daripada Hal yang Baik :-).
Blaisorblade
Apa perbedaan antara pengaturan [htbp]dan bukan tidak sama sekali?
Waldir Leoncio
@WaldirLeoncio setidaknya untuk saya, sama sekali tidak ada default untuk [ht]daripada[htbp]
MrJonas
7

Inilah solusi mudah, dari Wikibooks :

Paket placeins menyediakan perintah \ FloatBarrier, yang dapat digunakan untuk mencegah float dipindahkan di atasnya.

Saya hanya meletakkan \FloatBarriersebelum dan sesudah setiap meja.

Jason Bertels
sumber
4

Jika Anda ingin memiliki dua tabel di samping satu sama lain, Anda dapat menggunakan: (dengan floatpaket dimuat)

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

Masing-masing memiliki keterangan dan nomor sendiri. Pilihan lainnya adalah subfigurepaket.

Crowley
sumber
3

Anda mungkin ingin menambahkan ini ke pembukaan Anda, dan menyesuaikan nilainya seperlunya:

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

Secara khusus, \ floatpagefraction mungkin menarik.

Mika
sumber
0

Untuk menempatkan keterangan di atas tabel mengambang yang diposisikan [H], sisipkan baris berikut di pembukaan:

\usepackage{float}
\floatstyle{plaintop}
\restylefloat{table}
CW
sumber