如何将 PDF 图形放在另一个图形之上

如何将 PDF 图形放在另一个图形之上

我的 LaTeX 文档中有两个 PDF 图形(图表)。由于其中一个非常简单,并且我的文档空间有限,所以我想将其放在第二个图表的右上角。

我可以使用一些图像编辑工具来做到这一点。但我可以直接在 LaTeX 中做到这一点吗(避免创建单个合并 PDF)?

答案1

\llap通过利用和TeX 命令,可以相对轻松地在彼​​此之间排版材料,无需任何额外的软件包\rlap。这些命令基本上将一些材料从当前位置分别排版到左侧和右侧,而不管什么,也不会改变当前位置。

由于包含的图形\includegraphics在底部对齐,因此还可以使用\raisebox在 y 方向上提升第二个图形:

\documentclass{article}
\usepackage{lipsum}
\usepackage{graphicx}

\begin{document}
  \lipsum[3]
  \begin{figure}
    \centering
    \includegraphics[height=6cm]{example-image-a}%
    \llap{\raisebox{3cm}{%  move next graphics to top right corner
      \includegraphics[height=3cm]{example-image-b}%
    }}
    \caption{My overlay figure.}
  \end{figure}  

  \lipsum[3]

\end{document}

在此处输入图片描述

如果不想将第一个图形缩放到特定高度,而是缩放到类似 的高度\columnwidth,也可以测量最终高度。有很多方法可以做到这一点(基本上都是:“装箱”+“测量”)下面,我仅使用包提供的功能calc

\documentclass{article}
\usepackage{lipsum}
\usepackage{graphicx}
\usepackage{calc}       % for height measuring

\begin{document}
  \lipsum[3]
  \begin{figure}
    \centering
    % first measure it's height (store in \dimen0), then actually include the graphics
    \settototalheight{\dimen0}{\includegraphics[width=\columnwidth]{example-image-a}}%
    \includegraphics[width=\columnwidth]{example-image-a}%
    \llap{\raisebox{\dimen0-3cm}{%  move next graphics to top right corner
      \includegraphics[height=3cm]{example-image-b}%
    }}
    \caption{My overlay figure.}
  \end{figure}  

  \lipsum[3]

\end{document}

在此处输入图片描述

答案2

这是一个通用的解决方案。只需进行简单的编辑,您就可以得到想要的东西。请使用 或 对其进行xelatexTeXing latex-dvips-ps2pdf

在此处输入图片描述

\documentclass{article}
\usepackage{graphicx}
\usepackage{pstricks}

\newbox\IBox
\savebox\IBox{\includegraphics[scale=0.8]{god}}

\def\Rows{5}
\def\Columns{5}

\psset
{
    xunit=\dimexpr\wd\IBox/\Columns\relax,
    yunit=\dimexpr\ht\IBox/\Rows\relax,
}

\usepackage{lipsum}
\begin{document}
\lipsum[1-3]
\begin{figure}
\begin{pspicture}[showgrid=top](\dimexpr\wd\IBox+3\psxunit\relax,\ht\IBox)
    \rput[bl](0,0){\usebox\IBox}
    \rput[tr](8,5){\includegraphics[scale=0.5]{example-image-b}}
\end{pspicture}
\caption{The Gods must be crazy.}%
\label{fig:}%
\end{figure}
\lipsum[4-7]
\end{document}

图片取自上帝一定是疯了


希望这是最后一次编辑。

在此处输入图片描述

\documentclass{article}
\usepackage{graphicx}
\usepackage{pstricks}

\newbox\IBox
\savebox\IBox{\includegraphics[scale=1]{example-image-a}}

\def\Rows{5}
\def\Columns{5}

\psset
{
    xunit=\dimexpr\wd\IBox/\Columns\relax,
    yunit=\dimexpr\ht\IBox/\Rows\relax,
}

\usepackage{lipsum}
\begin{document}
\lipsum[1-3]
\begin{figure}
\begin{pspicture}[showgrid=top](\wd\IBox,\ht\IBox)
    \rput[bl](0,0){\usebox\IBox}
    \rput[tr](\wd\IBox,\ht\IBox){\includegraphics[scale=0.5]{example-image-b}}
\end{pspicture}
\caption{Is the answer of this question ``No''?}%
\label{fig:}%
\end{figure}
\lipsum[4-7]
\end{document}

答案3

Daniel 的回答很棒,但我错过了水平和垂直移动较小图像(在我的情况下是情节图例)的功能。我还希望根据较大图像来定义较小图像的大小和坐标。因此,经过一些调整后,我想出了以下宏:

\newlength{\imagew}
\newlength{\imageh}
\newlength{\legendw}
\newlength{\legendh}
\newlength{\legendx}
\newlength{\legendy}
\newcommand{\graphicswithlegend}[6]{
  \setlength{\imagew}{#1}
  \settoheight{\imageh}{\includegraphics[width=\imagew]{#2}}

  \setlength{\legendw}{#3\imagew}
  \settoheight{\legendh}{\includegraphics[width=\legendw]{#4}}

  \setlength{\legendx}{\imagew}
  \addtolength{\legendx}{-\legendw}
  \addtolength{\legendx}{-#5\imagew}

  \setlength{\legendy}{\imageh}
  \addtolength{\legendy}{-\legendh}
  \addtolength{\legendy}{-#6\imageh}

  \includegraphics[width=\imagew]{#2}%
  \llap{
    \hspace{-\the\legendx}
    \raisebox{\legendy}{\includegraphics[width=\legendw]{#4}}
    \hspace{\the\legendx}
  }
}

上面的宏有六个参数:

  • 较大图像的宽度和路径;
  • 较小图像的宽度和路径;
  • 较小图像相对于较大图像左上角的水平和垂直位移。

请参阅下面的示例。

\documentclass{article}

\usepackage{lipsum}
\usepackage{graphicx}

\newlength{\imagew}
\newlength{\imageh}
\newlength{\legendw}
\newlength{\legendh}
\newlength{\legendx}
\newlength{\legendy}
\newcommand{\graphicswithlegend}[6]{
  \setlength{\imagew}{#1}
  \settoheight{\imageh}{\includegraphics[width=\imagew]{#2}}

  \setlength{\legendw}{#3\imagew}
  \settoheight{\legendh}{\includegraphics[width=\legendw]{#4}}

  \setlength{\legendx}{\imagew}
  \addtolength{\legendx}{-\legendw}
  \addtolength{\legendx}{-#5\imagew}

  \setlength{\legendy}{\imageh}
  \addtolength{\legendy}{-\legendh}
  \addtolength{\legendy}{-#6\imageh}

  \includegraphics[width=\imagew]{#2}%
  \llap{
    \hspace{-\the\legendx}
    \raisebox{\legendy}{\includegraphics[width=\legendw]{#4}}
    \hspace{\the\legendx}
  }
}

\begin{document}
  \lipsum[3]
  \begin{figure}
    \centering
    \graphicswithlegend{\columnwidth}{example-image-a}
                       {0.5}{example-image-b}{0.52}{0.0}
    \caption{My overlay figure.}
  \end{figure}

  \lipsum[3]

\end{document}

编译的 Latex 文档

相关内容