todonotes:显示 [inline],隐藏所有其他

todonotes:显示 [inline],隐藏所有其他

我使用以下包

\usepackage{todonotes}

作为我的论文。

到目前为止,它运行得非常好。

\todo[inline]{Todo #1: comments/ todos about status for professor or lecture}
\todo{Todo #2: comments for internal use. Just for me.}

现在我想暂时将类别 #2 的待办事项设置为不可见。

但我不想单独触及所有待办事项。

有没有可能

\renewcommand{}[]{}

或类似的东西?

这里是最小的例子:

\documentclass[%
]{scrreprt}

\usepackage{blindtext}  %lorem ipsum
\usepackage[colorinlistoftodos, ngerman]{todonotes}

\begin{document}

% list of todos
\listoftodos{}

% lorem ipsum
\blindtext
%Todo #1: comments/ todos about status for professor or lecture
\todo[inline]{Todo \#1: comments/ todos about status for professor or lecture}
% lorem ipsum
\blindtext
%Todo #2: comments for internal use. Just for me.
\todo{Todo \#2: comments for internal use. Just for me.}
% lorem ipsum
\blindtext

\end{document}

golatex.de 上的帖子(德语):http://golatex.de/viewtopic,p,79718.html#79718

答案1

您可以查看todonotes软件包的源代码Github 上。在文件的todonotes.dtx第 1618 行,todonotes定义了打印非内联注释的命令\@todonotes@drawMarginNoteWithLine。删除所有非内联注释的一个简单方法是重新定义此命令不执行任何操作:

% Don't print any [non-inline] notes
\makeatletter
\renewcommand{\@todonotes@drawMarginNoteWithLine}{}
\makeatother

这种方法有一个问题:待办事项注释仍然显示在待办事项列表中。将项目添加到待办事项列表的命令在 1649ff 行上定义。要删除非内联注释,您可以添加一个\if子句,检查当前待办事项注释是否为内联注释[inline],并且仅在其为内联注释时才调用该命令:

% Remove [non-inline] notes from List of Todo's
\makeatletter
\renewcommand{\@todonotes@addElementToListOfTodos}{%
    % New: check if note is [inline]
    \if@todonotes@inlinenote%
    % if yes: print!, if no: do nothing
    \if@todonotes@colorinlistoftodos%
    \addcontentsline{tdo}{todo}{%
        \fcolorbox{\@todonotes@currentbordercolor}%
        {\@todonotes@currentbackgroundcolor}%
        {\textcolor{\@todonotes@currentbackgroundcolor}{o}}%
        \ \@todonotes@caption}%
    \else%
    \addcontentsline{tdo}{todo}{\@todonotes@caption}%
    \fi%
    \else%
    \fi}%
\makeatother

相关内容