我正在使用todonotes
包,我想在章节标题中添加一条注释,例如:
\section{This is the section heading\todo{We should rethink the section title.}}
但是,这会抛出“未处于外部 par 模式”错误。我理解原因,但我想知道是否有办法做到这一点。
我之前曾问过将待办事项放在标题中的问题,建议的解决方案\todo[inline]{...}
在这种情况下有效,但不能放在标题中\section{...}
编辑:经过一些帮助,我意识到错误是在目录的生成中。以下是 MWP:
\documentclass{book}
\usepackage{todonotes}
\long\def\intodo#1{\todo[inline]{#1}}
\begin{document}
\tableofcontents
\chapter{Chapter 1}
\section{Another Section Name \intodo{We should rethink the section title for this as well.}}
\end{document}
我收到的错误是:
./test.toc:2: Leaders not followed by proper glue.
<to be read again>
\hfill
l.2 ...e]{We should rethink the section title}}{3}
答案1
与 Fran 的想法类似,使用宏,但在 ToC 中重新定义它以禁用其在那里的含义,这样就\section[short title]{Other \todo}
不需要了(但可能)。
为了在 ToC 中获得良好的输出,\intodo
命令应该是强大的。
在这种方法中,该inline
选项不是必需的,因为 ToDo - 内容不会进入该ToC
区域。
\documentclass{article}
\usepackage{todonotes}
\DeclareRobustCommand{\intodo}[1]{%
\todo[inline]{#1}%
}
\addtocontents{toc}{\begingroup\protect\renewcommand{\protect\intodo}[1]{}}
\AtEndDocument{%
\addtocontents{toc}{\endgroup}
}
\begin{document}
\tableofcontents
\section{Section Name
\intodo{We should rethink the section title}}
Some text
\section{Another Section Name\intodo{We should rethink the section title for this as well.}}
More some text
\end{document}
inline
如果不使用该选项,则输出如下:
一种变体,利用目录以组为单位排版的事实:(由@egreg 提出)
\documentclass{book}
\usepackage{todonotes}
\usepackage{etoolbox}
\newrobustcmd\intodo[1]{\todo[inline]{#1}}
\makeatletter
% fix \intodo so it does nothing in the TOC
\patchcmd{\@starttoc}
{\begingroup}
{\begingroup\let\intodo\@gobble}
{}{}
\makeatother
\begin{document}
\tableofcontents
\chapter{Chapter 1}
\section{Another Section Name \intodo{We should rethink the section title for this as well.}}
\end{document}
答案2
您也正在尝试在目录中插入待办事项注释。
使用\section[title for toc]{title for text\intodo{note text}}
将按预期工作。
\documentclass{article}
\usepackage{todonotes}
\long\def\intodo#1{\todo[inline]{#1}}
\begin{document}
\tableofcontents
\section[Section Name]{Section Name
\intodo{We should rethink the section title}}
Some text
\section[Another Section Name]{Another Section Name
\intodo{We should rethink the section title for this as well.}}
More some text
\end{document}
顺便说一句,我会\intodo
用 来启动宏\bigskip
。
答案3
使用inline
选项。或者更好的是,如果你有很多,你甚至可以为此定义一个宏。排队待办事项。
请参阅下面的代码:
\documentclass{article}
\usepackage{todonotes}
\long\def\intodo#1{\todo[inline]{#1}}
\begin{document}
\section{Section Name\todo[inline]{We should rethink the section title}}
\section{Another Section Name \intodo{We should rethink the section title for this as well.}}
\end{document}