LaTeX
Thứ Ba, 21/04/2015, 00:04
LaTeX 8 : Chèn hình trong LaTeX

LaTeX 8 : Chèn hình trong LaTeX

Bài viết sẽ giới thiệu đến bạn các cách chèn hình trong LaTeX. Chèn hình đứng, hình ngang, hình to, hình nhỏ, hình chính, hình phụ,... và tất cả các thứ liên quan đến chèn hình trong LaTeX.

Gói lệnh sử dụng

Để có thể chèn hình trong LaTeX, bạn cần phải sử dụng gói lệnh sau, đặt nó TRƯỚC \begin{document}
\usepackage{graphicx}

Chèn hình đơn giản nhất

Bạn chỉ cần thêm dòng đánh dấu trong đoạn lệnh mẫu dưới đây là có thể chèn được hình
\documentclass[12pt]{article} \usepackage[utf8]{vietnam} \usepackage{graphicx} \begin{document} Đoạn nội dung này không có ý nghĩa, chủ yếu là để thử nghiệm và làm cho cái văn bản nó dài dài. \includegraphics{hinh1} Đoạn nội dung này không có ý nghĩa, chủ yếu là để thử nghiệm và làm cho cái văn bản nó dài dài. \end{document}
Lưu ý, hinh1 chính là file hình của bạn, file hình cần phải được để chung thư mục với file .tex. Nó thực ra là **hinh1.png **nhưng khi chèn vào LaTeX thì không cần ghi .png cũng được. Kết quả sẽ là Bạn sẽ thấy hình con bướm nó bị "lệch sang trái" và có vẻ "quá to". Vậy làm sao để thu nhỏ hình lại hoặc để nó ở bất kỳ vị trí nào? Đọc các phần tiếp theo nhé!
notion image
notion image

Vị trí đặt hình

Ở trên yêu cầu bạn phải để hình cùng thư mục với file .tex thì khi include, bạn chỉ cần để tên của hình vào là được. Tuy nhiên, khi số lượng hình quá nhiều, làm thế sẽ gây ra lộn xộn. Bạn muốn để hình ở trong một thư mục riêng (ví dụ như thư mục hinh như hình dưới đây), tất nhiên thư mục hinh này cũng để cùng thư mục cha với file .tex. Khi ấy ta phải include làm sao? Rất đơn giản, bạn dùng câu lệnh như bên dưới
notion image
notion image
\includegraphics{hinh/hinh1}

Form chèn hình đầy đủ

Nếu bạn muốn để hình ở giữa hoặc bạn muốn liên kết đến với hình (ví dụ hình của bạn ở chương 1 đánh số là Hinh-1. Khi bạn ở chương 5, bạn muốn gọi lại Hình-1 thì phải làm sao?). Chưa kể, bạn muốn ở đầu tài liệu của mình, có 1 trang "Danh sách hình ảnh" (List of figures) liệt kê hết các hình trong văn bản của bạn (hoàn toàn tự động) thì làm sao? Dùng form sau đây
\begin{center} \begin{figure}[htp] \begin{center} \includegraphics[scale=.5]{hinh/hinh1} \end{center} \caption{Cái sẽ hiển thị bên dưới hình} \label{refhinh1} \end{figure} \end{center}
[su_spoiler title="Giải thích đoạn code (Click để mở)"]
  • htp : vị trí ưu tiên hiển thị hình ảnh trong văn bản. h tới t rồi tới p.
    • h : vị trí hiện tại
    • t : ở trên cùng trong trang đang hiển thị
    • p : trên một trang riêng đặc biệt chỉ dành cho mấy dạng hình hoặc table.
    • b : ở cuối trang
    • ! (đặt ở trước hết) cho biết sẽ "ép" LaTeX đặt theo thứ tự ưu tiên đó cho dù nó làm cho văn bản không được đẹp.
  • scale=.5 : hình sẽ được giảm kích thước chỉ còn 50% kích thước gốc (bạn có thể thấy con bướm nhỏ hẳn lại so với hình đầu bài). Bạn có thể tự đặt các con số sao cho phù hợp.
  • caption : Đặt miêu tả cho hình.
  • label : tên để dành khi tham chiếu chéo, muốn tham chiếu, hãy sử dụng ref{...}pageref{...} (xem thêm ví dụ bên dưới.
[/su_spoiler] Ví dụ ta có đoạn code (bạn có thể copy rồi paste vào một file .tex để chạy thử) [su_spoiler title="Đoạn code ví dụ đầy đủ (Click để mở)"]
\documentclass[12pt]{article} \usepackage[utf8]{vietnam} \usepackage{graphicx} \begin{document} \listoffigures \section{Nội dung chính} Đoạn nội dung này không có ý nghĩa, chủ yếu là để thử nghiệm và làm cho cái văn bản nó dài dài. \begin{center} \begin{figure}[htp] \begin{center} \includegraphics[scale=.5]{hinh/hinh1} \end{center} \caption{Cái sẽ hiển thị bên dưới hình} \label{refhinh1} \end{figure} \end{center} Đoạn nội dung này không có ý nghĩa, chủ yếu là để thử nghiệm và làm cho cái văn bản nó dài dài hơn. Bạn cần gọi lại Hình \ref{refhinh1} ở trang \pageref{refhinh1}. \end{document}
 
Kết quả như hình dưới đây

Chèn hình nằm ngang

Để có thể chèn hình nằm ngang, bạn cần dùng gói lệnh sau (đặt trước \begin{document} )
\usepackage{pdflscape}
Sau đó bạn dùng đoạn code sau
\begin{landscape} \begin{center} \begin{figure}[b] \begin{center} \includegraphics[scale=0.75]{hinh1.png} \end{center} \caption{abc} \label{xyz} \end{figure} \end{center} \end{landscape}

Chèn nhiều hình phụ trong một hình chính

Nhiều hình phụ là sao, bạn xem hình dưới nhé. Để có thể chèn hai hình phụ nằm ngang nhau Để có thể chèn như thế, trước tiên bạn cần gói lệnh (đặt trước \begin{document} )
\usepackage{subfig}
Sau đó bạn dùng đoạn code sau
\begin{figure} \subfloat[Caption for subfigure 1\label{fig:test1}] {\includegraphics[width=.3\linewidth]{image1}}\hfill \subfloat[Caption for subfigure 2\label{fig:test2}] {\includegraphics[width=.3\linewidth]{image2}}\hfill \subfloat[Caption for subfigure 3\label{fig:test3}] {\includegraphics[width=.3\linewidth]{image3}} \caption{A figure with three subfigures} \end{figure}
Để có thể chèn 3 hình phụ (2 hình trên, 1 hình dưới) Bạn cần dùng gói lệnh
notion image
\usepackage{subfigure}
Sau đó bạn dùng đoạn lệnh sau
\begin{figure}% \centering \subfigure[First.]{...code chèn hình...}\qquad \subfigure[Second figure.]{...code chèn hình...}\\ \subfigure[Third.]{\label{3figs-c}...code chèn hình...}% \caption{Three subfigures.} \label{3figs} \end{figure}
Nếu bạn muốn chèn nhiều kiểu khác phức tạp hơn, hãy tham khảo tài liệu tham khảo của gói lệnh subfigure ở link này.

Chèn hình wrap (hình lấn chữ)

Ví dụ như dưới đây Bạn dùng gói lệnh
notion image
\usepackage{wrapfig}
Với đoạn code sau
\begin{wrapfigure}{l}[0pt]{0.25\linewidth} \includegraphics[scale=0.3]{hinh/hinh1} \end{wrapfigure}
Giải thích đoạn code
  • **l **(chữ "lờ") nghĩa là hình sẽ sang "trái", bạn thay thành chữ "r" sẽ sang phải.
  • 0.25\linewidth  : chỗ mà hình sẽ chiếm bằng 0.25 chiều dài của đoạn (như hình trên). Bạn cũng có thể thay bằng số đo cụ thể (ví dụ 2cm, 3em,...)
  • 0pt : hình của bạn có thể "lấn" ra bên ngoài biên, ở đây mình chọn 0 nghĩa là ko có lấn, bạn tăng số này lên nó sẽ lấn ra.
Tiếp theo, Math2IT sẽ giới thiệu tiếp đến các bạn cách chèn hình nâng cao hơn trong LaTeX như xoay hình, hình ở bên trái, caption ở bên phải,...

Xoay hình theo góc tự chọn

Để có thể xoay tròn hình, rất đơn giản, bạn thêm tuỳ chọn angle như dòng lệnh dưới đây. Thay số 45 bởi những góc mà bạn muốn.
notion image
\includegraphics[angle=45]{test.png}

Hình một bên, chú giải một bên

Bình thường thì chú thích của hình sẽ ở bên dưới hình như ví dụ ở trên. Bây giờ bạn muốn cái chú thích đó ở bên trái (hoặc bên phải) ngang hàng với hình thì làm sao? Có hai cách để bạn chọn.

Cách 1

Dùng gói lệnh sau, đặt trước \begin{document}
notion image
\usepackage{floatrow}
Cách sử dụng, xem đoạn code sau đây, trong đó
  • **4cm, 5cm **lần lượt là chiều rộng của hình và độ dài cái chú thích, bạn cũng có thể thay bằng textwidth (chiều rộng của trang).
  • right,** top** : vị trí của cái chú thích, ở đây là ở bên phải hình và ở phía trên. Bạn có thể thay right bởi left (bên trái), thay top bởi center (giữa), bottom (dưới).
\begin{figure} \floatbox[{\capbeside\thisfloatsetup{capbesideposition={right,top},capbesidewidth=4cm}}]{figure}[\FBwidth] {\caption{A test figure with its caption side by side}\label{fig:test}} {\includegraphics[width=5cm]{test}} %file test.png \end{figure}

Cách 2

Cách này có nhược điểm là cái chú thích nó chỉ có thể ở dưới bên phải chứ không tự động canh giữa hình được. Dùng gói lệnh sau, cũng đặt trước \begin{document}
\usepackage{sidecap}
Cách dùng
\begin{SCfigure} \centering \caption{ ... caption text ... } \includegraphics[width=0.3\textwidth]% {test} %file hình \end{SCfigure}

Tuỳ chỉnh với listoffigures

****\listoffigures  cho phép bạn liệt kê tất cả các hình trong tài liệu ở một chỗ nào đó. Cái này giống như một mục lục thu nhỏ chỉ dành riêng cho hình ảnh vậy. Bạn có thể đặt câu lệnh này ở bất cứ đâu bạn muốn, thông thường thì nó được đặt ở đầu tài liệu như đoạn code ví dụ sau
notion image
\listoffigures \listoftables \tableofcontents
Nếu có một hình nào đó mà caption của nó quá dài trong khi bạn chỉ muốn hiện ở** \listoffigures ** ngắn thôi thì làm sao? Rất đơn giản, dùng như đoạn code sau
\caption[Cái hiện ở listoffigures]{Cái hiện ở bên dưới hình}
Còn nếu bạn không muốn một hình nào đó hiện trong \listoffigures  thì bạn cần dùng gói lệnh caption và cách sử dụng như sau
\usepackage{caption} %Cái này đặt trước \begin{document} \caption[]{Cái hiện ở bên dưới hình}

Thay đổi caption mặc định dưới hình

Theo mặc định, bên dưới mỗi hình sẽ là **Hình 1. **hoặc Figure 1. Bây giờ bạn muốn bỏ chúng đi hoặc thay đổi chúng thì làm sao? Rất đơn giản, bạn thêm dòng sau đây trước \begin{document}
\renewcommand{\figurename}{Ảnh.}
Thay **Ảnh. **bởi bất cứ chữ nào bạn muốn thay hoặc bỏ trống nếu như bạn không muốn hiện chúng ra. Cách khác đơn giản hơn nhưng phải dùng thêm gói lệnh
\usepackage[figurename=Ảnh.]{caption}
Cùng chủ đề