todonote 可以在数学环境中工作吗?

todonote 可以在数学环境中工作吗?

我正在尝试让\todo命令在数学中发挥作用。解决方案是在todonotes 能在对齐环境中工作吗?,但该线程已过时。是否可以重新定义当前\todo命令并使其在数学环境中工作?

提出的解决方案用户23623\todo按照所述更新命令时有效修复数学模式下的待办事项。,但音符大的时候会重叠

在此处输入图片描述

\documentclass{report}
\usepackage{amssymb,amsmath}
\usepackage{marginnote}
\usepackage{xpatch}

\usepackage{todonotes}
\makeatletter
\patchcmd{\@todonotes@drawMarginNoteWithLine}{\marginpar}{\marginnote}{}{}
\renewcommand{\todo}[2][]%
{%
    % Needed to output any dangling \item of a noskip section (see #36):
    \if@inlabel \leavevmode \fi
    \if@noskipsec \leavevmode \fi
    \if@todonotes@inlinepar
    \ifvmode
    \@savsf\@m
    \@savsk\z@
    \@todonotes@vmodetrue
    \else
    \@bsphack
    \@todonotes@vmodefalse
    \fi
    {\@todo[#1]{#2}}%
    \@esphack%
    \if@todonotes@vmode \par \fi
    \else%
    \@todo[#1]{#2}%
    \fi
}
\makeatother
\NewDocumentCommand{\todosample}{}{This text is intended as a sample for todo tests}

\begin{document}
    
    \begin{align}
        a^2&=b^2+c^2
        \todo{check this calculation}
    \end{align}
    
    Text%
    \todo{\todosample}
    
    Text%
    \todo{\todosample}
    
\end{document}

答案1

这个答案几乎完全是抄袭您链接到的答案除了此实现使用来xpatch替换之外,后者由 来调用。\marginpar\marginnote\@todonotes@drawMarginNoteWithLine\todo

\documentclass{report}
\usepackage{amssymb,amsmath}
\usepackage{todonotes}
\usepackage{marginnote}
\usepackage{xpatch}
\makeatletter
\patchcmd{\@todonotes@drawMarginNoteWithLine}{\marginpar}{\marginnote}{}{}
\makeatother
\begin{document}
\begin{align}
    a^2&=b^2+c^2
    \text{\todo{check this calculation}}
\end{align}
\end{document}

在此处输入图片描述

使用的优点xpatch是,只要问题的核心保持不变,当软件包更新时,这种方法就会继续有效。在本例中,这似乎解决了问题。不过请注意,我也将其包装到\todo{check this calculation}了 中\text{...}。这也可以自动化(或修补),但更简洁的方法是联系软件包作者并要求升级。

相关内容