hf-tikz 标记:标记的替代使用和尺寸过大错误

hf-tikz 标记:标记的替代使用和尺寸过大错误

我已经使用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);
    

    但我希望能够找到一种更好的方法来解决这个问题,而不涉及包括一些看似随机的比例因素:)

抱歉,帖子太长了 :)

相关内容