显然可以将 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
}
如何对线、折线、多边形做出相关注释?
这pdf评论提供\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 图片?
一种可能性是 Ti钾Z 有一个名为的选项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}