Bảng trong LaTeX nên dùng ba đường kẻ của gói booktabs, bảng dài qua nhiều trang dùng longtable, hình nhiều khung dùng subfigure của gói subcaption. Hình và bảng là vật trôi (float): LaTeX tự chọn chỗ đặt, và bạn chỉ điều khiển bằng tuỳ chọn vị trí.
Người mới hay khó chịu vì hình nhảy sang trang khác, bảng kẻ ô chi chít, hai hình con không thẳng hàng. Cả ba đều có cách xử lý gọn. Các đoạn mã dưới đây là mã tối thiểu chạy được; gói cần nạp được ghi rõ.
Bảng ba đường kẻ với booktabs
Vì sao bỏ đường kẻ dọc
Bảng trong bài báo khoa học hiếm khi cần đường dọc và đường ngang giữa mọi hàng. Ba đường kẻ — trên cùng, dưới hàng tiêu đề, dưới cùng — với khoảng cách hợp lý dễ đọc hơn, và là kiểu nhiều nhà xuất bản dùng.
Mã mẫu
Nạp \usepackage{booktabs} ở phần đầu, rồi:
\begin{table}[htbp]\centering\caption{Đặc điểm mẫu khảo sát}\label{tab:mau}\begin{tabular}{lrr}\topruleNhóm & Số người & Tỷ lệ (\%) \\\midruleNam & 120 & 48,0 \\Nữ & 130 & 52,0 \\\bottomrule\end{tabular}\end{table}
Số trong ví dụ là số giả định để minh hoạ. Đặt \caption trước \label, nếu không tham chiếu sẽ trỏ sai số. Chú thích bảng thường đặt trên bảng, chú thích hình đặt dưới hình; kiểm hướng dẫn của tạp chí.
Căn số theo dấu thập phân
Gói siunitx cung cấp kiểu cột S căn số theo dấu thập phân. Với số viết dấu phẩy thập phân kiểu Việt, khai tuỳ chọn output-decimal-marker của gói cho khớp. Ô tiêu đề trong cột S phải bọc trong ngoặc nhọn để gói không cố đọc chữ như số.
Bảng dài qua nhiều trang
Môi trường tabular không ngắt trang; bảng dài hơn một trang sẽ tràn ra ngoài lề dưới. Gói longtable giải quyết bằng môi trường cùng tên, cho phép khai hàng tiêu đề lặp lại ở mỗi trang. Bốn lệnh cần nhớ: phần trước \endfirsthead là tiêu đề trang đầu, phần trước \endhead là tiêu đề các trang sau, phần trước \endfoot là chân bảng các trang giữa (thường ghi bảng còn tiếp), phần trước \endlastfoot là chân bảng trang cuối.
Trước khi dựng bảng dài, tự hỏi bảng đó có nên nằm trong thân bài không. Danh sách đầy đủ các biến, danh mục mẫu, bảng mã hoá thường hợp với phụ lục hoặc tệp dữ liệu bổ sung hơn; thân bài chỉ giữ phần người đọc cần để hiểu lập luận. Tạp chí cũng thường giới hạn số bảng và hình trong bài chính, nên bảng dài đặt trong phụ lục còn giúp bạn giữ bài trong giới hạn đó.
Bảng longtable không đặt trong môi trường table vì nó không phải vật trôi; chú thích viết bằng \caption ngay trong bảng. Gói xltabular kết hợp bảng dài với cột tự giãn kiểu tabularx, hữu ích khi một cột chứa đoạn mô tả dài. Bảng dài cần biên dịch hai đến ba lần để độ rộng cột ổn định.
Vì sao hình bị trôi và cách điều khiển
Hình và bảng là vật trôi: LaTeX đặt chúng ở chỗ hợp lý nhất theo các tuỳ chọn bạn cho phép, tránh để trang lổn nhổn khoảng trắng. Tuỳ chọn nằm trong ngoặc vuông sau tên môi trường.
| Tuỳ chọn | Ý nghĩa | Khi nên dùng |
|---|---|---|
h | Đặt ở đây, nếu đủ chỗ | Luôn kết hợp với các tuỳ chọn khác |
t | Đầu trang | Hầu hết hình và bảng |
b | Cuối trang | Hình nhỏ |
p | Trang riêng chỉ chứa vật trôi | Hình hoặc bảng lớn gần một trang |
! | Nới bớt các giới hạn về tỷ lệ khoảng trống | Khi hình nhỏ mà vẫn bị đẩy đi |
H (gói float) | Bắt buộc đặt đúng tại chỗ, không trôi | Hạn chế; dễ sinh khoảng trắng lớn |
Tổ hợp [htbp] là lựa chọn an toàn cho hầu hết trường hợp. Nếu hình trôi qua cả mục khác, gói placeins với tuỳ chọn section ngăn vật trôi vượt qua đầu mục mới; lệnh \FloatBarrier của gói này buộc mọi vật trôi chờ đặt phải được đặt trước điểm đó.
Trong văn bản, luôn tham chiếu bằng \ref (“như Hình 3”) thay vì viết “hình dưới đây”, vì hình có thể không nằm ngay dưới.
Hình nhiều khung với subcaption
Mã mẫu hai khung cạnh nhau
Nạp \usepackage{graphicx} và \usepackage{subcaption}, rồi:
\begin{figure}[htbp]\centering\begin{subfigure}[b]{0.48\textwidth}\centering\includegraphics[width=\linewidth]{hinh/vungA}\caption{Vùng A}\label{fig:vungA}\end{subfigure}\hfill\begin{subfigure}[b]{0.48\textwidth}\centering\includegraphics[width=\linewidth]{hinh/vungB}\caption{Vùng B}\label{fig:vungB}\end{subfigure}\caption{So sánh hai vùng nghiên cứu}\label{fig:sosanh}\end{figure}
Tổng độ rộng hai khung cộng khoảng cách không vượt \textwidth. Dòng trống giữa hai khung con sẽ đẩy khung sau xuống hàng mới; muốn hai hàng, cố ý để một dòng trống hoặc dùng \par.
Căn đáy hay căn đỉnh
Tuỳ chọn [b] căn các khung theo đáy, giúp chú thích con thẳng hàng khi hai hình cao khác nhau. Tốt hơn nữa là xuất hai hình với cùng tỷ lệ khung từ phần mềm vẽ để không phải căn.
Tham chiếu khung con
\ref{fig:vungA} cho ra dạng số kèm chữ cái của khung con, ví dụ 3a. Không đặt chữ a, b vào trong ảnh nếu đã dùng chú thích con, vì sẽ ra hai lớp nhãn.
Chèn hình vector thay vì ảnh chụp màn hình
Xuất PDF từ phần mềm vẽ. R (hàm ggsave với đuôi .pdf), Python (matplotlib savefig với đuôi .pdf), Inkscape đều xuất được PDF vector. Hình vector phóng to không vỡ, chữ trong hình sắc nét, và tệp thường nhẹ hơn ảnh độ phân giải cao.
Chữ tiếng Việt trong hình. Kiểm chữ có dấu trong hình xuất ra; trong R, thiết bị cairo_pdf xử lý UTF-8 tốt hơn thiết bị PDF mặc định. Nên dùng cùng họ phông với thân bài để hình và chữ trông liền mạch.
Tệp SVG. LaTeX không chèn trực tiếp SVG bằng \includegraphics. Chuyển SVG sang PDF bằng Inkscape là cách ổn định nhất; gói svg làm việc này tự động nhưng cần Inkscape và quyền chạy lệnh ngoài khi biên dịch.
Ảnh chụp, ảnh hiển vi. Dùng PNG cho ảnh có vùng màu phẳng và JPG cho ảnh chụp; giữ độ phân giải đủ cho khổ in theo yêu cầu của tạp chí, không phóng to ảnh nhỏ.
Bảng kết quả có chú thích dưới bảng
Chú thích dưới bảng
Bảng kết quả hồi quy hay cần dòng ghi chú bên dưới: mức ý nghĩa, nguồn số liệu, giải thích ký hiệu. Gói threeparttable giữ phần ghi chú rộng đúng bằng bảng: đặt tabular trong môi trường threeparttable, rồi môi trường tablenotes sau bảng. Đánh dấu ô cần chú thích bằng lệnh \tnote{a}.
Gộp ô
Gộp nhiều cột cho một tiêu đề chung bằng \multicolumn{2}{c}{Mô hình 1}, kèm \cmidrule(lr){2-3} của booktabs để kẻ đường ngắn dưới tiêu đề đó. Gộp hàng dùng gói multirow, nhưng bảng ba đường kẻ thường đọc tốt hơn nếu tránh gộp hàng.
Kiểm hình và bảng trước khi nộp
- Mọi hình và bảng đều được nhắc trong văn bản bằng
\ref, theo đúng thứ tự xuất hiện. - Chữ trong hình đọc được ở cỡ in thật; phóng PDF về 100% để kiểm.
- Đơn vị đo ghi ở tiêu đề cột hoặc trục, không lặp trong từng ô.
- Số thập phân thống nhất dấu (phẩy hay chấm) và số chữ số trong cả bảng.
- Tệp hình nộp riêng (nếu tạp chí yêu cầu) đúng định dạng và độ phân giải; tên tệp khớp lệnh chèn hình.
Lỗi hay gặp với bảng và hình
- Bảng tràn lề phải: giảm cột, đổi cột chữ dài sang kiểu
p{3cm}để xuống dòng, hoặc dùngtabularx; tránh thu nhỏ cả bảng bằng\resizeboxvì chữ sẽ nhỏ hơn thân bài. - Số tham chiếu sai:
\labelđặt trước\caption. - Ký tự
%,&,_trong ô bảng làm lỗi: thoát bằng dấu gạch chéo ngược. - Hình dồn hết về cuối chương: quá nhiều vật trôi liên tiếp, thêm tuỳ chọn
phoặc chia lại vị trí trong văn bản. - Hình không hiện, chỉ khung trống: đang bật tuỳ chọn
draftcủa lớp tài liệu hoặc góigraphicx. - Báo không tìm thấy tệp hình dù tệp có trong dự án: tên tệp có dấu tiếng Việt, khoảng trắng hoặc khác chữ hoa chữ thường so với lệnh chèn; Overleaf chạy trên Linux nên phân biệt hoa thường. Đổi tên tệp sang chữ thường không dấu, nối bằng gạch nối.
- Chú thích hình in chữ Figure thay vì Hình: thiếu babel tiếng Việt, hoặc lớp tài liệu của nhà xuất bản cố định chữ này; với mẫu nhà xuất bản, giữ nguyên.
Câu hỏi thường gặp
Có nên dùng công cụ tạo bảng trực tuyến cho LaTeX không?
Có thể dùng để dựng nhanh bảng lớn từ dữ liệu, nhưng nên dọn lại mã: bỏ đường kẻ thừa, đổi sang lệnh booktabs, thoát các ký tự đặc biệt. Mã sinh tự động thường dài và khó sửa về sau.
Làm sao đặt bảng nằm ngang trên trang?
Dùng gói rotating với môi trường sidewaystable thay cho table. Bảng sẽ xoay chín mươi độ và chiếm một trang riêng. Hợp với bảng nhiều cột như kết quả hồi quy nhiều mô hình.
Có thể xuất bảng kết quả trực tiếp từ R hoặc Python sang LaTeX không?
Có. Nhiều gói của R và thư viện pandas của Python xuất được bảng sang mã LaTeX, một số hỗ trợ sẵn kiểu booktabs. Xuất ra tệp riêng rồi nạp bằng input giúp cập nhật bảng khi chạy lại phân tích.
Hình chèn vào bị mờ dù ảnh gốc nét, vì sao?
Thường do ảnh nhỏ bị phóng to để vừa chiều rộng, hoặc ảnh đã bị nén khi chép qua công cụ khác. Xuất lại hình ở dạng vector hoặc ở độ phân giải cao hơn, và đặt chiều rộng không vượt kích thước thật của ảnh.
Có cần đặt mọi hình trong môi trường figure không?
Không bắt buộc, nhưng chỉ hình trong figure mới có chú thích đánh số và xuất hiện trong danh mục hình. Với bài báo và luận án, nên đặt mọi hình có chú thích trong figure.