Tạo bảng dài trong LaTex, và tô màu cho bảng trong LaTeX

data-full-width-responsive="true"
NOTE: Chào mừng bạn đến với Blog Chia Sẻ Kiến Thức ! Nếu như trong quá trình sử dụng bạn gặp bất cứ lỗi gì, ví dụ như bị lỗi link download, blog load chậm, hay là không truy cập vào được một trang nào đó trên blog... thì bạn vui lòng thông báo với mình qua trang Liên Hệ nhé. Thanks !
Bài này thuộc phần 11 trong 13 phần của series Hướng dẫn sử dụng LaTeX

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:

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.

cach-to-mau-cho-bang-trong-latex (1)

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

cach-to-mau-cho-bang-trong-latex (1)

#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}{…}….

data-full-width-responsive="true"

… đến \endlastfoot và phần thứ hai là từ \endlastfoot đến \end{longtable}

cach-to-mau-cho-bang-trong-latex (2)

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 !

cach-to-mau-cho-bang-trong-latex (3)

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.

cach-to-mau-cho-bang-trong-latex (4)

#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.

tao-bang-dai-trong-latext

Để đượ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.

cach-to-mau-cho-bang-trong-latex (5)

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.

cach-to-mau-cho-bang-trong-latex (6)

#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 đó.

cach-to-mau-cho-bang-trong-latex (7)

#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.

cach-to-mau-cho-bang-trong-latex (8)

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

 

Xem tiếp các bài viết trong cùng Series

<< Hướng dẫn tạo và định dạng bảng trong LaTeX (nâng cao)Chuyển đổi bảng tính Excel sang bảng LaTeX bằng Excel2LaTeX >>
Note: Bài viết này hữu ích với bạn chứ ? Đừng quên đánh giá bài viết, like và chia sẻ cho bạn bè và người thân của bạn nhé !

Administrator: Kiên Nguyễn Blog

Có một câu nói của người Nhật mà mình rất thích đó là " Người khác làm được thì mình cũng làm được ". Chính vì thế mà hãy theo đuổi đam mê, thành công sẽ theo đuổi bạn ! Nếu như bạn đang gặp khó khăn và cần sự trợ giúp thì hãy comment phía bên dưới mỗi bài viết để nhận được sự hỗ trợ từ cộng đồng Blog Chia Sẻ Kiến Thức nhé.

Một vài lưu ý trước khi comment :

Thư điện tử của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *
Tất cả các comment của các bạn sẽ được giải đáp trong vòng 48h (thường vào buổi tối)!
Không được sử dụng từ khóa trong ô 'Name', bạn hãy dùng tên thật hoặc Nickname của bạn !
Không dẫn link sang trang web/blog khác. Xem quy định comment tại đây. Thank All!

Leave a Reply

Your email address will not be published. Required fields are marked *