是否可以在对齐环境中使用 todonotes,例如:
\documentclass{report}
\usepackage{amssymb,amsmath}
\usepackage{todonotes}
\begin{document}
\begin{align}
a^2&=b^2+c^2 \todo{check this calculation}
\end{align}
\end{document}
给了我错误:
! LaTeX Error: Not in outer par mode.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.8 \end{align}
? X
No pages of output.
Transcript written on foo.log.
有哪些替代方案?我尝试过 marginnote 包,但它没有该inline
功能。
答案1
todonotes
正如所提到的\marginpar 和 \begin{align} \marginpar
在 中使用todonotes
不起作用align
,但\marginnote
来自marginnote
包的命令可以。因此,你可以重新定义来自 的命令以todonotes
使用marginnote
,这样它就可以工作了。需要进行三次编译。
\documentclass{report}
\usepackage{amssymb,amsmath}
\usepackage{todonotes}
\usepackage{marginnote}
\makeatletter
\renewcommand{\@todonotes@drawMarginNoteWithLine}{%
\begin{tikzpicture}[remember picture, overlay, baseline=-0.75ex]%
\node [coordinate] (inText) {};%
\end{tikzpicture}%
\marginnote[{% Draw note in left margin
\@todonotes@drawMarginNote%
\@todonotes@drawLineToLeftMargin%
}]{% Draw note in right margin
\@todonotes@drawMarginNote%
\@todonotes@drawLineToRightMargin%
}%
}
\makeatother
\begin{document}
\begin{align}
a^2&=b^2+c^2 \todo{check this calculation}
\end{align}
\end{document}
luatodonotes
如果您正在使用lualatex
来编译您的文档,那么替换todonotes
是luatodonotes
另一种选择。
(注意(至少对于 TeX Live 2015 用户):目前 存在问题luatex.sty
,它由 加载luatodonotes
,因此David Carlisle 在聊天中建议的小补丁是必须的。)
% ---------
% temporarily required
\makeatletter
\@namedef{[email protected]}{}
\makeatother
% ----------
\documentclass{report}
\usepackage{amsmath}
\usepackage{luatodonotes}
\begin{document}
\begin{align}
a^2&=b^2+c^2 \todo{check this calculation}
\end{align}
\end{document}