Hình vẽ trong LaTeX

Bữa giờ mình được nhờ chỉnh sửa lại 1 bài paper và đang dùng LaTeX để chỉnh. Bài này từ đầu viết trên MS Word, nhìn vào thấy format không chuẩn gì cả nên mình đã dùng LaTeX để chỉnh lại. Vì mình muốn mọi thứ nhìn vào phải “hoàn hảo” nên phần hình ảnh cũng muốn chuyển sang dạng vector.

 

Cách “hoàn hảo” nhất để đưa ảnh vào trong LaTeX đó là code ảnh luôn bằng LaTeX, ví dụ như có thể dùng TikZ. Tuy nhiên cách này rất mất công. Cách đỡ mất công hơn là dùng các chương trình tạo ảnh, biểu đồ (MS Power Point, MS Visio, Inkscape, Graphviz, …) để tạo ảnh rồi lưu thành dạng PDF để import vào. Thông thường thì mình vẫn dùng Graphviz để tạo ảnh bằng code sau đó chỉnh lại thêm bằng Inkscape.

 

Hôm nay tìm hiểu thêm thì biết được Inkscape có chức năng lưu ảnh dạng PDF_TEX. Chức năng này cho phép lưu ảnh lại thành cả PDF (chứa hình) và TEX (chứa text). Khi import vào thì text sẽ được format theo style của file LaTeX mình đang làm. Cách này giúp cho ảnh và chữ đồng nhất với nhau về định dạng. Ví dụ văn bản dùng font XYZ size 12, thì text trong ảnh cũng dùng font XYZ size 12 luôn. Bây giờ mình vẫn đang tìm hiểu, khi nào thành thạo cái này mình sẽ cập nhật thêm.

Update 02 Aug 2014:

Mình đã thử cả Inkscape và Tikz, nhận xét như sau:

1. Inkscape (kết hợp với Graphviz): tạo ra hình đẹp, dễ dàng. Tuy nhiên khi nhúng vào LaTeX thì vẫn còn khó khăn do không scale theo tỉ lệ được. Có một cách để scale đó là chỉnh bề ngang của ảnh. Tuy nhiên, cách này sẽ không ổn nếu mình muốn tất cả ảnh trong bài đều cùng một tỉ lệ. Một khuyết điểm nữa là không tuỳ chỉnh font được, font sẽ tự động theo định dạng trong LaTeX hoặc theo font mình để từ trước.

2. Tikz: cách viết Tikz phức tạp hơn dot (ngôn ngữ trong Graphviz) nhiều nhưng thực sự mà nói thì Tikz rất mạnh. Sau khi đã quen với Tikz thì có lẽ không muốn trở lại dùng Inkscape + Graphviz nữa. Tikz cho phép tuỳ chỉnh gần như là mọi thứ.

Dưới đây là một số ví dụ (Tikz trên, Inkscape dưới, hình Inkscape đầu là chỉnh Inkscape dùng font trong LaTeX):

Tikz1 Inkscape1 Tikz2 Inkscape2

Advertisements
This entry was posted in Computer Related, Programming. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s