latex 的概念是编写脚本。不过,与创建 powerpoint 幻灯片或使用 QT 表单设计器类似,对于将图像放入图形中的任务,我更喜欢使用图形工具。到目前为止,我使用 lyx 来完成这项任务,但它对于这项任务来说并不是那么好,我想知道是否有更好的工具?
关于这个主题,今天有人向我介绍了 hbox、vbox、mbox、vss、hfill,并向我展示了 vbox 到 0pt {...vss} 的破解方法,以便根据需要将图像放置在任意位置(彼此叠放)。所以也许我也应该尝试掌握这些东西。
答案1
将图片或其他东西放在任意位置是很常见的事情。可以根据需要以不同的方式在 LaTeX 中完成此操作。使用方框、空格和胶水(如问题中暗示的那样)是一种方法,但我更喜欢其他方法。
正如 Henri Manke 所言,可以使用零尺寸图片环境来实现。在这些情况下,我通常会执行\MyTxt
如下命令。这个名字的由来是,只要您有一个固定点来开始定位,它就可以方便地用于将文本放在您喜欢的任何位置。在这里,我选择使用它在环境中将一张小图片放在一张大图片之上figure
,但它可以在任何地方使用。
\documentclass{article}
\usepackage{graphicx}
\newcommand\MyTxt[3][c]{%
\put(#2){\makebox(0,0)[#1]{#3}}}
\unitlength=1mm
\begin{document}
\begin{figure}[htb]
\centering
\includegraphics[width=0.7\linewidth]{example-image-a}
\newline
\begin{picture}(0,0)
\MyTxt[lb]{10,40}{\includegraphics[width=20mm]{example-image-b}}
\end{picture}
\caption{Test of placing something somewhere}
\label{fig:Test}
\end{figure}
\end{document}
为了更容易找到放置图片的坐标,最好使用网格。为此graphpap
可以使用。
\documentclass{article}
\usepackage{graphicx}
\newcommand\MyTxt[3][c]{%
\put(#2){\makebox(0,0)[#1]{#3}}}
\unitlength=1mm
\usepackage{graphpap}
\usepackage{xcolor}
\newcommand\greengrid[2]{%
\put(0,0){\textcolor{green}{\graphpaper(#1)(#2)}}}
\begin{document}
\begin{figure}[htb]
\centering
\includegraphics[width=0.7\linewidth]{example-image-a}
\newline
\begin{picture}(0,0)
\greengrid{-40,0}{80,70}
\MyTxt[lb]{10,40}{\includegraphics[width=20mm]{example-image-b}}
\end{picture}
\caption{Test of placing something somewhere}
\label{fig:Test}
\end{figure}
\end{document}
另一种方法是使用tikz
同样的事情甚至更容易
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{figure}[htb]
\centering
\begin{tikzpicture}
\node[inner sep=0pt,anchor=south west] at (0,0){\includegraphics[width=0.7\linewidth]{example-image-a}};
\node[inner sep=0pt,anchor=south west] at (6,3){\includegraphics[width=20mm]{example-image-b}};
\end{tikzpicture}
\caption{Test of placing something somewhere}
\label{fig:Test}
\end{figure}
\end{document}
您还可以在此处添加一个网格。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{figure}[htb]
\centering
\begin{tikzpicture}
\node[inner sep=0pt,anchor=south west] at (0,0){\includegraphics[width=0.7\linewidth]{example-image-a}};
\draw[green](0,0) grid (8,7);
\node[inner sep=0pt,anchor=south west] at (6,3){\includegraphics[width=20mm]{example-image-b}};
\end{tikzpicture}
\caption{Test of placing something somewhere}
\label{fig:Test}
\end{figure}
\end{document}
如果问题真的是在页面上放置某些内容,而不干扰其他内容,也可以使用上述方法。始终可以使用零尺寸的图片。但也可以选项使用零尺寸,方法是tikzpicture
给出选项overlay
\documentclass{article}
\usepackage{tikz}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{tikzpicture}[overlay]
\node[inner sep=0pt,anchor=south west] at (3,3){\includegraphics[width=15mm]{example-image-b}};
\end{tikzpicture}
\lipsum[2]
\end{document}
最后,如果我想在页面上的特定位置放置一些东西,tikz
可以使用 help och 启动坐标current page
(记得编译两次)。这current page.south west
是纸张的左下角。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,calc}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{tikzpicture}[overlay,remember picture]
\node[inner sep=0pt,anchor=south west] at ($(current page.south west)+(10,20)$){\includegraphics[width=15mm]{example-image-b}};
\end{tikzpicture}
\lipsum[2]
\end{document}