课程 七

包含图片和定位

本课展示了如何在文档中包含外部图片文件,如何更改它们的外观,以及如何让它们自动定位或浮动到合适的位置。

要在 LaTeX 中引入外部图片,请使用graphicx宏包,它为LaTeX添加了\includegraphics命令。

% !TEX program=lualatex

\documentclass{ctexart}
\usepackage{graphicx}

\begin{document}
这张图片
\begin{center}
  \includegraphics[height=2cm]{example-image}
\end{center}
是导入包含外部图片的PDF。
\end{document}

你可以包含EPS、PNG、JPG和PDF格式的文件。如果你有一个图片的多个版本,那么你可以写成example-image.png这样的形式。(如果你没有给出扩展名,graphicx宏包会尝试猜测扩展名。)

你会注意到我们在这里使用了一个新的环境center,用于将图片在页面上水平居中。稍后,我们将更多地讨论间距和定位。

修改图片外观

\includegraphics命令有许多选项来控制图片的大小和形状,以及裁剪掉不需要的部分。其中一些选项使用很多,所以值得了解。

最明显的设置是设置图片的width(宽度)或height(高度),这些通常相对于\textwidth\linewidth以及\textheight来设置。\textwidth\linewidth的区别很微妙,通常结果是相同的。\textwidth是物理页面上文本块的宽度,而\linewidth是_当前_宽度,这可能在局部上有所不同(这种差异在使用twocolumn类选项时最为明显)。LaTeX 会自动缩放图片以保持宽高比。

% !TEX program=lualatex

\documentclass{ctexart}
\usepackage{graphicx}

\begin{document}
\begin{center}
  \includegraphics[height = 0.5\textheight]{example-image}
\end{center}
一些文本
\begin{center}
  \includegraphics[width = 0.5\textwidth]{example-image}
\end{center}
\end{document}

你还可以scale(缩放)图片,或者通过angle(角度)旋转它们。另一个你可能想要做的是clip(裁剪)和trim(修剪)图片。

% !TEX program=lualatex

\documentclass{ctexart}
\usepackage{graphicx}

\begin{document}
\begin{center}
  \includegraphics[clip, trim = 0 0 50 50]{example-image}
\end{center}
\end{document}

让图片浮动

在排版中,特别是技术文档时,图片可能会移动到文档的其他位置。这称为 浮动。图片通常作为浮动体包含,这样它们不会在页面中留下大片空白。

% !TEX program=lualatex

\documentclass{ctexart}
\usepackage{graphicx}
\usepackage{zhlipsum}  % 生成填充文本

\begin{document}
\zhlipsum*[1-5] % 几个填充段落

测试浮动位置
\begin{figure}[ht]
  \centering
  \includegraphics[width=0.5\textwidth]{example-image-a.png}
  \caption{一个示例图片}
\end{figure}

\zhlipsum*[6-10] % 几个填充段落
\end{document}

这里LaTeX将图片和标题从测试位置文本处移到了第二页的顶部,因为第一页底部没有足够的空间。ht影响 LaTeX 可以放置浮动体的位置;这两个字母表示它可以放在源代码所在位置(在测试位置旁边)或页面顶部。你最多可以使用四个位置说明符:

稍后,我们将看到如何交叉引用浮动体,这样你就可以在文本中指向它们。

你可能注意到我们在这里使用了\centering而不是center环境来居中图片。在浮动体内部,如果你想要水平居中内容,应该使用\centering;这可以避免浮动体和center环境都添加额外的垂直空间。

练习

尝试包含你创建的图片,替换我们在演示中使用的”标准”图片。

探索使用heightwidthanglescale键可以做什么。

使用width键将一个图片的大小设置为相对于\textwidth,另一个图片相对于\linewidth。尝试它们在有或没有twocolumn选项时的表现。

使用lipsum制作一个相当长的演示,然后尝试使用不同的位置说明符来放置浮动体。不同的说明符如何相互作用?(本文中的示例代码使用了另一个中文的占位字符生成包zhlipsum。)