我正在尝试让\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{...}
。这也可以自动化(或修补),但更简洁的方法是联系软件包作者并要求升级。