Làm sao nhập một file hình SVG vào LaTeX

  1. File SVG là gì?
    http://vi.wikipedia.org/wiki/SVG

    SVG

    Bách khoa toàn thư mở Wikipedia


    Một mặt cười vẽ bằng ngôn ngữ SVG

    SVG (viết tắt của Scalable Vector Graphics) là một ngôn ngữ đánh dấu (markup language) XML và dùng để miêu tả các hình ảnh đồ họa véc tơ hai chiều, tĩnh và hoạt hình, thường dành cho ứng dụng trên các trang mạng. SVG thuộc tiêu chuẩn mở và được quản lí bởi tổ chức World Wide Web Consortium, một tổ chức quản lý nhiều chuẩn khác như HTML, XHTML… Các tập tin có đuôi “.svg” được mặc định hiểu là tập tin SVG. SVG có thể phóng to thu nhỏ mọi kích cỡ mà không giảm chất lượng hình ảnh. Vì thế, nó được dùng nhiều trong các bản đồ, sơ đồ.

    Đối thủ chính của SVGMacromedia Flash, nhưng Macromedia Flash không phải là một chuẩn mở.


  2. Cần gì để nhập file SVG vào \LaTeX

    • Cop đoạn code sau đây vào trước \begin{document}
      \newcommand{\executeiffilenewer}[3]{%
      \ifnum\pdfstrcmp{\pdffilemoddate{#1}}%
      {\pdffilemoddate{#2}}>0%
      {\immediate\write18{#3}}\fi%
      }
      
      \newcommand{\includesvg}[1]{%
      \executeiffilenewer{#1.svg}{#1.pdf}%
      {inkscape -z -D --file=#1.svg %
      --export-pdf=#1.pdf --export-latex}%
      \input{#1.pdf_tex}%
      }
      
  3. Ví dụ mẫu

Giả sử tại thư mục svg có file girl.svg. Tại thư mục này ta soạn một file TeX như sau và lưu thành svg.tex

\documentclass[12pt,a4paper]{book}
\usepackage{graphicx}
\usepackage[utf8]{inputenc}
\usepackage[vietnam]{babel}
\newcommand{\executeiffilenewer}[3]{%
 \ifnum\pdfstrcmp{\pdffilemoddate{#1}}%
 {\pdffilemoddate{#2}}>0%
 {\immediate\write18{#3}}\fi%
}

\newcommand{\includesvg}[1]{%
 \executeiffilenewer{#1.svg}{#1.pdf}%
 {inkscape -z -D --file=#1.svg %
 --export-pdf=#1.pdf --export-latex}%
 \input{#1.pdf_tex}%
}
\begin{document}
\begin{figure}
\centering
  \def\svgwidth{.75\textwidth}
  \includesvg{girl}
  \caption{The test image, exported to PDF \emph{with} LaTeX option.}
  \label{fig:pdflatex}
\end{figure}
\end{document}

Lưu ý: file girl.svg ở dòng 21 không có phần mở rộng.

Quá trình biên dịch sẽ lâu vì LaTeX sẽ gọi Inkscape thực thi việc save file girl.svg thành file girl.pdf_tex, sau đó mới trở vào biên dịch tiếp.

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s