GUI 设计师如何将图像放置在图形内?

GUI 设计师如何将图像放置在图形内?

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}

在此处输入图片描述

相关内容