Thông báo lỗi

Notice: Undefined offset: 1 trong counter_get_browser() (dòng 70 của /home/thayphun/viettug.net/modules/counter/counter.lib.inc).

Giới thiệu metapost và các cách biên dịch

MetaPOST là một gói (có thể nói là một chương trình, một ngôn ngữ lập trình) vẽ hình bằng lệnh. Mã lệnh TikZ hay Pstricks được sinh ra từ Geogebra có quá nhiều số thập phân là toạ độ các điểm trên mặt phẳng. Metapost thì khác, ta có thể khai báo biến cho điểm A, gán toạ độ cho nó và những lần sau chỉ cần gọi tên chứ không phải gõ lại toạ độ. Metapost là một ngôn ngữ lập trình nên nó có các đối tượng quan trọng như vòng lặp, điều kiện, đệ quy, phép biến hình, .. nên ta có thể vẽ được rất nhiều thứ.

Có 3 cách biên dịch metapost chính

1. Sử dụng convertMPtoPDF

Bạn soạn một tập tin tên là code.mp với nội dung như sau

beginfig(1)
  u:=4cm;
  draw fullcircle scaled 2u shifted (u,u);
  draw unitsquare scaled u shifted (0,0);
endfig;
end;

Vào menu Tool -> Mpost của Texmaker để biên dịch Metapost, lệnh này sẽ tạo ra tập tin code.1 chứa hình vẽ.

Chèn hình vẽ được vào tài liệu chính tailieu.tex như sau

\documentclass{article}
\usepackage[utf8]{vietnam}
\usepackage{graphicx}
\begin{document}
Đây là một hình vẽ bằng MetaPOST
\begin{center}
  \convertMPtoPDF{code.1}{1}{1}
\end{center}
\end{document}

Biên dịch tài liệu chính sẽ thu được hình vẽ là một đường tròn và một hình vuông.

2. Sử dụng gói mpgraphics

\documentclass{article}
\usepackage[utf8]{vietnam}
\usepackage{mpgraphics}
\begin{document}
Đây là một hình vẽ bằng MetaPOST
\begin{mpdisplay}
  u:=4cm;
  draw fullcircle scaled 2u shifted (u,u);
  draw unitsquare scaled u shifted (0,0);
\end{mpdisplay}
\end{document}

Vào Configure Texmaker thêm vào --shell-escape ở lệnh biên dịch PDFLaTeX cho nó thành

pdflatex --shell-escape -interaction=nonstopmode %.tex

Nhấn F6 biên dịch sẽ được kết quả

3. Dùng gói gmp

\documentclass{article}
\usepackage[utf8]{vietnam}
\usepackage[shellescape]{gmp}
\begin{document}
Đây là một hình vẽ bằng MetaPOST
\begin{mpost}
u:=4cm;
draw fullcircle scaled 2u shifted (u,u);
draw unitsquare scaled u shifted (0,0);
\end{mpost}
\end{document}

Bật chức năng biên dịch shell-escape như cách 2 rồi biên dịch PDFLaTeX sẽ thu được hình vẽ.

Ưu điểm, nhược điểm

Cách thứ nhất tuy phức tạp nhưng hiển thị được tiếng Việt trong hình vẽ. Cách thứ 2 và 3 luôn biên dịch lại mã lệnh metapost mỗi lần biên dịch tài liệu chính nên có thể biên dịch lâu hơn. Cách thứ nhất biên dịch PDFLaTeX sẽ nhanh hơn vì không phải dịch hình, muốn thay đổi nội dung hình thì ta sửa trong tập tin code.mp và tiến hành mpost.

Khi biên dịch hình metapost có tiếng Việt thì phải biên dịch trên dos với lệnh

mpost -tex=latex code.mp

Trên đây là những gì tôi biết được, tác giả nào có cách vẽ hình có tiếng Việt trong cách 2, 3 hay biên dịch có tiếng Việt mà không dùng DOS thì vui lòng đóng góp thêm.

Mời bạn tải về các tài liệu học metapost dưới đây, hoặc tham khảo một số hình vẽ sẵn tại

http://tex.loria.fr/prod-graph/zoonekynd/metapost/metapost.html

Một số ví dụ do tôi, thầy Châu Ngọc Hùng đã từng vẽ:

https://www.overleaf.com/1288676gcvccc

https://www.overleaf.com/read/gnwcbmqdpdbv#/25516242/

https://www.overleaf.com/read/ddfgdjffnyqb#/18771399/

https://www.overleaf.com/read/vhfxvgxqvbkt#/30366216/

https://www.overleaf.com/2199944hjnzcv#/5617743/

 

Chuyên mục: 
Chia sẻ tài liệu: 
Đính kèmDung lượng
PDF icon mptut.pdf775.17 KB
PDF icon SdMetaPost2009.pdf230.56 KB