![hf-tikz 标记:标记的替代使用和尺寸过大错误](https://linux22.com/image/339850/hf-tikz%20%E6%A0%87%E8%AE%B0%EF%BC%9A%E6%A0%87%E8%AE%B0%E7%9A%84%E6%9B%BF%E4%BB%A3%E4%BD%BF%E7%94%A8%E5%92%8C%E5%B0%BA%E5%AF%B8%E8%BF%87%E5%A4%A7%E9%94%99%E8%AF%AF.png)
我已经使用hf-tikz
它一段时间了,既用于演示,也用于海报。到目前为止,我使用它的方式主要受到包手册的启发(例如2.2 高级示例),因为在大多数情况下,我会突出显示某些内容并对其进行注释。但是,我总是发现需要摆弄值有点令人沮丧。
因此,当我发现该选项时我感到非常高兴markings
,它可以大大简化突出显示的部分和相应注释之间的链接。
我设法让一些东西工作来创建以下示例
使用以下代码:
\documentclass{beamer}
\usepackage{pgfplots}
\usepackage{tikz} %inline graphics
\usetikzlibrary{calc}
\usepackage[customcolors,markings,shade]{hf-tikz}
\tikzset{nodeStyleGreen/.style={
draw=green!40!black,
fill=green!50!lime!30,
align=left,
very thick,
rounded corners
}}
\tikzset{nodeStyleRed/.style={
draw=red!40!black,
fill=red!50!lime!30,
align=left,
very thick,
rounded corners
}}
\tikzset{nodeStyleBlue/.style={
draw=blue!40!black,
fill=blue!50!lime!30,
align=left,
very thick,
rounded corners
}}
\tikzset{lineStyleRed/.style={
color=red!40!black,opacity=0.75,line width=2pt,
}}
\tikzset{lineStyleGreen/.style={
color=green!40!black,opacity=0.75,line width=2pt,
}}
\tikzset{lineStyleBlue/.style={
color=blue!40!black,opacity=0.75,line width=2pt,
}}
\begin{document}
\begin{frame}
%
\begin{align*}
\tikzmarkin[nodeStyleRed,mark at=0.5]{firsteq} a &= b \tikzmarkend{firsteq}\\
%
\tikz[remember picture,overlay]{
\node[nodeStyleRed] (firsteq-aa) at ($(firsteq)+(-4.0cm,-1.0cm)$) {
\begin{minipage}{3cm}
My content:\\[-0.5cm]
\begin{itemize}
\item item 1 of a
\item item 2 of a
\end{itemize}
\end{minipage}
};
\path [lineStyleRed,use marker id=1] (firsteq-aa.east) edge[out=0,in=185,-stealth] (0,0);
}
\tikzmarkin[nodeStyleGreen,mark at=0]{secondeq} b &= c \tikzmarkend{secondeq}\\
%
\tikz[remember picture,overlay]{
\node[nodeStyleGreen] (secondeq-aa) at ($(secondeq)+(4.0,1.0)$) {
\begin{minipage}{4cm}My other content:\\[-0.5cm]
\begin{itemize}
\itemsep-0.25em
\item item 1
\item item 2
\item item 3
\end{itemize}
\end{minipage}
};
\path [lineStyleGreen,use marker id=1] (secondeq-aa.west) edge[out=180,in=0,-stealth] (0,0);
}
%
\tikzmarkin[nodeStyleBlue,mark at=0.0]{thirdeq} c &= d \tikzmarkend{thirdeq}
%
\tikz[remember picture,overlay]{
\node[nodeStyleBlue] (thirdeq-aa) at ($(thirdeq)+(4.0,-3.0)$) {
\begin{minipage}{3cm}My final content:\\[-0.5cm]
\begin{itemize}
\itemsep-0.25em
\item item 1
\item item 2
\item item 3
\end{itemize}
\end{minipage}
};
\path [lineStyleBlue,use marker id=1] (thirdeq-aa.west) edge[out=180,in=0,-stealth] (0,0);
}
\end{align*}
%
\end{frame}
\end{document}
因此,我的问题如下:
我想
align
首先只定义我的环境,然后调用所有注释节点(在align
环境之外);到目前为止,我一直这样做(再次,以下示例2.2),但使用markings
似乎不可能,因为如果定义了 2 个或更多\tikzmarkin
命令,每个命令都有一个mark at=
选项,则只能访问最新的命令。换句话说,有没有办法使用相对于命令的特定标记内容的标记\tikzmarkin
?我已经将确切的代码复制粘贴到上面的海报模板中(可以在这里),但它不起作用。代码编译一次,但随后它会产生错误,我在论坛上的其他帖子中读到过,这种错误可能是由于某些东西太小或太大而导致的,我设法通过在命令中包含一个因素
! Dimension too large.
来消除错误,例如scale
\path
\path [lineStyleGreen,use marker id,scale=10] (secondeq-aa.west) edge[out=180,in=0,-stealth] (0,0);
但我希望能够找到一种更好的方法来解决这个问题,而不涉及包括一些看似随机的比例因素:)
抱歉,帖子太长了 :)