mtpro2 和 tikzmark 冲突

mtpro2 和 tikzmark 冲突

命令\tikzmark(如这里\PARENS) 在包提供的命令中不起作用mtpro2

这是一个 MWE(至少需要运行两次):

\documentclass{article}

\usepackage[lite,subscriptcorrection,slantedGreek,nofontinfo]{mtpro2}
\usepackage{tikz}

\newcommand{\tikzmark}[1]{\tikz[overlay,remember picture] \node (#1) {};}

\begin{document}
$$\PARENS{\tikzmark{a}1}$$ %With PARENS

$$\tikzmark{b}(1)$$ %Without PARENS

\tikz[overlay,remember picture] {
\draw (a) circle (1cm); %With PARENS - ends up at the bottom left corner of page
\draw (b) circle (1cm); %Without PARENS - works fine
}
\end{document}

非常感谢任何解释和/或补救措施。谢谢

答案1

我无法测试,因为我没有mtpro2安装包。从源代码分析来看,我会说,\tikzmark在框中设置了两次\LRbox@,在宏中设置了一个框\EXtest@。由于前者用于排版结果,因此\tikzmark在中被禁用以\EXtest@避免重复\tikzmark

\usepackage[lite,subscriptcorrection,slantedGreek,nofontinfo]{mtpro2}
\usepackage{tikz}

\newcommand{\tikzmark}[1]{\tikz[overlay,remember picture] \node (#1) {};}

\makeatletter
\renewcommand*{\LEFTRIGHT@}[3]{%
  \setbox\LRbox@\vc@nt@r{#3}%  
  \EXtest@{%
    \renewcommand*{\tikzmark}[1]{}%
    \vc@nt@r{#3}%
  }%
  \vcenter{\hbox{\curlybraces\EXtest@@$\displaystyle\left#1\box\LRbox@\right#2$}}%
}%
\makeatother  

相关内容