LaTeX/导入图形
可以使用 graphicx
包导入外部图形。最重要的命令是 \includegraphics
。LaTeX 本身将图像视为普通文本,即具有特定高度和宽度的框。
\documentclass{article}
\usepackage{graphicx}
\begin{document}
The following image does not show any wombats
\includegraphics[height=\baselineskip]{example-image}.
\includegraphics[height=3cm]{example-image-a}\includegraphics[width=5cm]{example-image-b}
\includegraphics[height=3cm]{example-image-a} \includegraphics[width=5cm]{example-image-b}
\end{document}
包文档列出了 width
和 height
选项以及其他选项。
使用 pdflatex
支持多种图形格式:pdf
、png
和 jpg
。现代 LaTeX 安装也可以使用 eps
文件,但方式间接。
dvi
模式下的 LaTeX 只支持 eps
文件。
可以将图像排列在矩阵中。只需要考虑图像的适当宽度即可。
\documentclass{article}
\usepackage{graphicx}
\usepackage{blindtext}
\usepackage{showframe}
\begin{document}
\begin{center}
\includegraphics[width=.3\linewidth]{example-image}\quad\includegraphics[width=.3\linewidth]{example-image-a}\quad\includegraphics[width=.3\linewidth]{example-image-b}
\\[\baselineskip]% adds vertical line spacing
\includegraphics[width=.3\linewidth]{example-image}\quad\includegraphics[width=.3\linewidth]{example-image-a}\quad\includegraphics[width=.3\linewidth]{example-image-b}
\end{center}
\end{document}
三张图像排成一行,每张图像的宽度仅为可用行宽的 30%,相对于下方文本居中。
如果要添加标题并让 LaTeX 跟踪编号,请查看浮动体部分。
- 注意
还应该查看导出到其他格式,了解其他可能性。
- epstopdf
可以使用epstopdf 实用程序(包含在同名包中)将 EPS 转换为 PDF。此工具实际上由pdflatex在加载 graphicx 包时,在后台将 EPS 文件转换为 PDF。此过程对用户完全不可见。
可以使用命令行批量转换文件。在 Bourne Shell(Unix)中,可以通过以下命令实现:
$ for i in *.eps; do epstopdf "$i"; done
在 Windows 中,可以通过将以下行放在 批处理文件(扩展名为.bat的文本文件)中,与图像位于同一目录
for %%f in (*.eps) do epstopdf %%f
然后可以通过命令行运行它。
如果 epstopdf 生成了一个包含小图形的整页,并且图形位于该页面的某个位置,请使用
$ epstopdf --gsopt=-dEPSCrop foo.eps
或尝试使用ps2pdf实用程序,该实用程序应已与 Ghostscript 一起安装(所有 TeX 发行版都需要)。
$ ps2pdf -dEPSCrop foo.eps
对最终的 PDF 进行裁剪。
- eps2eps
如果上述所有方法都失败,可以在尝试其他转换之前,使用eps2eps 工具(另请参见下一节)简化 EPS 文件
$ eps2eps input.eps input-e2.eps
这将把所有字体转换为预先绘制的图像,这在提交出版物手稿时有时是可取的。但是,另一方面,字体不会转换为线条,而是转换为位图,这会降低字体的质量。
- imgtops
imgtops 是一款轻量级图形实用程序,用于在光栅图形 (JPG、PNG 等) 和 EPS/PS 文件之间进行转换。
- Inkscape
Inkscape 也可以将文件从多种格式转换到多种格式,无论是通过 GUI 还是通过命令行。例如,要从 SVG 图像中获得 PDF,可以执行以下操作:
$ inkscape -z -D --file=input.svg --export-pdf=output.pdf
可以在 LaTeX 文件中运行此命令,Template:LaTeX/package 包(在使用 --shell-escape 选项运行 (pdf)latex 时)可以使用 Inkscape 的 pdf+tex 导出选项来实现此目的,或者可以使用简单的宏。参见 如何在 LaTeX 中包含 SVG 图表?-- Stackexchange 参见 导出到其他格式 获取更多详细信息。
- pstoedit
要正确编辑 EPS 文件,可以使用pstoedit 将其转换为可编辑格式。例如,要获得可编辑的 Xfig 文件,请执行以下操作:
$ pstoedit -f fig input.eps output.fig
要获得 SVG 文件(可以使用任何矢量图形工具(如 Inkscape)编辑),可以执行以下操作:
$ pstoedit -f plot-svg input.eps output.svg
有时 pstoedit 无法创建目标格式(例如,当 EPS 文件包含裁剪信息时)。
- PDFCreator
在 Windows 下,PDFCreator 是一款开源软件,可以创建 PDF 和 EPS 文件。它安装了一个虚拟打印机,可以通过具有“打印...”菜单项的其他软件访问(几乎所有程序都有)。
- 光栅图形转换器
- Sam2p (convert) 或
- ImageMagick (convert) 或
- GraphicsMagick (gm convert).
这三个程序的功能基本相同,可以进行大多数图形格式之间的转换。但是,Sam2p 是三者中最新的,似乎既能提供最佳质量,又能产生最小的文件。
如果您在 PNG 格式中包含具有 alpha 通道的图形,Acrobat Reader 有时在显示颜色方面存在问题。可以通过删除 alpha 通道来解决此问题。在 Linux 上,可以通过以下命令实现:convert来自 ImageMagick 程序
convert -alpha off input.png output.png
有时,彩色 EPS 图形需要转换为黑白或灰度才能满足出版物要求。可以使用 eps2eps(来自 Ghostscript 包)和 [1] 程序来实现此目的
$ eps2eps input.eps input-e2.eps
$ pscol -0gray input-e2.eps input-gray.eps
我们这里不会讨论在 LaTeX 代码中创建的程序化图形(TikZ、PSTricks、MetaPost 及其同类)。有关该内容,请参阅 Introducing Procedural Graphics。
您应该优先使用矢量图形而不是光栅图形,因为矢量图形的质量更高。光栅图形只应在照片情况下使用。任何类型的图表都应该是矢量图形。
正如我们之前看到的,LaTeX 处理
- EPS 和 PDF 用于矢量图形;
- PNG 和 JPG 用于光栅图形。
如果某些工具无法保存这些格式,您可能需要在导入之前转换它们。
- Dia
Dia 是一款跨平台的绘图工具,可以导出 eps 图像,或使用 tikz 包生成 tex 绘图。
- Inkscape
另一个用于创建矢量图形的程序是 Inkscape。它可以在 Windows、Linux 或 Mac OS X(使用 X11)上原生运行。它使用 可缩放矢量图形 (SVG) 文件,尽管它可以导出到许多可以包含在 LaTeX 文件中的格式,例如 EPS 和 PDF。从 0.48 版本开始,有一个组合的 PDF/EPS/PS+LaTeX 输出选项,类似于 Xfig 提供的选项。 这里有说明 如何将您的矢量图像保存为 LaTeX 可以识别的 PDF 格式,并让 LaTeX 自动管理图像中的文本样式和大小。[1]。现在有了 svg 包[2],它提供了一个 \includesvg
命令,使用 Inkscape 将 svg 图形直接转换为 LaTeX 文档并包含其中。您可以查看 这个扩展示例。
一个非常有用的插件是 textext,它可以导入 LaTeX 对象。这可用于将数学符号或 LaTeX 字体插入图形(然后可以将这些图形导入 LaTeX 文档)。
- Ipe
Ipe 可扩展绘图编辑器是一款免费的矢量图形编辑器,用于创建 PDF 或 EPS 格式的图形。与 Xfig 不同,Ipe 在屏幕上以正确的尺寸显示 LaTeX 字体,这使得更容易将文本标签放置在正确的位置。Ipe 还具有各种捕捉模式(例如,捕捉到点、线或交点),可用于几何构造。
- lpic
lpic 包[2] 提供了另一种解决方案,它允许对导入的图形进行 TeX 注释。请参阅 Labels in the figures。
- LibreOffice
也可以使用 LibreOffice Draw 将矢量图形导出为 EPS 格式,它是一款适用于 Windows、Linux 和 Mac 的开源办公套件。
- TpX
矢量编辑器 TpX 将几何对象与文本对象分开。几何对象被保存到 .PDF 文件中,其余部分被保存到 .TpX 文件中,由 LaTeX 处理。用户只需在 TpX 编辑器中创建图形,然后使用命令 \input{...TpX} 从 latex 文件中调用 .TpX 文件。
- Xfig
Xfig 是一款基本程序,可以生成矢量图形,这些图形可以导出到 LaTeX。它可以在 Unix 平台上安装。
在 Microsoft Windows 系统上,Xfig 只能使用 Cygwin-X 安装;但是,这需要高速互联网连接,并且需要在您的计算机上占用约 2 GB 的空间。使用 Cygwin,要运行 Xfig,您需要先启动“启动 X - 服务器”,然后启动“xterm”以调出一个终端。在这个终端中,键入“xfig”(不带引号)并按回车键。
或者,使用 WinFIG。WinFIG 试图在 Windows 计算机上实现 xfig 的功能。
有许多方法可以使用 xfig 为 LaTeX 文档创建图形。一种方法是将图形导出为 LaTeX 文档。然而,这种方法有一些缺点:线只能以 30 度和 45 度的倍数的角度绘制,带箭头的线只能以 45 度的倍数的角度绘制,不支持几种曲线等等。
另一方面,将文件导出为 PDF/LaTeX 或 PS/LaTeX,在绘制方面提供了更大的灵活性。以下是操作方法
- 在 xfig 中创建图形。在您需要 LaTeX 文本的地方,例如数学公式,在文本框中输入 LaTeX 字符串。
- 使用“编辑”工具打开每个文本框的属性,并将“特殊标记”字段中的选项更改为“特殊”。这告诉 LaTeX 在打开图形时解释这些文本框。
- 转到“文件”->“导出”,并将文件导出为 PDF/LaTeX(两部分)或 PS/LaTeX(两部分),具体取决于您使用 pdflatex 还是 pslatex 编译文件。
- 在您的 LaTeX 文档中,图片应该放置的地方,使用以下代码,其中“test”替换为图像的名称
\begin{figure} \centering \input{test.pdf_t} \caption{Your figure} \label{figure:example} \end{figure}
请注意,这就像包含图片一样,只是我们使用\includegraphics,而是使用\input。如果导出到 PS/LaTeX,则要包含的文件扩展名将是 .pstex_t 而不是 .pdf_t。
- 确保在文件中包含包 graphicx 和 color,使用
\usepackage
命令,紧接在\documentclass
命令之后,如下所示\usepackage{graphicx} \usepackage{color}
搞定!
有关使用 xfig 与 LaTeX 的更多详细信息,请参阅 xfig 用户手册 的这一章。
- 其他工具
商业矢量图形软件,如 Adobe Illustrator、CorelDRAW 和 FreeHand,通常用于读取和写入 EPS 图形。但是,这些产品仅限于 Windows 和 Mac OS X 平台。
- Adobe Photoshop
Photoshop 可以保存为 EPS。
- GIMP
GIMP 具有图形用户界面,并且是跨平台的。它可以保存为 EPS 和 PDF。
- 通用地图工具 (GMT)
通用地图工具 (GMT),地图和各种高度可定制的绘图。
- Gnumeric
Gnumeric,电子表格具有 SVG、EPS、PDF 导出功能
- Gnuplot
Gnuplot,自 1986 年以来一直在生成科学图形。如果您想制作数学绘图,那么 Gnuplot 可以保存为任何格式。与 PGF/TikZ 配合使用可以获得最佳效果。
- matplotlib
matplotlib,用 python 编写的绘图库,具有 PDF 和 EPS 导出功能。另一方面,它也具有 PGF 导出功能。有一些技巧可以将除 EPS 以外的格式导入 DVI 文档,但它们非常复杂。另一方面,将任何图像转换为 EPS 非常简单,因此不值得考虑它们。
- R
R,统计和科学图形。
如上所述,可以从外部程序将图形内容作为 EPS 文件导入 LaTeX。但有时您想编辑或润色这些图形文件。EPS 文件可以使用任何文本编辑器进行编辑,因为它以 ASCII 格式进行格式化。在文本编辑器中,您可以实现简单的操作,例如替换字符串、更改边界框或略微移动项目,但任何进一步的操作都变得很麻烦。矢量图形编辑器(如 Inkscape)也可能能够导入 EPS 文件以进行后续编辑。这种方法也更容易编辑。但是,导入过程偶尔会修改原始 EPS 图像。
- ↑ Johan B. C. Engelen. "如何在 LaTeX 中包含 SVG 图片" (PDF). mirrorcatalogs.com.
- ↑ Philip Ilten. "CTAN 上的 svg 包". ctan.org.