LaTeX 代码

LaTeX 代码

我经常需要在 LaTeX 文档中包含一些图形,并在其上叠加一些文本或其他注释,可能包括箭头或其他简单图形。注释可以使用 TikZ 轻松处理,因此显然如果我在 TikZ 中创建图形本身,一切就都准备好了。但有时图形非常复杂,使用 TikZ 命令重新创建它是不切实际的。在这些情况下,我想直接包含图形文件,但仍然能够在其上分层添加注释。编辑图像以包含注释是一种可能性,但我真的想避免这样做,因为注释不会反映文档的字体样式和大小,而且更改它们会更加困难。

有没有一种首选的方法来包含外部图像,然后在其上分层添加内容?最好有一种解决方案可以让我继续使用 TikZ 进行注释,但这不是必需的。

编辑:所有三个答案(overpic,TikZ 节点和\pgftext)都可以正常工作,但不幸的是我只能接受一个,因此我将采用“官方来源”TikZ 手册中推荐的答案。

答案1

pgf/TikZ 手册建议使用命令\pgftext插入外部图形(第 53.3.3 节“插入文本和图像”)。以下是取自本次研讨会(演示文稿第 5、6 页):

\begin{figure}
\begin{tikzpicture}
\pgftext{%
\includegraphics[width=\textwidth]{Bridge05a}%
}%
\node[fill=black, opacity=.5, text opacity=1] at (0,.5) {\Large \color{yellow} Geometry};
\node[fill=black, opacity=.5, text opacity=1] at (0,-.5) {\Large \color{red} \emph{Manifolds}};
\node[fill=black, opacity=.5, text opacity=1] at (-4,.5) {\Large \color{yellow} Algebra};
\node[fill=black, opacity=.5, text opacity=1] at (4,.5) {\Large \color{yellow} Analysis};
\end{tikzpicture}
\end{figure}

还有一个暗示手册的其他地方(53.3.1)说\pgfimage可以使用该命令代替\includegraphics(尽管仍在命令内);但是,在手册中\pgftext搜索并没有找到关于该命令的进一步解释。\pgfimage


\pgftext命令是一种特殊的命令。它“退出”当前图片,返回“普通 TeX”。因此,它有点像命令\node。它的工作原理是构造一个框,然后将其放入图片中。默认情况下,此框放在当前原点。因此,移动它的一个简单方法是(暂时)告诉 TikZ/PGF 在发出命令之前移动原点\pgftext

定位它的另一种方法是使用初始可选参数。因此可以说\pgftext[<positioning information>]{text}<positioning information>一些用于重新定位框的 PGF 键集。这些类似于 的定位\node,但给人一种略显“低级”的感觉。例如,要将框定位在特定点,可以说\pgftext[at={\pgfpoint{1cm}{2cm}}]{text}。请注意\pgfpoint语法而不是 TikZ 坐标语法。

在 2.10-CVS 版本的手册中,该\pgftext命令记录在第 77.3.3 节中。第 77.1.2 节中还有一些关于它如何与范围交互的重要信息(请特别注意第 5 项,关于将另一个命令放入命令pgfpicture中的能力\pgftext,这是永远不应该做的事情\node!)。

总结一下,\pgftext它与 有点相似,\node因为它允许你将“普通的 TeX”放入图片中。然而,两者的不同之处在于\node被视为图片的一部分,而 则\pgftext用于那些应该有些独立的东西。

答案2

使用 TikZ,您可以将图像包含在\node

\node[anchor=south west, inner sep=0pt, outer sep=0pt]
  (image) at (0,0) {\includegraphics{image}};

然后画开:

\draw (image.south west) -- ++(1,1);

\coordinate[at = 1in of image.west] (pathStart);
\draw (pathStart) -- ++(42,13);

% Etc.

有一个完整的例子在这个网站

如果你正在创建图表等图形,则可以使用R编程语言以及tikz设备我和同事开发的软件包。tikzDevice 将 R 创建的图形编码为 TeX 命令。我们刚刚发布了一个新版本 0.5.0,它支持将命名坐标插入生成的图形中,以便 TikZ 命令可以进一步注释它们。

答案3

overpic包裹听起来正是你想要的。从包装描述来看:

overpic 环境是 LaTeX 图片环境和 graphicx 的 \includegraphics 命令的结合体。生成的图片环境与包含的 eps 图形具有相同的尺寸。LaTeX 命令可以放置在图形上的指定位置。提供用于定位的网格。

请注意,除了 .eps 之外,还可以使用其他图形格式 - 您可以使用的任何格式都\includegraphics可以在此软件包中使用。

答案4

正如已经建议的那样,你可以注释图形的不同部分使用 TikZ。但是,有时使用数字来引用不同的部分并在图表标题中解释它们可能会更好。

轻易地获得精确的相对位置(这通常非常繁琐)并自动生成如下所示的示例的 LaTeX 代码,您可以使用新的基于 Web 的LaTeX 覆盖生成器,这是我为这种情况构建的。这只是一个小型交互式工具,它可以帮助您找到正确的位置,而无需使用手册基于网格的方法

例子

LaTeX 代码

以下是由LaTeX 覆盖生成器

\documentclass{article}

% remove "[demo]" if you want include actual image!!!
\usepackage[demo]{graphicx}

\usepackage{tikz}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% LaTeX Overlay Generator - Annotated Figures v0.0.1
% Created with http://ff.cx/latex-overlay-generator/
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\annotatedFigureBoxCustom{bottom-left}{top-right}{label}{label-position}{box-color}{label-color}{border-color}{text-color}
\newcommand*\annotatedFigureBoxCustom[8]{\draw[#5,thick,rounded corners] (#1) rectangle (#2);\node at (#4) [fill=#6,thick,shape=circle,draw=#7,inner sep=2pt,font=\sffamily,text=#8] {\textbf{#3}};}
%\annotatedFigureBox{bottom-left}{top-right}{label}{label-position}
\newcommand*\annotatedFigureBox[4]{\annotatedFigureBoxCustom{#1}{#2}{#3}{#4}{white}{white}{black}{black}}
\newcommand*\annotatedFigureText[4]{\node[draw=none, anchor=south west, text=#2, inner sep=0, text width=#3\linewidth,font=\sffamily] at (#1){#4};}
\newenvironment {annotatedFigure}[1]{\centering\begin{tikzpicture}
    \node[anchor=south west,inner sep=0] (image) at (0,0) { #1};\begin{scope}[x={(image.south east)},y={(image.north west)}]}{\end{scope}\end{tikzpicture}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

    \begin{figure}[h!t]

        \begin{annotatedFigure}
            {\includegraphics[width=1.0\linewidth]{black-demo.png}}
            \annotatedFigureBox{0.084,0.614}{0.394,0.804}{A}{0.084,0.614}%bl
            \annotatedFigureBox{0.222,0.284}{0.3743,0.4934}{B}{0.3743,0.4934}%tr
            \annotatedFigureBox{0.555,0.784}{0.6815,0.874}{C}{0.555,0.784}%bl
            \annotatedFigureBox{0.557,0.322}{0.8985,0.5269}{D}{0.8985,0.5269}%tr
        \end{annotatedFigure}

        \caption{\textbf{Lorum Ipsum Overview} -- Lorem ipsum dolor amet (A), consetetur (B) elitr, sed diam (C) nonumy eirmod invidunt ut labore (D).}
        \label{fig:teaser}

    \end{figure}

\end{document}

相关内容