Như các bạn đã biết, trình bày dữ liệu dưới dạng bảng sẽ đem lại cho người dùng rất nhiều lợi ích. Vì vậy mà bảng thường được sử dụng rất nhiều trong quá trình học tập cũng như là làm việc.
Ở trong bài viết trước thì mình đã hướng dẫn cho các bạn khá chi tiết và đầy đủ về cách tạo và định dạng bảng trong LaTeX với sự hỗ trợ của gói lệnh tabular
Tuy nhiên, gói lệnh tabular
chỉ hỗ trợ chúng ta tạo bảng nằm gọn trong một trang. Trường hợp bạn cần tạo một bảng dài nằm qua nhiều trang thì bạn phải sử dụng gói lệnh longtable
Bài viết này sẽ giúp bạn biết cách sử dụng gói lệnh này, đồng thời mình cũng sẽ hướng dẫn các bạn tô màu cho bảng bằng gói lệnh colortbl
Đọc thêm:
- Cách định dạng văn bản trong LaTex chuẩn nhất !
- Hướng dẫn tạo và định dạng bảng trong LaTeX (nâng cao)
Mục Lục Nội Dung
I. Cách tạo bảng dài trong LaTex
Chẳng hạn, chúng ta cần tạo một cái bảng như hình bên dưới. Bảng này nằm trải dài qua 3 trang và gồm 49 dòng, trong đó có 1 dòng là dòng “tiêu đề” được lập lại 3 lần ở đầu bảng mỗi khi bạn cuộn sang trang mới.
#1. Khai báo gói lệnh
Để tạo được một bảng như trên chúng ta cần khai báo gói lệnh longtable
. Tức là thêm dòng lệnh \usepackage{longtable}
vào trước dòng lệnh \begin{document}
#2. Cấu trúc cơ bản của một bảng dài trong LaTex
Trong phạm vi bài viết này mình sẽ chia môi trường longtable
ra hai phần phần thứ nhất từ \begin{longtable}{…}
….
… đến \endlastfoot
và phần thứ hai là từ \endlastfoot
đến \end{longtable}
Phần thứ nhất chúng quan tâm đến 4 lệnh sau: \endfirsthead, \endhead, \endfoot và \endlastfoot
Tên dòng lệnh | Ý nghĩa của dòng lệnh |
\endfirsthead | Văn bản nằm từ dòng lệnh \begin{longtable}{…} đến dòng lệnh này sẽ xuất hiện ở đầu bảng cụ thể là trang đầu tiên mà bảng xuất hiện và chỉ trang đầu tiên |
\endhead | Văn bản nằm từ dòng lệnh \endfirsthead đến dòng lệnh này sẽ xuất hiện ở đầu bảng của mỗi trang không tính trang đầu tiên |
\endfoot | Văn bản nằm từ dòng lệnh \endhead đến dòng lệnh này sẽ xuất hiện ở cuối bảng của mỗi trang không tính trang cuối cùng |
\endlastfoot | Văn bản nằm từ dòng lệnh \endfoot đến dòng lệnh này sẽ xuất hiện ở cuối bảng cụ thể trang cuối cùng mà bảng xuất hiện và chỉ trang cuối cùng |
Tổng cộng có tất cả bốn lệnh nhưng thường thì chúng ta chỉ sử dụng lệnh \endhead
mà thôi, và nếu chỉ sử dụng lệnh này thì vị trí của hiển thị của lệnh \endfirsthead
sẽ được lệnh này hiển thị luôn.
Thật vậy, chúng ta thường chỉ cần hiển thị lại dòng “tiêu đề” trên đầu bảng mỗi khi bảng sang trang mới.
Minh họa về cách sử dụng cụ thể của 4 lệnh này bạn vui lòng xem trong tệp tin đính kèm tại đây hoặc tại đây !
Tệp tin này có chứa mã nguồn do mình soạn sẵn bạn chỉ cần dùng TeXstudio mở lên rồi biên dịch thì bạn sẽ hiểu và biết cách vận dụng 4 lệnh trên sao cho phù hợp nhất.
Phần thứ hai là nội dung chính của bảng, nó tương tự như bảng ngắn thôi các bạn.
#3. Mã nguồn
Dưới đây là một phần mã nguồn để tạo bảng cho ví dụ minh họa bên trên. Toàn bộ mã nguồn bạn có thể tải về tại đây hoặc tại đây !
Việc tạo một bảng dài tương tự như việc tạo ra một bảng ngắn, chỉ khác một vài chỗ như gói lệnh và môi trường, còn lại các thành phần khác đều giống như nhau cả.
Trong bảng này dòng “tiêu đề” sẽ được lặp lại ở đầu bảng mỗi khi bảng sang trang mới, nên chúng ta sẽ đặt chúng trong \begin{longtable}{…} … \endhead
II. Tô màu cho bảng trong LaTex
Tương tự như văn bản thuần túy hoặc công thức Toán học thì LaTeX cũng cho phép chúng ta tô màu cho bảng. Cụ thể chúng ta có thể tô màu cho dòng, cho cột và cho ô.
Cách tô thì không khó, khó là ở chổ làm sao làm nổi bậc được nội dung bên trong. Một bảng đủ màu sắc như cái cầu vồng thì chắc chắn là không đẹp rồi, bảng như hình bên dưới là khá chuẩn.
#1. Màu và tỉ lệ pha màu
Trước khi tìm hiểu về cách tô màu thì bạn cần tìm hiểu về tỉ lệ pha màu. Tại sao lại phải tìm hiểu vấn đề này? Rất đơn giản bởi vì 2 lí do sau:
- Thứ nhất là nếu sử dụng tên màu thì chúng ta có rất ít màu để tô cho bảng cụ thể chỉ có Red, Yellow, Green, Blue, Black và White
- Thứ hai để là có được một tỉ lệ pha màu phù hợp cho ra màu sắc đẹp không phải dễ dàng.
Trước tiên bạn có thể sử dụng bảng màu bên dưới để tô. Các màu này được pha trộn trên hệ màu RGB
.
Để được nhiều màu hơn bạn chỉ cần thay đổi tỉ lệ pha trộn là được. Cụ thể bạn có thể dựa vào ba màu cơ bản Red, Green, Blue rồi pha trộn với tỉ lệ thích hợp theo một số thuộc đoạn [0 ; 1] là được.
Do kiến thức về màu sắc có hạn nên mình không thể hướng dẫn chi tiết cho các bạn được. Bạn có thể tham khảo bảng mã màu đầy đủ và chi tiết tại đây để lấy mã màu mà bạn thích:
Tuy nhiên, trong bài viết Xuất bảng từ Excel sang LaTeX bằng Excel2LaTeX thì mình sẽ hướng dẫn cho bạn một Tips để bạn có thể lấy được mã màu từ các màu có sẵn trong Excel. Bài viết này ở phần tiếp theo nhé các bạn.
Trong Excel có rất nhiều màu đẹp và việc pha trộn các màu này không phải dễ dàng nên đây có lẽ là một Tips rất hữu ích. Mình từng cố thử nhiều lần để pha trộn nhưng kết quả thường rất tệ, màu pha được rất xấu ●﹏●
#2. Tô màu cho dòng trong LaTex
Để tô màu cho bảng nói chung hay cho dòng nói riêng thì công việc đầu tiên mà bạn cần làm là khai báo gói lệnh colortbl
.
Sau khi khai báo gói lệnh xong thì bạn đã có thể sử dụng lệnh \rowcolor{color}
hoặc \rowcolor[color model]{color}
để tô màu cho dòng rồi.
Lệnh \rowcolor[color model]{color}
cho phép chúng ta tô được rất nhiều màu nhờ việc pha trộn các màu cơ bản ban đầu, vì vậy mình chủ yếu hướng dẫn các bạn tô bằng lệnh này là chính.
Lệnh \rowcolor[color model]{color}
được đặt ở dòng nào thì dòng đó sẽ được tô. Lệnh này có 2 tham số, 1 tùy chọn và 1 bắt buộc cụ thể.
- Color model là hệ màu có thể là rgb, cmy, cmyk, hsb, Hsb … thường thì chúng ta sẽ sử dụng hệ màu RGB.
- Color là tỉ lệ pha màu.
#3. Tô màu cho cột trong LaTex
Tô màu cho cột cũng tương tự như tô màu cho dòng, bạn muốn tô màu cho cột nào thì thêm lệnh >{\columncolor [color model]{color}}
tại vị trí của cột đó.
#4. Tô màu cho ô trong LaTex
Để tô màu cho ô bạn thêm lệnh \cellcolor[color model]{color}
tại vị trí của ô đó là được.
III. Lời kết
Cách tô màu cho bảng dài hoàn toàn áp dụng được cho bảng ngắn. Ngược lại các lệnh \diagbox{…}{…},
\multicolumn{n}{c|}{…} \multirow{m}{…cm}{…} và \cline{…-…} được sử dụng cho bảng ngắn thì bạn cũng có thể sử dụng cho bảng dài.
Điều quan trọng là bạn sử dụng đúng cú pháp của lệnh là được.
Trong bài viết này mình chưa hướng dẫn cho các bạn cách tô màu cho đường kẻ ngang, kẻ dọc vì vậy nếu muốn bạn có thể tự tìm hiểu thêm trong The colortbl package (link dự phòng) của tác giả David Carlisle.
Cảm ơn các bạn đã quan tâm theo dõi. Xin chào tạm biệt và hẹn gặp lại các bạn trong bài viết tiếp theo !
CTV: Nhựt Nguyễn – Blogchiasekienthuc.com
Bạn chỉ giúp tôi. Khi tô màu ô nó mất một số đường kẻ ngang hoặc dọc khắc phục cách nào?
Chào bạn Văn, bạn nên xem lại lệnh
– \begin{longtable}{}, tùy chọn của lệnh này là bắt buộc và mỗi | sẽ tương ứng với một dòng kẽ dọc
– \hline, mỗi lệnh \hline sẽ tương ứng với một dòng kẽ ngang