如何使用 Overleaf 上的 pinlabel 更改坐标?

如何使用 Overleaf 上的 pinlabel 更改坐标?

我正在尝试使用pinlabel在 Overleaf 上标记 SVG 文件。我已包含\usepackage{pinlabel},并尝试遵循pinlabel文档,但每当我更改坐标时,我的文本都不会在图像上移动。

下面是我获取图像上的文本的代码(以及正在使用的其他包):

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{svg}
\svgpath{{../imgs/}}
\usepackage{amsmath}
\usepackage{pinlabel}

\begin{figure}[ht!]
    \small\hair 2pt
    \pinlabel $\mathbb{R}^2$ at 0 0
    \centering
    \includesvg[inkscapelatex=false, width=350pt]{Figure 14}
    \caption{...}
\end{figure}

最终结果如下: 在此处输入图片描述

我在文档中看到\labellist在标签前包含,但每当我这样做时,我都会得到一个相当棘手的错误。我认为这可能只是 Overleaf 的问题,但我不确定。

无论我尝试什么坐标,文本都不会移动。

编辑:

应用一些建议后,我得到了奇怪的输出。如果我使用:

\usepackage{pinlabel}
\usepackage{amssymb}

\begin{figure}[ht!]
    \labellist
    \small\hair 2pt
    \pinlabel $\mathbb{R}^2$ at 400 400
    \endlabellist
    \centering
    \includesvg[inkscapelatex=false, width=300pt]{Figure 14}
    \caption{...}
\end{figure}

我明白了 在此处输入图片描述

如果我使用(删除inkscapelatex=false

\usepackage{pinlabel}
\usepackage{amssymb}

\begin{figure}[ht!]
    \labellist
    \small\hair 2pt
    \pinlabel $\mathbb{R}^2$ at 400 400
    \endlabellist
    \centering
    \includesvg[width=300pt]{Figure 14}
    \caption{...}
\end{figure}

我明白了

在此处输入图片描述

(当我改变坐标时,底部的小东西不动。)

这可能是使用 SVG 文件时出现的错误吗?

答案1

您需要在宏\labellist之前和\endlabellist之后放置\pinlabel(查看包装文档了解更多信息):

\documentclass{article}
\usepackage{amssymb}
\usepackage{pinlabel}

\begin{document}

\begin{figure}[ht!]
    \labellist                             % <- !
    \small\hair 2pt
    \pinlabel $\mathbb{R}^2$ at 120 220
    \endlabellist                          % <- !
    \centering
    \includegraphics[width=350pt]{example-image-a}
    \caption{...}
\end{figure}

\end{document}

在此处输入图片描述

这不是 Overleaf 特有的错误,而是这个包的工作原理。如果没有\labellistand 之前的两个宏\endlabellist,您将得到奇怪的输出或错误,例如图片顶部的这两个小等号。


但遗憾的是,该pinlabel软件包与该软件包不兼容svg。您可以改用该overpic软件包,它接受任意内容以附加标签:

\documentclass{article}
\usepackage{svg}
\usepackage{amssymb}
\usepackage{overpic}

\begin{document}

\begin{figure}[ht!]
    \begin{Overpic}{\includesvg[width=300pt]{Figure 14}}
        \put(30,50){$\mathbb{R}^2$}
    \end{Overpic}
    \caption{...}
\end{figure}

\end{document}

答案2

该包pinlabel依赖于的原始定义,\includegraphics但包svg需要修补此命令才能完成 Inkscape 的调用。一个适当的解决方法是使用包svg-extract并首先将 SVG 图像导出为 PDF 格式,然后通过包含结果\includegraphics

\documentclass{article}
\usepackage{svg-extract}
\usepackage{amssymb}
\usepackage{pinlabel}

\newcommand*\includeextractedsvg[2][]{%
  \includesvg[exclude,extractname=#2]{#2}%
  \includegraphics[#1]{svg-extract/#2}%
}

\begin{document}
\begin{figure}[ht!]
  \labellist
  \small\hair 2pt
  \pinlabel $\mathbb{R}^2$ at 40 40
  \endlabellist
  \centering
  \includeextractedsvg[width=300pt]{svg-example}%
  \caption{...}
\end{figure}
\end{document}

之后的结果第二运行已附加。

svg-extract 和 pinlabel

相关内容