如何使用 includegraphics 或 pstricks 叠加图形?

如何使用 includegraphics 或 pstricks 叠加图形?

我在环境中有一个图形(使用 包含的 eps 文件\includegraphics),postscript在其中我使用 PSTricks 添加标签和额外的线条。

我想在右上角添加另一个较小的 eps 文件,以便它位于另一个图形的顶部。我可以使用\includegraphics或类似的东西(可能在 PSTricks 中)在相同的环境中将新的 eps 文件部分放在另一个文件的顶部postscript吗?

我希望结果看起来有点像这样: 在角落处重叠有第二张图表的图表。

答案1

在此处输入图片描述

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{graphicx}
\def\Row{5}
\def\Column{5}
\def\FilenameMain{example-image-A}
\def\FilenameChild{example-image-B}
\def\ScaleMain{1}
\def\ScaleChild{0.25}


\newsavebox\IBoxMain
\newsavebox\IBoxChild
\savebox\IBoxMain{\includegraphics[scale=\ScaleMain]{\FilenameMain}}
\savebox\IBoxChild{\includegraphics[scale=\ScaleChild]{\FilenameChild}}

\psset
{
    xunit=\dimexpr\wd\IBoxMain/\Column,
    yunit=\dimexpr\ht\IBoxMain/\Row,
}


\begin{document}
\begin{pspicture}[showgrid=top](\Column,\Row)
    \rput[bl](0,0){\usebox\IBoxMain}
    \rput[tr](4.5,4.5){\usebox\IBoxChild}
\end{pspicture}
\end{document}

编辑:

您可能需要一个网格来精确指定子图形的位置。那么以下编辑应该会有所帮助。当然,您必须在最后阶段通过更改为showgrid=top来关闭网格showgrid=false

在此处输入图片描述

\documentclass[pstricks,border=12pt]{standalone}

\usepackage{graphicx}
\def\Row{5}
\def\Column{5}
\def\FilenameMain{example-image-A}
\def\FilenameChild{example-image-B}
\def\ScaleMain{1}
\def\ScaleChild{0.25}


\newsavebox\IBoxMain
\newsavebox\IBoxChild
\savebox\IBoxMain{\includegraphics[scale=\ScaleMain]{\FilenameMain}}
\savebox\IBoxChild{\includegraphics[scale=\ScaleChild]{\FilenameChild}}

\psset
{
    xunit=\dimexpr\wd\IBoxMain/\Column,
    yunit=\dimexpr\ht\IBoxMain/\Row,
}

\addtopsstyle{gridstyle}
{
    griddots=0,
    gridcolor=red,
    subgridcolor=white,
    subgriddiv=10,
}

\begin{document}
\begin{pspicture}[showgrid=top](\Column,\Row)
    \rput[bl](0,0){\usebox\IBoxMain}
    \rput[tr](4.5,4.5){\usebox\IBoxChild}
\end{pspicture}
\end{document}

编辑2:

latex->dvips->ps2pdf使用序列或单个调用编译上述代码xelatex以获得 PDF 输出(即overlaid.pdf)。

稍后,您可以从主 TeX 输入文件导入 PDF 输出 ( overlaid.pdf),如下所示。

% this is the main TeX input file
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\begin{figure}
\centering
\includegraphics[<any options>]{overlaid}
\caption{Overlaid image in action}
\label{fig:overlaid}
\end{figure}
Your text goes here...
\end{document}

使用 编译此主 TeX 输入文件pdflatex。请注意,此工作流程可使您的项目井然有序、更加简洁。

答案2

您可以使用picture环境;借助picturecalc包,我们可以轻松地放置两个图形,重要的是内部图形在外部图形之后排版。请注意,这不依赖于pstricks,因此它是一种更便携的解决方案。

\documentclass{article}
\usepackage{graphicx,picture,calc}
\usepackage{lipsum}
\begin{document}

\lipsum[2]

\begin{figure}[htp]
\centering
%% Use two temporary storage bins
\sbox0{\includegraphics{Graph1}}
\sbox2{\includegraphics{Graph2}} % add the necessary scaling options

\begin{picture}(\wd0,\ht0)
\put(0,0){\usebox0}
%% Adjust the -0.7cm and -0.5cm shifts
\put(\wd0 - \wd2 - 0.7cm,\ht0 - \ht2 - 0.5cm){\usebox{2}}
\end{picture}
\caption{Two graphs}
\end{figure}

\lipsum[2]

\end{document}

在此处输入图片描述

答案3

\documentclass{article}
\usepackage{pst-plot}
\usepackage{graphicx}
\SpecialCoor
\begin{document}

\begin{pspicture}(6,3)
\psaxes[axesstyle=frame, ticksize=0 5pt](6,3)
\rput[tr](!6 0.25 sub 3 0.25 sub){\fbox{\includegraphics[width=1cm]{tiger}}}
\end{pspicture}
\end{document}

在此处输入图片描述

答案4

为了完整起见,我在这里将我的最终结果作为一个最小的工作示例。

它基于垃圾收集器的答案但大大简化了。有许多额外的部分,了解这些部分非常有用,但这是一个更简单的初始步骤。

它使用\rputpostscript 环境中的命令。此示例也可以直接用 pdflatex 进行编译(因为它使用了auto-pst-pdf)。

\documentclass{article}

\usepackage{auto-pst-pdf}
\usepackage{graphicx}
\usepackage{psfrag}
\usepackage{pstricks}

\begin{document}

\pagestyle{empty}

\begin{postscript}
\includegraphics[width=324pt]{parent-filename}
\rput(-3.7,5.3){\includegraphics[width=180pt]{child-filename}}
\end{postscript}

\end{document}

这只是将子图形添加到已定位的父图形之上。rput 的坐标很奇怪,因为初始值\includegraphics不在 rput 内,并以某种方式将其设置0,0为右下角。

相关内容