TIKZMATH 无法与 \let\detokenize\relax 配合使用

TIKZMATH 无法与 \let\detokenize\relax 配合使用

如下图所示,编译 document.tex 后……

  • ...第一部分像往常一样使用 mathtikz 工作正常
  • ...第二部分通过 abc.tex 使用 mathtikz(同时重新命令 \test)无法正常工作

第二部分的区别在于,我使用 \let\detokenize\relax 摆脱了 abc.tex 文件中的 \detokenize。

注意: \detokenize 必须保留在 abc.tex 文件中,这是与本主题无关的另一个原因

文档.tex:

\documentclass{article}
\usepackage{pgf,tikz}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
\newcommand{\mathtikzmark}[2]{\tikz[baseline={(#1.base)},remember picture] \node  (#1) {#2};}
\usepackage{xparse}
\DeclareDocumentCommand{\link}{ O{shorten >=4pt,shorten <=4pt} O{} O{above} m m}{
    \begin{tikzpicture}[remember picture, overlay, >=stealth, shift={(0,0)}]
        \draw[#1,->,line width=0.4mm] (#4) to node[#3] {#2} (#5) ;
    \end{tikzpicture}%
}
%-----------------------------------------------------------------------------------------------

\newcommand{\test}{}

\begin{document}

% this part works fine
\hspace*{40mm}f(x) = x + \mathtikzmark{B}{3}
\fcolorbox{red}{white}{\mathtikzmark{A}{Attention: blabla}} 
\link[color=black,shorten >=0.5mm,shorten <=1.mm,out=0,in=270, to path={(\tikztostart) -|  (\tikztotarget)}]{A}{B}
%%%


% this part does not 
\renewcommand{\test}{\mathtikzmark{C}{3}}
\hspace*{40mm}f(x) = x + {\begingroup \let\detokenize\relax \input{abc.tex} \endgroup}
\fcolorbox{red}{white}{\mathtikzmark{D}{Attention: blabla}} 
\link[color=black,shorten >=0.5mm,shorten <=1.mm,out=0,in=270, to path={(\tikztostart) -|  (\tikztotarget)}]{D}{C}

    
\end{document} 

abc.tex:

{\detokenize {\test}}

编译 document.tex 得到的结果为“\tikz\every text node part\tikz”,但这并不是我们想要的:

在此处输入图片描述

有人知道如何修复它吗?

相关内容