我正在尝试将 todonotes 与amsbook
documentclass 结合使用。我可以将 todo(使用\todo{fix this}
)添加到部分文本,并且我可以使用 为目录生成 Todo 列表\todototoc
,但编译时出现一些问题。
通过查看todonotes
文档,我发现该软件包与 存在已知冲突,amsart
并且文档中提供了修复程序。修复程序不太管用amsbook
,而且我不太了解它的作用,无法对其进行编辑。
问题是,在编译 LaTeX 时,我收到警告,提示\todototoc
未定义控制序列。忽略警告并继续编译,我发现\todo
我创建的未与列表标题放在同一页上。
下面是一个小的可行示例。
\documentclass[a4paper,10pt]{amsbook}
\usepackage[linktocpage]{hyperref} % for links
\usepackage{todonotes}
\begin{document}
\title{A sample book in amsbook style}
\author{me}
\maketitle
\tableofcontents
\todototoc % put an entry for the list of todos in the table of contents
% \listoftodos This is the usual command for making a list of to dos
% The following was taken from the todonotes documentation on how to resolve a problem with the amsart class.
% It doesn't quite work for amsbook as the list entries are put on the page after the "Todo list" heading.
\makeatletter
\providecommand\@dotsep{5}
\makeatother
\listoftodos\relax
\chapter{The test chapter}
Some text\todo{really need some more text!}
\end{document}
有人有什么想法吗?谢谢。
答案1
问题是用两个参数amsbook
定义\@starttoc
(我认为这不是一个明智的决定)。因此,您必须重新定义\listoftodos
才能正确传递\@starttoc
所需内容:
\documentclass[a4paper,10pt]{amsbook}
\usepackage{todonotes}
\usepackage[linktocpage]{hyperref} % for links
\makeatletter
\providecommand\@dotsep{5}
\renewcommand{\listoftodos}[1][\@todonotes@todolistname]{%
\@starttoc{tdo}{#1}}
\makeatother
\begin{document}
\title{A sample book in amsbook style}
\author{me}
\maketitle
\tableofcontents
\listoftodos
\chapter{The test chapter}
Some text\todo{really need some more text!}
\end{document}
\todototoc
不需要,因为amsbook
会照顾它。