LaTeX

Hướng dẫn vẽ hình trong LaTeX với GeoGebra

VVẽ hình trong LaTeX mà chỉ dùng lệnh không thôi thì rất ư là phức tạp. Với sự trợ giúp của một số phần mềm, chúng ta có thể xuất hình vẽ ra dạng code và dán vào TeXMaker để xuất ra hình ảnh cực đẹp. Math2IT đề xuất GeoGebra vì sự tiện lợi và dễ dùng của nó.

Xem thêm Vẽ hình rồi xuất ra file LaTeX với xfig.

Tôi sẽ hướng dẫn chính bằng video, bài viết chủ yếu gởi nhắc ngắn gọn những gì tôi nói trong video.

Cài đặt GeoGebra trong Windows và Linux

Bạn có thể download GeoGebra cho các nền tảng Windows, Linux (.deb), MacOS, Chrome web tại địa chỉ bên dưới.
 Download GeoGebra (mọi nền tảng)

Đối với Linux, bạn cũng có thể cài trực tiếp từ Software Center, tuy nhiên có thể phiên bản không phải là mới nhất.

Các thao tác vẽ hình cơ bản trong GeoGebra

Tôi sẽ cập nhật những chức năng chính (bằng Video và tiếng Việt) trong một ngày đẹp trời. Các bạn có thể theo dõi video hướng dẫn (bằng tiếng Anh) ở link bên dưới, rất chi tiết.
 GeoGebra tutorial videos

Hoặc bạn cũng có thể theo dõi trang hỗ trợ sử dụng chính thức từ trang chủ (English) tại đây.

Các phím tắt cần thiết

Để có thể vẽ hình được nhanh, bạn nhất thiết phải dùng đến các phím tắt với các chức năng hay dùng. Dưới đây là một số phím tắt chính.
 Phím tắt GeoGebraGebra

Cách tích hợp vào LaTeX

Và đây là nội dung chính của bài viết. Mời bạn xem video bên dưới để cho dễ hình dung và làm theo.

Kết quả minh họa

Gói lệnh cần thiết

Bạn chèn các gói lệnh sau TRƯỚC \begin{document} 

Đoạn code chèn hình dùng trong video:

Để hiện hoặc ẩn lưới tọa độ hay hệ trục tọa độ, bạn chọn View > (tick/bỏ tick) GridAxes hoặc bạn có thể nhấn chuột phải vào một khoảng trống bất kỳ trong trình vẽ hình rồi tick chọn vào tùy chọn Grid và Axes.

Chỉnh sửa trong TeXMaker: Options > Configure Texmaker > Quick build > Tick chọn LaTex + dvips + ps2pdf + View PDF > OK > Khi biên dịch nhấn F1

Bạn có thể tạo một file .tex riêng rồi lưu code chèn hình trong file đó. Điểm cần lưu ý là bạn chỉ copy những code nằm trong \begin{document}  … \end{document}  mà thôi (không bao gồm hai thằng này). Sau đó, bạn có thể dùng các dòng lệnh sau đây để chèn file .text vào trong văn bản như chèn một hình bình thường (đọc thêm bài viết này để biết thêm chi tiết).

Nếu bạn để hình trong một thư mục riêng để dễ quản lý thì ngay dùng include, bạn sửa thành

Ngoài ra, bạn cũng có thể biên dịch trước thành một file .pdf chỉ chứa hình ảnh. Sau đó bạn đính kèm file .pdf này vào trong bài viết chính của tôi y như chèn một hình bình thường bằng cách dùng đoạn code sau đây. Điểm lưu ý là khi biên dịch thành file pdf, bạn cần tạo một file .tex riêng rồi dán toàn bộ đoạn code tạo bởi GeoGebra vào và biên dịch. Sau khi biên dịch, bạn sẽ thấy hiện tượng có quá nhiều khoảng trống không cần thiết. Khi ấy bạn hãy đọc bài viết này để biết cách loại bỏ.

Để tạo code LaTeX cho hình

  1. Bao vùng chứa hình
  2. Chọn File >Export > Graphics view as PSTricks…
  3. Chọn Document font size
  4. Nhấn Generate code
  5. Nhấn Copy to Cliboard
  6. Vào TeXMaker dán đoạn code đó vào một file tạm (ví dụ tên temp.tex)
  7. Copy hết đoạn code ở giữa \begin{document}  và \end{document}  trong file tạm temp.tex.
  8. Dán vào trong file chính của bạn.

Chỉnh sửa trong đoạn code

  • Chỉnh sửa kích thước các chữ trong hình so với chữ toàn văn bản. Chỉnh sửa ngay chỗ
  • Chỉnh sửa tọa độ vị trí của các điểm/đoạn: mấy cái số trong ngoặc dạng (x,y) đều là tọa độ.
  • Chỉnh sửa tên điểm, tên đường,… bằng cách sửa trong các ký hiệu $ $ 
Đ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.

  • Phạm Hải Đăng

    Cám ơn anh nhé. Bài viết rất hữu ích. Em đã thành công. Trên cả tuyệt vời.

  • vicper

    mình bị lỗi này ! I can’t find file `pst-arrow’.
    thì sửa thế nào vậy ?

    • Bạn có cài đầy đủ gói lệnh texlive không?

  • diem

    mình làm y như vậy mà chạy xong nó báo không tìm thấy file ” fst-arrow” là sao bạn.giúp mình với

    • Math2IT

      Bạn có thể gởi mình file .tex qua email math2itblog@gmail.com để mình xem nhé.

      • Tâm

        Mình cũng bị như vậy 🙁

  • Huỳnh Văn Thơ

    Bạn có thể làm một bài về cách vẽ các hình tính tích phân như trang này http://www.slideshare.net/Truonghocso/ng-dng-tch-phn-tnh-din-tch-v-th-tch
    Xin cảm ơn!

  • Kông Truç

    Chào bạn. Mình làm theo hướng dẫn ở trên, nhưng khi chạy texmarker gặp lỗi là number too big. Mình phải sửa như nào hả bạn ?

    • Math2IT

      Chào bạn, thực sự thì bạn ghi như thế mình cũng không biết giúp sao vì thiếu thông tin quá. Cách hay nhất là bạn gởi cho mình đoạn code sau khi bạn vẽ hình để mình biên dịch thử xem có bị lỗi giống bạn không rồi tính tiếp nhé.

      • Kong Truç

        ok bạn, bạn xem giúp mìhh với nhé, đây là code mình sau khi mình vẽ hình bằng geogebra:

        \documentclass[12pt]{article}
        \usepackage[utf8]{inputenc}
        \usepackage{pstricks-add}
        \pagestyle{empty}
        \usepackage{amssymb,fancyhdr,txfonts,pxfonts}
        \begin{document}
        \psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dimen=middle,dotstyle=o,dotsize=5pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25}
        \begin{pspicture*}(-0.11772848889483101,-0.12626209357849458)(15.114142755177676,4.554927650462693)
        \pspolygon[fillcolor=black,fillstyle=solid,opacity=0.1](0.,4.)(0.,0.)(4.,0.)(4.,4.)
        \pspolygon[fillcolor=black,fillstyle=solid,opacity=0.1](5.5,0.)(5.5,4.)(9.5,4.)(9.5,0.)
        \pspolygon[fillcolor=black,fillstyle=solid,opacity=0.1](11.,4.)(11.,0.)(15.,0.)(15.,4.)
        \psline(0.,4.)(0.,0.)
        \psline(0.,0.)(4.,0.)
        \psline(4.,0.)(4.,4.)
        \psline(4.,4.)(0.,4.)
        \psline(5.5,0.)(5.5,4.)
        \psline(5.5,4.)(9.5,4.)
        \psline(9.5,4.)(9.5,0.)
        \psline(9.5,0.)(5.5,0.)
        \psline(11.,4.)(11.,0.)
        \psline(11.,0.)(15.,0.)
        \psline(15.,0.)(15.,4.)
        \psline(15.,4.)(11.,4.)
        \pscircle(7.5,2.){1.118033988749895}
        \pscircle(7.5,2.){0.5412636616368788}
        \rput{2.2420270514254987}(1.0231949889276706,3.332866705080671){\psellipse(0,0)(0.4868282738985853,0.3853508047268501)}
        \rput{-15.94539590092272}(3.0793399414980787,3.1092142484290055){\psellipse(0,0)(0.46737640761639354,0.3880091473337167)}
        \rput{-7.268467795131407}(0.919052090240196,1.7899512377897784){\psellipse(0,0)(0.5221888308086876,0.3944077056955069)}
        \rput{-54.081712710598296}(2.4501481032693837,1.6199784543998872){\psellipse(0,0)(0.48989887082682876,0.40284805572633475)}
        \rput{0.}(1.1886702675408682,0.6315093812714261){\psellipse(0,0)(0.5050915923339296,0.3471875259604948)}
        \rput{13.781597235653539}(3.1679675783174206,0.8055623638558168){\psellipse(0,0)(0.5075679143389076,0.35077995939008016)}
        \pscircle(13.,2.){1.118033988749895}
        \rput[tl](0.7644957320975483,3.7627263091634147){C^{1}}
        \rput[tl](2.835021965038847,3.5466713978999755){C^{2}}
        \rput[tl](0.6744728524044483,2.250341930319339){C^{r}}
        \rput[tl](2.1868572312485273,2.0702961709331396){C^{3}}
        \rput[tl](0.9445414914837481,1.0080261905545622){C^{n}}
        \rput[tl](2.835021965038847,1.2420856777566216){C^{i}}
        \rput[tl](1.9527977440464674,2.916511240048277){\mathbf{C^{m}}}
        \rput[tl](0.7644957320975483,3.7627263091634147){C^{1}}
        \rput[tl](7.300156797816603,2.4123831137669187){C^{1}}
        \rput[tl](7.246143070000743,3.1505707272503365){C^{m}}
        \rput[tl](7.804284924097963,3.8527491888565146){\mathbf{C^{hom}}}
        \rput[tl](12.773547883157079,2.466396841582778){C^{hom}}
        \rput[tl](13.565749224456358,3.8167400369792746){\mathbf{C^{hom}}}
        \rput[tl](3.429172971013306,4.698964257971652){\mathbf{E}}
        \rput[tl](9.064605239801361,4.644950530155793){\mathbf{E}}
        \rput[tl](14.483982597325978,4.680959682033032){\mathbf{E}}
        \rput[tl](4.6534841348394655,2.4123831137669187){\approx}
        \rput[tl](10.12687522017994,2.4303876897055385){\approx}
        \end{pspicture*}
        \end{document}

        • Math2IT

          À mình quên nói bạn, bạn gởi luôn cho mình file geogebra gốc nhé, tức cái file hình bạn bẽ bình thường rồi bạn lưu dưới định dạng .ggb đó, để mình biết cái hình bạn muốn vẽ nó như thế nào cũng như để mình tự tạo code xem sao. Gởi rồi mình tìm cách giúp bạn.

        • diem

          mình báo lỗi ko tìm thấy file fst-arrow làm sao bạn

  • Lan

    Bạn ơi, cho mình hỏi. Mình đánh tex trên texmaker, chạy file có vẽ hình bằng tex thì được, nhưng file chứa phần chèn hình ảnh bằng pdf thì báo lỗi dòng chèn hình vẽ (mình chạy latex / Dvi -> PS / PS -> PDF). Mình tìm hiểu thì biết rằng để chạy phải dùng PDFlatex. Nhưng mình bấm F6 để chạy thì vẫn báo lỗi. Giúp mình với

    • Math2IT

      Chào bạn. Mình chưa hiểu rõ lắm câu hỏi, “file chứa phần chèn hình ảnh bằng pdf” là sao bạn? Có phải bạn đã biên dịch thành công hình ảnh thành 1 file pdf rồi giờ đây bạn muốn chèn file pdf đó vào trong bài chính không?

      Nó báo lỗi khi bạn nhấn F6 là báo lỗi thế nào bạn?

      Để cho dễ dàng, bạn vui lòng gởi cho mình file .tex đơn giản + file .tex chứa code hình vẽ để mình làm thử xem.