LaTeX

LaTeX 10 – Môi trường bảng (table) trong LaTeX

Bài viết sẽ hướng dẫn bạn các cách đơn giản nhất để có thể tạo một bảng (table) trong LaTeX. 

Cách nhanh nhất

  • Bạn dùng chức năng tạo bảng trong TeXMaker hoặc các trình soạn thảo TeX thông dụng đa phần đều có một mục tạo table cho bạn. Trong TexMaker bạn vào Wizard > Tabular.

  • Trang latex table cho phép bạn tạo bảng File > New table và chọn những tùy chọn mà bạn muốn rồi nhấn Generate để tạo code LaTeX.
  • Dán code LaTeX vừa tạo được vào trong bài của bạn là xong.

Môi trường bảng

Bạn muốn ở đầu tài liệu liệt kê tất cả các bảng bạn đã dùng trong tài liệu như hình dưới

thì bạn phải để cái bảng của bạn (đoạn code cái bảng đó) trong môi trường tabular như bên dưới

Giải thích đoạn code
  • [htp!] : ưu tiên hiển thị vị trí của bảng trong văn bảng (khi ghi nhiều cái một lượt, latex sẽ ưu tiên từ trái sang phải)
    • h : vị trí hiện tại
    • t : ở trên cùng trong trang đang hiển thị
    • p : ở một trang riêng biệt
    • b : ở cuối trang
    • ! (đặt trước hết) : ép latex đặt theo thứ tự đó cho dù nó sẽ làm văn bản trình bày không đẹp.
  • \caption : thêm ghi chú cho bảng.
  • \label : đặt nhãn cho bảng, để sau này gọi lại bằng lệnh  \ref{} 

Gọi lại danh sách bảng đó bằng dòng lệnh

Làm thủ công

Một bảng đơn giản 2 hàng 3 cột

Giải thích sơ sơ vài cái để bạn có thể tự tùy chỉnh khi cần
  • Các dấu | (gạch đứng) đại diện cho các lằn thẳng đứng trong bảng, nếu có để nó thì nó sẽ hiện đường đứng, ko để, ví dụ |lcr| thì sẽ không hiện các lằn thẳng ở giữa bảng.
  • hline : có cái này là có cái lằn ngang.
  • \ : báo hiệu là qua hàng mới (ngăn cách giữa các hàng).
  • & : báo hiệu là qua cột mới (ngăn cách các cột)
  • l = left (trái), c = center (giữa), r = right (phải) : canh lề văn bản như trong ví dụ ở trên.

Làm nhiều lằn sọc đứng

Làm nhiều lằn sọc ngang

Bảng với chiều dài cố định 

Dùng gói lệnh \usepackage{array}

Kết hợp nhiều cột lại (merge cells)

Ở đây số 3 là kết hợp 3 cột lại với nhau. Bạn chỉ được dùng số cột nhỏ hơn tổng số cột của bảng (trường hợp này tổng số cột là 4)

Kết hợp nhiều hàng lại (merge cells) 

Bạn phải dùng gói lệnh \usepackage{multirow}

Số 3 là số hàng sẽ được kết hợp, 4em là độ rộng của cột. Bắt buộc phải có đủ 2 thành phần này.

Bảng dài nhiều trang giấy

Đầu tiên bạn cần dùng gói lệnh \usepackage{longtable}

Giải thích đoạn code

Phần bảng dài này nó gồm 2 phần, phần đầu là những dòng giống nhau mỗi khi sang trang mới. Nghĩa là qua trang mới thì các thứ ở phần này vẫn tiếp tục được hiện lại. Phần thứ 2 là nội dung chính của bảng (sau \endlastfoot). Dưới đây là giải thích các câu lệnh cho phần đầu tiên

  • \endfirsthead : mọi thứ ở trước cái này sẽ xuất hiện ở đầu của bảng (trang đầu tiên mà bảng xuất hiện)
  • \endhead : mọi thứ nằm trước cái này và sau endfirsthead sẽ xuất hiện ở đầu của bảng ở mỗi trang trừ trang đầu tiên. Tức là khi bạn sang một trang mới, thứ này sẽ được hiện lại.
  • \endfoot : giống endhead, mọi thứ nằm trước cái này và sau endhead sẽ xuất hiện lại ở mỗi trang mới nhưng ở cuối bảng.
  • \endlasthead : giống endfirsthead, mọi thứ ở trước cái này và sau endfoot sẽ hiện ở cuối cùng của bảng và chỉ hiện ở trang cuối cùng mà bảng xuất hiện.

Sử dụng footnote trong môi trường table

Khi bạn dùng \footnote trong môi trường tabular, nó chỉ hiển thị chỉ số chứ không hiển thị chú thích bên dưới trang như bình thường. Cách khắc phục

  • footnote hoạt động tốt nếu bạn dùng gói lệnh cho bảng dài longtable.
  • Nếu bạn dùng bảng ngắn bình thường thì bạn cần dùng gói lệnh \usepackage{footnote} (để trước \begin{document} và làm như ví dụ bên dưới

Nếu bạn gặp lỗi dạng

có thể là do bạn đang dùng gói lệnh xcolor, gói lệnh này sẽ đụng chạm với gói footnote nên nó mới xuất hiện lỗi trên. Cách khắc phục là bạn để dòng xcolor trước dòng footnote là xong.

Đinh Anh Thi

Đinh Anh Thi

Sáng lập Math2IT. Hiện Thi đang là nghiên cứu sinh tại Pháp về chuyên ngành Toán Ứng Dụng. Anh mong muốn tổng hợp và chia sẻ kiến thức Toán thực tế, Khoa học ứng dụng và Tin học thường thức đến tất cả mọi người dưới dạng dễ tiếp cận và tự nhiên nhất.

  • minh le

    Cho mình hỏi link download phần mềm matlab lmi để chạy các chương trình toán học.?

    • Website không hỗ trợ link nha bạn. Trang không ủng hộ vi phạm bản quyền, bạn thông cảm.

  • minh le

    Hy vọng mình sẻ nhận được phản hồi của Add sớm nhất qua email: leminhton99@gmail.com

    • Mình ưu tiên trả lời và hỏi trên math2it.com nha bạn, để mọi người có thể vào xem để lấy kinh nghiệm.

      • minh le

        Cảm ơn bạn nhiều! Mỉnh gởi kèm link bài báo thứ 2: http://www.researchgate.net/profile/Jinhua_She2/publication/…,
        trong báo này họ tạo được 2 bảng cách nhau rất hợp lý. Mình đã làm theo hướng dẩn của bạn và 2 bảng vẩn xa nhau lắm ạ.
        Rất tiếc không gởi bài báo đến bạn, vì mình không thể cài đặt chương trình tìm kiếm sci-hub bản nâng cao được, mong bạn thứ lỗi!

        Vào 20:45 23 tháng 3, 2017, minh le đã viết:

        • Ý bạn có phải là bài báo thừ 2 trong link bạn gởi? Minh mở thử có thấy cái Table 4 và Table 5 nó ở gần nhau. Cái này nó phụ thuộc vào “lượng chữ” của bài báo nữa bạn. Nghĩa là với bài báo ấy, nó xếp 2 bản ấy gần nhau được nhưng nếu ta áp dụng cho bài báo khác, nó có thể để hai bản đó xa nhau miễn sao tổng thể chung của bài báo vẫn đẹp (không có khoảng trắng thừa vô lý).

          Có phải vấn đề của bạn là ở giữa hai bảng có khoảng trắng thừa vô lý không?

        • minh le

          Đúng rồi bạn , rắc rối từ khoản trăng đó đấy bạn

          Vào 23:05 23 tháng 3, 2017, Disqus đã viết:

        • Nói không khó biết, bạn có thể tạo thử 1 file “tạm” chứa 2 bảng cũng “tạm”, rùi bạn biên dịch thử, nếu bị giống thế thì gởi mình file .tex đó, mình sẽ làm trực tiếp cho bạn xem sao. Vì nếu mình làm theo file riêng của mình, latex nó sẽ tự động để ở những vị trí nó muốn.

        • minh le

          Cách họ đặt tiêu đề khá đẹp!, mình dùng create latex table online nhưng tiêu đề của bảng không có tùy chọn giống bảng của bài báo này, một số bảng thì tiêu đề còn được đặt ở vị trí cuối nữa đó!!!

          Vào 23:14 23 tháng 3, 2017, minh le đã viết:

        • Mình chưa hiểu chỗ “tiêu đề” của bạn, có phải là cái caption không? Họ đặt ở phía trên bảng thay vì dưới?

        • minh le

          Vâng caption đó bạn

          Vào 23:30 23 tháng 3, 2017, Disqus đã viết:

        • minh le

          Chào Bạn, mình đã hỏi về cách tạo caption như trong bài báo hôm trước mình đề cập.
          Bạn có thể trả lời về điêu này giúp mình không ạ!!

          Vào 23:34 23 tháng 3, 2017, minh le đã viết:

        • Chào bạn, để có thể lấy caption ở trên hình, bạn dùng đoạn code sau đặt trước begin{document}

          usepackage{floatrow}
          floatsetup[table]{capposition=top}

          Tuy nhiên, caption vẫn ở giữa thay vì lệch sang trái như trong bài báo. Để caption có thể ở trên và lệch sang trái như trong bài báo, bạn dùng đoạn code sau (bỏ đoạn ở trên đi nhé) đặt trước begin{document}

          usepackage{caption}
          captionsetup[table]{
          position=above,
          justification=raggedright,
          %labelsep=newline, % <<< nếu bạn muốn label xuống hàng
          singlelinecheck=false
          }

          LƯU Ý : bạn cần đặt caption{} ở phía trên begin{tabular}, ví dụ

          begin{table}[!htp]
          caption{}
          label{}
          centering
          begin{tabular}{}
          nội dung của table
          end{tabular}
          end{table}

        • minh le

          Cảm ơn Bạn nhiều. Mình đã dùng gói lệnh thứ 2 bạn gởi, nhưng caption vẩn không như mình mong đợi. Mình gởi đoạn code sau mà mình đã chạy :

          begin{table}[!htp]

        • minh le

          Cảm ơn Bạn nhiều. Mình đã dùng gói lệnh thứ 2 bạn gởi, nhưng caption vẩn không như mình mong đợi. Mình gởi đoạn code sau mà mình đã chạy :

          begin{table}[!htp]

        • minh le

          Khi mình cần caption hiển thị bên dưới thì dùng đoạn code này đúng không ạ?
          usepackage{caption}

        • Mặc định nó hiển thị bên dưới mà bạn?

          PS. Đoạn code bạn gởi chưa đầy đủ, Bạn gởi lại xem. Mà thứ bạn “mong muốn” là gì? Đoạn code mình gởi ở trên làm giống như trong bài báo mà?

        • minh le

          Trong bảng mình tạo từ code bạn gởi, caption hiện phía trên bảng Ban ạ
          Vào 08:07 25 tháng 3, 2017, Disqus đã viết:

        • Thì bạn muốn nó giống như trong bài báo mà? Trong bài báo caption hiện phía trên bảng? Trong đoạn code mình gởi bạn, có nói rõ nếu muốn caption ở dưới là phải làm sao mà? Bạn làm mình rối là không biết bạn đang hỏi gì?

  • minh le

    Cho mình hỏi cách tạo caption như các bảng ở 2 trang cuối trong bài báo mình đính kèm bên dưới. Thanks Add nhiều!!

    • Mình không thấy bài báo bạn đính kèm, bạn gởi lại nhé.

  • minh le

    Cho mình hỏi làm cách nào để các bảng hiển thị trong file pdf gần nhau theo 1 khoản cách xác định trước, Mình đẵ dùng create latex table online, nhưng nó cứ hiển thị lung tung, lúc thì nó nhét vào một trang văn bảng đầy chử có trước đó, lúc thì hai bảng cách nhau một khoản lớn. Thans a lot!!!

    • Cái bạn đang nói là vị trí đặt bảng trong latex chứ không phải là khoảng cách giữa hai bảng. Bạn để ý trong đoạn code đầu bài này, mình có giải thích chỗ begin{table}[!htp] cái !htp là mình đang ép latex đặt vị trí bảng tại những vị trí mình mong muốn. Theo mặc định, latex sẽ đặt tại các vị trí mà nó tự thấy là hợp lý nhất, thế nên nó sẽ đặt tùm lum như bạn miêu tả. Cái !htp ở trên nó giúp latex nghe lời mình nhưng nghe đến mức nào thì còn tùy. Bạn cứ thử bỏ đi vài chữ trong đó và biên dịch xem thử sao nhé.

      PS. Nếu bạn muốn mình giúp cụ thể hơn, bạn vui lòng gởi đoạn code đầy đủ của bạn có chứa hai bảng ấy để mình xem tình trạng. Đồng thời bạn nói mình vị trí mong muốn để mình thử sửa xem sao.