PDF 注释在多大程度上可以成为 Ti 的一部分钾Z 图片?

PDF 注释在多大程度上可以成为 Ti 的一部分钾Z 图片?

显然可以将 TikZ 绘图放入里面pdfcomment(但使用mbox)。

是否可以将图形的一部分(例如一条线)与关联pdfcomment?下面是建议的代码。

pdfcomment如果可以解决问题,我愿意使用其他交互式软件包(类似于)。最终目标是pgfplot在拖动鼠标时将 中的各个曲线与工具提示关联起来。

\documentclass[]{article}
\usepackage{tikz}
\usepackage[]{pdfcomment}
\begin{document}

%ok
\pdfmarkupcomment[]{
    text
}{
    a paragraph
}

% ok but needs mbox
\pdfmarkupcomment[]{
    \mbox{
    \begin{tikzpicture}
    \draw(0,0)--(1,1);
    \draw(0,1)--(1,0);
    \end{tikzpicture}}
}{
    a drawing
}

%not ok (Error: Missing } inserted.)
\begin{tikzpicture}
    \pdfmarkupcomment[]{
        \draw(0,0)--(1,1);
    }{
        a line
    }
    \draw(0,1)--(1,0);
\end{tikzpicture}

\end{document}

答案1

这个问题可以分为几个部分来解决:

PDF 注释在多大程度上可以成为 Ti 的一部分Z 图片?

只要注释放在 中node{},就没有什么是不可能的。事实上,你可以把几乎所有的东西都放在 中node{}。例如:

\tikz[remember picture,id=right triangle]{
    \draw(0,0)node[below]{\pdfmarkupcomment[color=yellow]{$A$}{This is (0, 0)}}
       --(6,0)node[right]{\pdfmarkupcomment[color=yellow]{$B$}{This is (6, 0)}}
       --(0,3)node[above]{\pdfmarkupcomment[color=yellow]{$C$}{This is (0, 3)}};
       --cycle
}

如何对线、折线、多边形做出相关注释?

提供\pdflinecomment,以便您可以根据手册,在页面的所需位置以线、折线或多边形的形式排版注释

例如:

\pdflinecomment[type=polyline,opacity=1,color=green,line={
    200 500 260 500 200 530
}]{This is a triangle comment!}

如何定位此评论

从上例中,我们看到行注释由 x 和 y 坐标定义,bp相对于本页的左下角。但我们如何自动生成这些数字,以便注释与 Ti 中的三角形重合Z 图片?

一种可能性是 TiZ 有一个名为的选项remember picture,它将存储 Ti 的位置Z 图片。通过这些信息,我们有机会计算出我们需要的坐标。

但是,我们不必进行无聊的数学运算,而是可以\pgfsys@markposition多次触发,这样我们所需的每个位置都将被存储起来。同样,如果您将它们放入 中,就没有什么是不可能的node{}

\def\markposition#1{
    \pgfsys@markposition{#1}
}
\tikz{
    \draw(0,0)node{\markposition{point A}}
       --(6,0)node{\markposition{point B}}
       --(0,3)node{\markposition{point C}}
       --cycle;
}

然后我们可以通过以下方式检索这些坐标\pgfsys@getposition

\def\getposition#1#2#3{
    \pgfsys@getposition{#1}\pointposition\pointposition
    \pgf@sys@bp@correct\pgf@x\xdef#2{\pgf@sys@tonumber\pgf@x}
    \pgf@sys@bp@correct\pgf@y\xdef#3{\pgf@sys@tonumber\pgf@y}
}
\getposition{point A}\Ax\Ay
\getposition{point B}\Bx\By
\getposition{point C}\Cx\Cy

现在\Ax是 A 的 x 坐标,依此类推。因此,之后我们可以\pdflinecomment按如下方式输入这些坐标:

\let~\space
\pdflinecomment[type=polyline,opacity=1,color=blue,line={
    \Ax~\Ay~\Bx~\By~\Cx~\Cy
}]{This is a triangle comment!}

我可以去掉那难看的蓝色图画吗?

更改opacity

完整代码

\documentclass{article}
\usepackage{tikz,pdfcomment,lipsum}
\begin{document}

\lipsum[1]

\tikz[remember picture,id=right triangle]{
    \draw(0,0)node[below]{\pdfmarkupcomment[color=yellow]{$A$}{This is (0, 0)}}
       --(6,0)node[right]{\pdfmarkupcomment[color=yellow]{$B$}{This is (6, 0)}}
       --(0,3)node[above]{\pdfmarkupcomment[color=yellow]{$C$}{This is (0, 3)}}
       --cycle;
}

\lipsum[2]

\clearpage

\lipsum[3]

\pdflinecomment[type=polyline,opacity=1,color=green,line={
    200 500 260 500 200 530
}]{This is a triangle comment!}

\lipsum[4]

\clearpage

\lipsum[5]

\makeatletter

\def\markposition#1{
    \pgfsys@markposition{#1}
}
\tikz{
    \draw(0,0)node{\markposition{point A}}
       --(6,0)node{\markposition{point B}}
       --(0,3)node{\markposition{point C}}
       --cycle;
}
\def\getposition#1#2#3{
    \pgfsys@getposition{#1}\pointposition\pointposition
    \pgf@sys@bp@correct\pgf@x\xdef#2{\pgf@sys@tonumber\pgf@x}
    \pgf@sys@bp@correct\pgf@y\xdef#3{\pgf@sys@tonumber\pgf@y}
}
\getposition{point A}\Ax\Ay
\getposition{point B}\Bx\By
\getposition{point C}\Cx\Cy
\let~\space
\pdflinecomment[type=polyline,opacity=.5,color=blue,line={
    \Ax~\Ay~\Bx~\By~\Cx~\Cy
}]{This is a triangle comment!}

\lipsum[6]

\end{document}

相关内容