LaTeX

Chuyển file hình trong Matlab sang code hình vẽ trong LaTeX

Bài viết giới thiệu đếnbạn hai công cụ cho phép chuyển các hình vẽ trong Matlab sang code LaTeX và biên dịch bằng LaTeX. Lưu ý rằng nếu vẽ hình bằng LaTeX thì sẽ rất đẹp và mượt, không xảy ra tình trạng vỡ hạt khi phóng to như khi bạn chèn một hình vào trong tài liệu một cách thủ công. Thứ nhất là fig2texPS và thứ hai là matlab2tikz. Bạn đều có thể tìm thấy hai công cụ này trên trang hỗ trợ của Matlab. Ở đây blog chỉ xin đề cập đến cách sử dụng chúng.

Trong khi fig2texPS sẽ xuất ra code TeX và dùng PSTricks để vẽ thì matlab2tikz sẽ dùng TikZ để vẽ. Mình thì quen dùng PSTricks hơn. Ở bài Hướng dẫn vẽ hình trong LaTeX với sự trợ giúp của GeoGebra mình cũng hướng dẫn chuyển sang code PSTricks.

Ví dụ bạn có một file matlab với tên là filematlab.m và trong file này có một lệnh để vẽ cái hình mà bạn muốn xuất ra code tex.

Dùng fig2texPS

1 Bạn download về ở link bên dưới, giải nén ra, bạn sẽ tìm thấy file fig2texPS.m nằm trong thư mục ./fig2TexPS/

Math2IT | Download fig2texPS

2 Chép file fig2texPS.m trên vào trong CÙNG thư mục chứa file filematlab.m

3 Trong matlab, bạn cần run filematlab.m trước rồi ngay sau đó, chạy file fig2texPS.m. Khi ấy giao diện chuơng trình chuyển sang mã code sẽ xuất hiện.

4 Giao diện điều khiển của fig2texPS, tùy theo mục đích, bạn sẽ tùy chỉnh.

5 Sau khi nhấn Start, sẽ có một file fig1.tex được tạo ra ngay trong thư mục chứa filematlab.tex. Nó là một file hoàn chỉnh, bạn có thể dùng một trình soạn thảo LaTeX để biên dịch nó thành một file pdf hoàn chỉnh.

Chú ý khi biên dịch, bạn cần chọn biên dịch theo trình tự

LaTeX + dvips + View PS hoặc LaTeX + dvips + ps2pdf + View PDF

Trong TeXMaker, bạn có  thể vào Options > Configure TeXMaker > Quick build để chọn hai cái trên. Sau đó mỗi lần biên dịch, chỉ cần nhấn phím F1.

Tích hợp code chứa file hình vào trong tài liệu chính

6 Giả sử tài liệu chính của bạn là main.tex,  bạn có thể để file tex chứa hình ở cùng thư mục với thư mục chính này. Tuy nhiên, nếu tài liệu quá nhiều hình, thì mình khuyên bạn nên tạo thêm một thư mục tên figures ở trong này để chứa riêng các file hình.

7 Bạn tạo một file chứa hình tên hinh1.tex trong thư mục figures này.

8 Vào lại file fig.tex mà thằng fig2texPS đã tạo ở trên lên, trong đấy bạn sẽ thấy rất rất nhiều code. Bạn hãy copy hết đoạn code ở trong 2 thẻ  begin{document}, end{document} 

 

9 Paste đoạn code trên vào trong file hinh1.tex

10 Trong file chính main.tex, bạn đi đến nơi cần chèn hình, sau đó dán đoạn code sau đây vào.

Nếu bạn có dùng một thư mục figures như mình nói ở trên thì copy đoạn code sau đây
Nếu bạn để file hinh1.tex cùng thư mục với main.tex thì đoạn code sẽ như sau
11 Cũng trong main.tex, thêm vào trước /begin{document} các gói lệnh sau

12 Biên dịch file main.tex theo trình tự như ở bước 5, tức là

LaTeX + dvips + View PS hoặc LaTeX + dvips + ps2pdf + View PDF

13 Tận hưởng kết quả.

Dùng matlab2tikz

Như đã nói ở trên, mình không hay dùng cái này, tuy nhiên trên trang chủ nó cũng hướng dẫn khá chi tiết và dễ hiểu, mình xin phép dịch lại, khi nào có điều kiện mình sẽ nói chi tiết hơn.

1 Đầu tiên, bạn download file nén về ở link bên dưới rồi giải nén ra

Math2IT | Download matlab2tikz

2 Vào trong thư mục ./src/ copy hết tất cả các file .m trong thư mục này

3 Chép vào trong thư mục chứa file main.tex

4 Trong Matlab, chạy filematlab.m trước, sau đó chạy file matlab2tikz.m như những câu lệnh bên dưới

5 Kết quả có thể chèn vào bất cứ file latex nào bằng câu lệnh

6 Chú ý, cần thêm gói lệnh sau trước /begin{document}

7 Thêm thông tin và vài tùy chọn khác, xin vui lòng đọc ở link sau (tiếng Anh).

Từ khoá tiếng Anh để tìm kiếm bài này : How to convert images in Matlab to the figure in LaTeX? How to get the PSTricks code from Matlab figures in order to draw in LaTeX?
Đ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.